
Monitor de processos .NET que intercepta o CLR na camada nativa, despeja assemblies reflexivos da memória e verifica a integridade do AMSI/ETW em comparação com binários em disco.
ferramenta windows que eu fiz porque cansei de ficar olhando forks do jlaive em amostras de malware sem nada público pra realmente despedaçá-los em tempo de execução.
em resumo, é um monitor de processos .net que faz hook no clr na camada nativa, rastreia carregamentos reflexivos de assembly e despeja automaticamente PEs direto da memória. também verifica a integridade do amsi e do etw contra os binários originais em disco, enquanto detecta técnicas de bypass como patch de string em clr.dll e uso direto de LoadFromBuffer.
onde encontrar amostras? recomendo dar uma olhada em https://tria.ge (não é anúncio) e você pode baixar qualquer amostra que quiser e filtrar por família
você deve estar se perguntando, por que o nome nemesis?
porque representa exatamente o propósito da ferramenta. uma nemesis é algo que se coloca como um desafio constante ou a ruína de um oponente, e essa é a ideia por trás deste projeto.
no mito grego, nemesis era o espírito da retribuição divina, aquele que aplicava o troco em qualquer um que ficasse arrogante demais ou se achasse intocável. meio óbvio demais pra malware que se gaba de ser "fud", se você me perguntar.
sou analista de malware. se você faz esse trabalho (hobby no meu caso) por tempo suficiente, começa a ver as mesmas cadeias de loader repetidas vezes, especialmente depois que o jlaive (também chamado de crybat) estourou e todo script kiddie fez fork.
o padrão é estupidamente simples, mas irritante pra caramba de lidar:
something.bat → obfuscated powershell → csharp stub → your actual payload
você dá dois cliques num .bat que parece salada de palavras. o cmd dispara o powershell com uma parede de lixo. o powershell descriptografa/descomprime um stub .net (aes, gzip, base64). esse stub faz patch no amsi + etw, carrega reflexivamente o exe/dll real em memória, e pronto, nada amigável chega ao disco de forma útil.
isso me incomodou. não existe realmente uma boa ferramenta pública voltada a combater essa cadeia específica: fazer hook onde o payload .net realmente se materializa, despejá-lo antes que o processo se autodestrua, capturar os patches de amsi/etw que esses stubs sempre fazem. então construí o nemesis.
não é bala de prata. não vai substituir seu sandbox. mas te dá algo real pra rodar contra um .bat suspeito numa máquina de teste e realmente extrair artefatos.
launcher (Launcher.exe)
Nemesis.dll antes da thread principal rodarnemesis dll (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (padrão resolvido a partir de nLoadImage)%TEMP%\Nemesis_dumpsamsi.dll / ntdll.dll com as cópias em disco (pega o clássico patch de ret em AmsiScanBuffer / EtwEventWrite).rdata quando o clr está carregado (alguns bypasses fazem patch nelas em vez disso, tem um ótimo paper do vxug sobre isso chamado; 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf )%TEMP%\Nemesis.log também tem ENABLE_VIRTUAL_TERMINAL_PROCESSING pra evitar problemas com o console sendo, digamos, esquisito :Dbasicamente: deixa a cadeia do bat rodar, captura o payload onde o crypter realmente o carrega, e loga os truques de evasão no caminho.
precisa do visual studio 2022+ com c++ desktop + masm (x64).
abra Nemesis.slnx, escolha Release | x64, compile a solução.
esse é o caso de uso real: aponte pra um bat suspeito e veja o que sai:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
argumentos extras após -- são passados para o alvo:
.\Launcher.exe myapp.exe -- --some-flag
caminho customizado da dll:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
artefatos:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsé:
não é:
LNK1104? algo ainda tem nemesis.dll carregada, mate o alvo e recompilepwsh.exe durante o build é inofensivo, ignorese você quer entender contra o que está lutando:
ao usar o nemesis você aceita isto. ele é fornecido como está com nenhuma garantia — você assume todo o risco.
você é o único responsável pelo uso legal e autorizado (vms de laboratório, sistemas próprios, permissão explícita). na máxima extensão permitida por lei, os autores e zypherion.tech isentam-se de toda responsabilidade por quaisquer danos, perdas ou reivindicações legais decorrentes do uso ou mau uso. veja LICENSE para os termos completos.