
Убийца процессов в режиме ядра с использованием подписанного драйвера BYOVD. Работает на всех Windows 10/11. Без смещений, без PDB. Rust.
Кросс-версионный терминатор процессов Windows. Загружает подписанный драйвер ядра HONOR (MonProcessEX.sys), определяет PID каждого целевого процесса и завершает его из контекста ядра через один IOCTL. Никаких офсетов ядра, загрузок PDB или специфичного для сборки шеллкода — техника работает одинаково на всех сборках Windows 10 и Windows 11.
Инструмент представляет собой один самодостаточный исполняемый файл. Он устанавливает драйвер через диспетчер управления службами, выполняет завершение процессов, затем останавливает и удаляет службу, не оставляя постоянных артефактов. Цели настраиваются во время выполнения через файл конфигурации, командную строку или встроенные значения по умолчанию.
Кросс-версионность по замыслу. Один драйвер, один IOCTL, один примитив завершения. Работает на всех сборках Windows 10 и Windows 11.
1. Поместите moncrush.exe и MonProcessEX.sys в одну папку.
2. Запустите из командной строки с правами администратора.
moncrush.exe -n "notepad.exe,calc.exe"
3. Цели завершены. Драйвер выгружается сам. Готово.
Никакого тулчейна, офсетов и этапа сборки.
| Возможность | Подробности |
|---|---|
| Кросс-версионность | Работает на всех сборках Windows 10 и Windows 11, без офсетов |
| Завершение в режиме ядра | Драйвер завершает PID из контекста ядра |
| Обход PPL | Путь завершения MonProcessEX.sys обходит проверки защищённых процессов |
| Подписанный драйвер | MonProcessEX.sys — настоящий подписанный драйвер HONOR |
| Отсутствует в блок-списках MS | Отсутствует в списках блокировки уязвимых драйверов Microsoft |
| Самодостаточность | Драйвер устанавливается, запускается и удаляется через SCM |
| Ноль зависимостей | Статический Rust-бинарник; бросьте exe + драйвер и запускайте |
| Настраиваемость | targets.conf или -n, перекомпиляция не нужна |
| Обфускация | Путь устройства и список целей зашифрованы в состоянии покоя |
| Один исполняемый файл | Один бинарник; вывод в консоль из оболочки, беззвучен при двойном клике |
| Режим пробного запуска | Перечисление целей и PID перед выполнением |
| Цикл с джиттером | --repeat повторно проверяет со случайным интервалом |
| Коды выхода + JSON | Интерфейс автоматизации, удобный для C2 |
+-------------------------------------------------------------------------------------------+
| ПОЛЬЗОВАТЕЛЬСКИЙ РЕЖИМ |
| |
| moncrush.exe |
| |
| +-------------------+ +-------------------+ +---------------------+ |
| | перечисление | | определение | | сопоставление | |
| | всех запущенных | -> | PID цели через | -> | со списком целей, | |
| | процессов | | запись процесса | | сбор PID | |
| +-------------------+ +-------------------+ +----------+----------+ |
| | |
| CreateFileW("\.\MonProcessEX") | |
| DeviceIoControl(IOCTL 0x22400C) | |
| вывод = статус завершения v |
+-------------------------------------------------------------------------------------------+
| РЕЖИМ ЯДРА |
| |
| MonProcessEX.sys подписанный драйвер ядра HONOR |
| +---------------------------------------------------------------------------------+ |
| | | |
| | IOCTL 0x22400C -> диспетчеризация завершения PID | |
| | | | |
| | | поиск процесса в режиме ядра | |
| | v | |
| | EPROCESS найден -> завершён из контекста ядра | |
| | | | |
| | v | |
| | вызван путь выхода из процесса | |
| | | |
| +---------------------------------------------------------------------------------+ |
| |
| ОЧИСТКА |
| +---------------------------------------------------------------------------------+ |
| | служба SCM остановлена и удалена | |
| | драйвер выгружен, постоянных артефактов нет | |
| +---------------------------------------------------------------------------------+ |
+-------------------------------------------------------------------------------------------+
Драйвер предоставляет IOCTL завершения, который завершает процесс по его PID. Компонент пользовательского режима перечисляет запущенные процессы, определяет PID каждой цели и отправляет его через интерфейс устройства. Структуры ядра из пользовательского режима не затрагиваются, поэтому техника нечувствительна к изменениям версий Windows.
cargo build --release --target x86_64-pc-windows-gnu
Профиль release включает LTO и один модуль генерации кода. Проект самодостаточен и содержит собственное объявление [workspace].
moncrush.exe [options]
-s, --silent подавить весь вывод в консоль
-r, --repeat продолжать работу, повторно проверять цели
-d, --dry-run перечислить цели без завершения
-j, --json машиночитаемый вывод в JSON
-l, --list вывести имена целей и выйти
-v, --version вывести версию и выйти
-x, --self-destruct удалить себя после успешного запуска
--no-check пропустить проверки VM и отладчика
--delay <ms> задержка перед выполнением
--jitter <ms> рандомизировать интервал повтора
--max-attempts <n> остановиться после n проходов завершения (0=бесконечно)
--svc <name> пользовательское имя службы
--driver <path> пользовательский путь к файлу драйвера
-n, --names <csv> переопределение списка целей через запятую
-c, --config <path> загрузить цели из файла конфигурации
-h, --help показать эту справку
Коды выхода: 0 — успех, 2 — нет целей, 3 — сбой драйвера, 5 — прерывание среды. Порядок определения целей: --names > --config > targets.conf (с диска) > встроенные значения по умолчанию.
--no-check при тестировании внутри VM.--delay <ms> выполняет задержку перед любыми действиями, разрывая временную корреляцию с первоначальным запуском.-x удаляет исполняемый файл и очищает его запись Prefetch после успешного запуска.Список целей полностью настраивается без перекомпиляции:
Файл конфигурации. Поместите targets.conf рядом с исполняемым файлом, по одному имени процесса в строке. Строки, начинающиеся с #, игнорируются:
MsMpEng.exe
csfalconservice.exe
SentinelAgent.exe
cortex_agent.exe
Шаблон поставляется как targets.example.conf.
Командная строка. moncrush.exe -n "MsMpEng.exe,csfalconservice.exe"
Встроенные значения по умолчанию. Без конфигурации и флагов используется встроенный набор:
MIT. См. LICENSE.
Этот проект опубликован только для исследований и авторизованного тестирования. Загрузка неподписанных или уязвимых драйверов в систему, которой вы не владеете, незаконна в большинстве юрисдикций. Вы несёте ответственность за соблюдение всех применимых законов и объёма авторизации систем, которые вы тестируете.