
.NET process monitor che aggancia il CLR a livello nativo, estrae gli assembly riflessivi dalla memoria e verifica l'integrità di AMSI/ETW rispetto ai binari su disco.
strumento windows che ho fatto perché mi sono stancato di fissare i fork di jlaive nei campioni malware senza nulla di pubblico per smontarli davvero a runtime.
in breve, è un monitor di processi .net che aggancia il clr a livello nativo, traccia i caricamenti riflessivi degli assembly e dumpa automaticamente i pe direttamente dalla memoria. controlla anche l'integrità di amsi ed etw rispetto ai binari originali su disco, rilevando tecniche di bypass come il patching delle stringhe in clr.dll e l'uso diretto di LoadFromBuffer.
dove trovare i campioni? consiglio di dare un'occhiata a https://tria.ge (non è una sponsorizzazione) e puoi scaricare qualsiasi campione tu voglia e filtrare in base a una famiglia
ti starai chiedendo, perché il nome nemesis?
perché rappresenta esattamente lo scopo dello strumento. una nemesi è qualcosa che rappresenta una sfida costante o la rovina per un avversario e questa è l'idea dietro questo progetto.
nel mito greco nemesis era lo spirito della punizione divina, colui che infliggeva la giusta punizione a chiunque diventasse troppo arrogante o si credesse intoccabile. un po' troppo esplicito per malware che si vanta di essere "fud" se mi chiedi.
sono un analista di malware. se fai questo lavoro (hobby per me) abbastanza a lungo inizi a vedere le stesse catene di loader ripetersi all'infinito, specialmente da quando jlaive (chiamato anche crybat) è esploso e ogni script kiddie l'ha forkato.
lo schema è stupido semplice ma fastidioso da morire da gestire:
qualcosa.bat → powershell offuscato → stub csharp → il tuo payload reale
fai doppio clic su un .bat che sembra insalata di parole. cmd avvia powershell con un muro di spazzatura. powershell decripta/decomprime uno stub .net (aes, gzip, base64). quello stub patcha amsi + etw, carica riflessivamente l'exe/dll reale in memoria e hai finito, niente di amichevole tocca mai il disco in una forma utile.
questo mi dava fastidio. non c'è davvero un buon strumento pubblico mirato a combattere questa catena specifica, agganciando dove il payload .net si materializza davvero, dumpandolo prima che il processo si autodistrugga, catturando le patch amsi/etw che questi stub fanno sempre. così ho costruito nemesis.
non è un proiettile d'argento. non sostituirà il tuo sandbox. ma ti dà qualcosa di reale da eseguire contro un .bat sospetto su una macchina di test e tirare fuori davvero gli artefatti.
launcher (Launcher.exe)
Nemesis.dll prima che il main thread partanemesis dll (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (pattern risolto da nLoadImage)%TEMP%\Nemesis_dumpsamsi.dll / ntdll.dll con le copie su disco (cattura la classica patch ret su AmsiScanBuffer / EtwEventWrite).rdata del clr quando il clr è caricato (alcuni bypass patchano quelle invece, c'è un ottimo paper di vxug a riguardo chiamato; 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf )%TEMP%\Nemesis.log ha anche ENABLE_VIRTUAL_TERMINAL_PROCESSING per evitare problemi con la console che diciamo è un po' strana :Din pratica: lascia che la catena del bat vada, cattura il payload dove il crypter lo carica davvero, e logga i trucchi di evasione lungo il percorso.
serve visual studio 2022+ con c++ desktop + masm (x64).
apri Nemesis.slnx, scegli Release | x64, compila la soluzione.
questo è il caso d'uso effettivo, puntalo su un bat sospetto e vedi cosa salta fuori:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
gli argomenti extra dopo -- vengono passati al target:
.\Launcher.exe myapp.exe -- --some-flag
percorso dll personalizzato:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
artefatti:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsè:
non è:
LNK1104? qualcosa ha ancora nemesis.dll caricata, uccidi il target e ricompilapwsh.exe vcpkg durante la build è innocuo, ignoralose vuoi capire cosa stai combattendo:
usando nemesis accetti questo. è fornito così com'è con nessuna garanzia — ti assumi tutti i rischi.
sei l'unico responsabile per un uso legale e autorizzato (vm di laboratorio, sistemi di tua proprietà, permesso esplicito). nella misura massima consentita dalla legge, gli autori e zypherion.tech declinano ogni responsabilità per qualsiasi danno, perdita o rivendicazione legale derivante dall'uso o dall'abuso. vedi LICENSE per i termini completi.