Eu crio makin para facilitar a avaliação inicial de malware para mim, acho que é útil para os outros também, ajuda a revelar uma técnica de detecção de depurador usada por uma amostra.
makin abre uma amostra como um depurador e injeta asho.dll (o módulo principal renomeia todas dlls antes da injeção), asho.dll conecta várias funções nas bibliotecas ntdll.dll e kernelbase.dll e depois que os parâmetros são foscos, envia a mensagem correspondente para o depurador ( makin.exe ).
makin também gera um script para o IDA Pro para definir pontos de interrupção nas APIs detectadas.
Neste momento, makin pode revelar as seguintes técnicas:
ntdll.dll :
NtClose - REF: a referência anti -debugging "Ultimate": 7.b.iiNtOpenProcess - Referência "Ultimate" Anti -Dividing: 7.biNtCreateFile - Referência "Ultimate" Anti -Dividing: 7.b.iii (se abre)NtCreateFile - Referência de anti -debutação "Ultimate": 7.b.iii (Abra um motorista)LdrLoadDll - REF: A Referência Anti -Dividência "Ultimate": 7.B.IVNtSetDebugFilterState - REF: a referência anti -debugging "Ultimate": 7.D.ViNtQueryInformationProcess - REF: a referência anti -debugging "Ultimate": 7.D.VIII.A, 7.D.VIII.B, 7.D.VIII.CNtQuerySystemInformation - Referência "Ultimate" Anti -Dividing: 7.e.iiiNtSetInformationThread - Referência "Ultimate" Anti -Dividing 7.F.IIINtCreateUserProcess - Referência "Ultimate" Anti -Dividing Reference 7.GINtCreateThreadEx - Ref: Postagem do blog NTueryNtSystemDebugControl - Ref: @Waleedassar - PastebinNtYieldExecution - Referência "Ultimate" Anti -Dividing 7.D.XIIINtSetLdtEntries - REF: Truques anti -unpacker: Parte um - 2.1.2NtQueryInformationThread - Ref: NtQuery - NtQueryInformationThreadNtCreateDebugObject e NtQueryObject - Ref: anti -debug ntqueryObjectRtlAdjustPrivilege - Ref: Usando rtladjustprivilege para detectar o depurador por insid3codeteam PEB->BeingDebugged - em vez de chamar IsDebuggerPresent() , alguns programas verificam manualmente o PEB (Bloco de Ambiente de Processo) para o sinalizador BeingDebugged .PEB->NtGlobalFlag -ref: al-khaserUserSharedData->KdDebuggerEnabled - Ref: al -Khaser - shareduserdata_kerneldebuggerPROCTECTED fechada - ref: al -khaser - handle_flag_protect_from_close kernelbase.dll :
IsDebuggerPresent - REF: MSDNCheckRemoteDebuggerPresent - Ref: MSDNSetUnhandledExceptionFilter - Referência "Ultimate" Anti -Dividing: D.xvRegOpenKeyExInternalW - Verifica as chaves do registroRegQueryValueExW - verifica os valores -chave do registro Você pode adicionar mais verificações de VM via arquivo de edição checks.json , sem modificação do executável
Isso é tudo por enquanto, você pode acrescentar o que desejar :)
