
makin - révéler les astuces anti-débogage et anti-VM [Ce projet n'est plus maintenu]
J'ai créé makin pour rendre l'évaluation initiale des malwares un peu plus facile pour moi, je pense qu'il est utile pour les autres aussi. Il aide à révéler les techniques de détection de débogueur utilisées par un échantillon.
makin ouvre un échantillon en tant que débogué et injecte asho.dll (le module principal renomme toutes les dll avant l'injection), asho.dll hooke plusieurs fonctions dans les bibliothèques ntdll.dll et kernelbase.dll et après les vérifications des paramètres, il envoie le message correspondant au débogueur (makin.exe).
makin génère également un script pour IDA Pro afin de définir des points d'arrêt aux API détectées.
Pour l'instant, makin peut révéler les techniques suivantes :
ntdll.dll :
NtClose - réf : The "Ultimate" Anti-Debugging Reference: 7.B.iiNtOpenProcess - réf : The "Ultimate" Anti-Debugging Reference: 7.B.iNtCreateFile - réf : The "Ultimate" Anti-Debugging Reference: 7.B.iii (s'ouvrir lui-même)NtCreateFile - réf : The "Ultimate" Anti-Debugging Reference: 7.B.iii (ouvrir un pilote)LdrLoadDll - réf : The "Ultimate" Anti-Debugging Reference: 7.B.ivNtSetDebugFilterState - réf : The "Ultimate" Anti-Debugging Reference: 7.D.viNtQueryInformationProcess - réf : The "Ultimate" Anti-Debugging Reference: 7.D.viii.a, 7.D.viii.b, 7.D.viii.cNtQuerySystemInformation - réf : kernelbase.dll :
IsDebuggerPresent - réf : MSDNCheckRemoteDebuggerPresent - réf : MSDNSetUnhandledExceptionFilter - réf : The "Ultimate" Anti-Debugging Reference: D.xvRegOpenKeyExInternalW - vérifie les clés de registreRegQueryValueExW - vérifie les valeurs des clés de registreVous pouvez ajouter d'autres contrôles de machine virtuelle en modifiant le fichier checks.json, sans modification de l'exécutable.
C'est tout pour l'instant, vous pouvez en ajouter autant que vous le souhaitez :)

NtSetInformationThread - réf : The "Ultimate" Anti-Debugging Reference: 7.F.iiiNtCreateUserProcess - réf : The "Ultimate" Anti-Debugging Reference: 7.G.iNtCreateThreadEx - réf : ntuery blog postNtSystemDebugControl - réf : @waleedassar - pastebinNtYieldExecution - réf : The "Ultimate" Anti-Debugging Reference: 7.D.xiiiNtSetLdtEntries - réf : ANTI-UNPACKER TRICKS: PART ONE - 2.1.2NtQueryInformationThread - réf : ntquery - NtQueryInformationThreadNtCreateDebugObject et NtQueryObject - réf : Anti-Debug NtQueryObjectRtlAdjustPrivilege - réf : Using RtlAdjustPrivilege to detect debugger by insid3codeteamPEB->BeingDebugged - Au lieu d'appeler IsDebuggerPresent(), certains programmes vérifient manuellement le PEB (Process Environment Block) pour le flag BeingDebugged.PEB->NtGlobalFlag - réf : al-khaserUserSharedData->KdDebuggerEnabled - réf : al-khaser - SharedUserData_KernelDebuggerPROCTECTED - réf : al-khaser - HANDLE_FLAG_PROTECT_FROM_CLOSE