
.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, когда CLR загружена (некоторые обходы патчат именно их; есть отличная статья на vxug под названием 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf)%TEMP%\Nemesis.log. Также включает , чтобы избежать проблем с консолью, скажем так, странной :Dв двух словах: дать цепочке bat выполниться, перехватить полезную нагрузку в том месте, где криптер её загружает, и залогировать уловки обхода по пути.
требуется Visual Studio 2022+ с рабочей нагрузкой «Разработка классических приложений на C++» и 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 vcpkg во время сборки безвреден, игнорируйте егоесли хотите понять, с чем имеете дело:
используя Nemesis, вы принимаете это. Инструмент предоставляется как есть без каких-либо гарантий — вы принимаете на себя весь риск.
вы несёте полную ответственность за законное, авторизованное использование (лабораторные ВМ, собственные системы, явное разрешение). В максимальной степени, допускаемой законом, авторы и zypherion.tech отказываются от любой ответственности за любой ущерб, убытки или юридические претензии, возникающие в результате использования или неправомерного использования. Полные условия см. в LICENSE.
некоммерческое / личное / исследовательское / хобби-использование → PolyForm Noncommercial 1.0.0
коммерческое использование (продажа, платный продукт, SaaS, работа с клиентами и т.п.) → требуется отдельная лицензия. PolyForm Noncommercial этого не покрывает.
свяжитесь со мной, если хотите коммерческую лицензию:
[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]
краткое замечание: нужно разобраться с compilemethod и исправить его; пока он не особо нужен, так как криптеры обычно его вообще не используют... поскольку им приходится использовать
asm.load(...)также напоминание: нужно проверить rdata str, так как я, к сожалению, не тестировал это должным образом... пожалуйста, не делайте PR с глупым кодом — нельзя нормально перехватывать нативные бэкенды, например nLoadImage; нужно сохранять регистры, и это просто... поэтому мы используем asm.
ENABLE_VIRTUAL_TERMINAL_PROCESSING