
.NET process monitor, который перехватывает CLR на нативном уровне, извлекает рефлексивные сборки из памяти и проверяет целостность AMSI/ETW по сравнению с бинарными файлами на диске.
windows-инструмент, который я сделал, потому что устал смотреть на форки jlaive в малварных сэмплах, когда публично нет ничего, что реально могло бы разобрать их во время выполнения.
короче говоря, это монитор .net-процессов, который перехватывает CLR на нативном уровне, отслеживает рефлективные загрузки сборок и автоматически дампит PE прямо из памяти. он также проверяет целостность AMSI и ETW относительно оригинальных бинарников на диске, а также обнаруживает техники обхода, такие как патчинг строк в clr.dll и прямое использование LoadFromBuffer.
где искать сэмплы? рекомендую заглянуть на https://tria.ge (не реклама), там можно скачать любой нужный сэмпл и фильтровать по семейству
возможно, вы задаётесь вопросом, почему название nemesis?
потому что оно отражает само предназначение инструмента. немезида — это нечто, что является постоянным вызовом или погибелью для противника, и именно такова идея этого проекта.
в греческой мифологии немезида была духом божественного возмездия — той, кто вершила расплату над всяким, кто слишком возгордился или считал себя неуязвимым. довольно прозрачный намёк для малвари, которая хвастается своей "fud", если спросите меня.
я аналитик малвари. если заниматься этим достаточно долго (для меня это хобби), начинаешь видеть одни и те же цепочки загрузчиков снова и снова, особенно после того, как jlaive (он же crybat) взлетел и каждый скрипт-кидди начал его форкать.
паттерн до тупости простой, но чертовски раздражающий:
something.bat → obfuscated powershell → csharp stub → your actual payload
ты дважды кликаешь по .bat, который выглядит как словесная каша. cmd запускает powershell со стеной мусора. powershell расшифровывает/распаковывает .net-стаб (aes, gzip, base64). этот стаб патчит amsi + etw, рефлективно загружает настоящий exe/dll в память, и всё — ничего полезного никогда не попадает на диск в пригодной форме.
это меня раздражало. нет действительно хорошего публичного инструмента, нацеленного на борьбу именно с этой цепочкой — перехватить там, где .net-пейлоад фактически материализуется, сдампить его до того, как процесс себя сожрёт, поймать патчи amsi/etw, которые эти стабы всегда делают. поэтому я сделал nemesis.
не серебряная пуля. не замена вашей песочнице. но он даёт что-то реальное, что можно запустить против подозрительного .bat на тестовой машине и действительно вытащить артефакты.
launcher (Launcher.exe)
Nemesis.dll до запуска главного потокаnemesis dll (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (паттерн разрешается от nLoadImage)%TEMP%\Nemesis_dumpsamsi.dll / ntdll.dll с копиями на диске (ловит классический патч ret на AmsiScanBuffer / EtwEventWrite).rdata, когда clr загружен (некоторые обходы патчат именно их, есть отличная статья vxug на эту тему под названием; 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf )%TEMP%\Nemesis.log, также включает ENABLE_VIRTUAL_TERMINAL_PROCESSING, чтобы избежать проблем с консолью, которая, скажем так, ведёт себя странно :Dпо сути: дайте цепочке bat отработать, поймайте пейлоад там, где криптер его фактически загружает, и залогируйте трюки уклонения по пути.
нужен visual studio 2022+ с c++ desktop + masm (x64).
откройте Nemesis.slnx, выберите Release | x64, соберите решение.
это и есть фактический сценарий использования — наведите его на подозрительный bat и посмотрите, что выпадет:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
дополнительные аргументы после -- передаются цели:
.\Launcher.exe myapp.exe -- --some-flag
свой путь к dll:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
артефакты:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsявляется:
не является:
LNK1104? что-то всё ещё держит nemesis.dll загруженным — убейте цель и пересоберитеpwsh.exe во время сборки безвреден, игнорируйте егоесли хотите понять, с чем боретесь:
используя nemesis, вы принимаете это. он предоставляется как есть и без каких-либо гарантий — вы берёте на себя весь риск.
вы несёте единоличную ответственность за законное, авторизованное использование (лабораторные vm, собственные системы, явное разрешение). в максимально допустимой законом степени авторы и zypherion.tech отказываются от любой ответственности за любой ущерб, потери или юридические претензии, возникшие в результате использования или злоупотребления. полные условия см. в LICENSE.