
Полностью необнаруживаемый и уклоняющийся рансомваре, написанный на Rust, использующий технику BYOVD для отключения решений AV/EDR на зараженных системах.
https://github.com/user-attachments/assets/5a1fc9b5-a647-41f6-a152-7b9d97381adc
Этот проект демонстрирует, как легитимный и подписанный драйвер может быть вооружен для обхода защитных средств и развертывания программы-вымогателя, имитируя реальную кибератаку.
🚨 Протестировано на Windows 11 Pro 24H2. Полностью не обнаруживается по состоянию на дату первоначального выпуска: 02-23-2026.
Обход Обход UAC BitDefender ✅ ✅ Kaspersky ✅ ✅ MS Defender ✅ ❌
VEN0m использует классическую технику BYOVD, но, в отличие от AV-EDR-KILLER, который эксплуатирует уязвимый драйвер, предоставляющий непривилегированным пользователям доступ к функции ядра ZwTerminateProcess, он использует уязвимый драйвер, входящий в состав IObit Malware Fighter v12.1.0, что довольно иронично, поскольку мы используем его для обхода.
Рассматриваемый драйвер — IMFForceDelete.sys, который предоставляет IOCTL, позволяющий непривилегированным пользователям удалять файлы произвольным образом. Эта уязвимость отслеживается как CVE-2025-26125, и драйвер до сих пор не внесен в список блокировки Microsoft.
Чтобы запустить произвольное удаление, мы просто выполняем вызов API DeviceIoControl с кодом IOCTL 0x8016E000, длинным указателем void на широкую строку Unicode, представляющую целевой файл, и общую длину, умноженную на 2 (так как wstr_file.len() возвращает количество элементов u16, а каждый элемент занимает 2 байта), приведенную к типу u32 для соответствия параметру DWORD в соглашении вызова API.
> DeviceIoControl(hDriver, 0x8016E000, wstr_file.as_ptr() as LPVOID, (wstr_file.len() * 2) as u32, ptr::null_mut(), 0, &mut bytes_returned, ptr::null_mut())
[!NOTE]
+ ❓ Почему AV-EDR-Killer не сработал против некоторых продуктов AV/EDR?
Основная идея заключалась в использовании драйвера с незащищенными IOCTL, предоставляющими доступ к функции ядра
ZwTerminateProcess, что дает любому пользовательскому приложению возможность завершать процессы на уровне ядра. Слабость этой техники в том, что некоторые продукты AV/EDR перехватывают указанную функцию и могут перехватывать вызовы к ней.Другая заметная техника заключалась в использовании примитивов произвольного чтения/записи определенного уязвимого драйвера для исправления памяти и перехода к еще более мощной функции завершения
PsTerminateProcess, которая не экспортируется самимntoskrnl.exe. Это также очень подозрительно, поскольку защита хоста постоянно сканирует память. Ссылка: https://securelist.com/av-killer-exploiting-throttlestop-sys/117026/
Мы просто уничтожаем установочные папки и исполняемые файлы на диске. Вот так просто!
Это кажется слепым пятном для большинства защитных продуктов, поскольку мы нацелены на файлы на диске, а не на манипуляции памятью или подозрительные вызовы. Используя наш драйвер IMFForceDelete.sys, мы можем принудительно удалять заблокированные файлы с высокими привилегиями. Прямая атака на продукт AV или EDR звучит нелогично, так как злоумышленники обычно стремятся к скрытности, чтобы обойти защиту, а не противостоять ей.
Используя эту технику, мы повредили работающие процессы EDR/AV, пока они постепенно не сломались и не перестали работать должным образом, что открыло шлюз для разрушений и развертывания нашей полезной нагрузки по выбору — VEN0m.
Вы можете расширить или настроить список целевых AV/EDR, изменив константу TARGETS:
const TARGETS: &[&str] = &[r"C:\Program Files (x86)\Kaspersky Lab", r"C:\Program Files\Bitdefender", r"C:\Program Files\Bitdefender Agent", r"C:\Program Files\Windows Defender",];
Чтобы обойти запросы UAC, мы перехватываем поток выполнения подписанного двоичного файла Microsoft Slui.exe, который поддерживает автоматическое повышение прав без выдачи запроса при вызове с глаголом runas в административном контексте.
Суть эксплуатации заключается в том, что Slui.exe пытается открыть несуществующий ключ реестра по пути HKCU\Software\Classes\Launcher.SystemSettings\Shell\Open\Command. Мы используем эту уязвимость, создавая отсутствующий ключ и вставляя DelegateExecute, указывающий на нашу текущую полезную нагрузку, чтобы делегировать выполнение. Затем мы запускаем Slui.exe с помощью вызова API ShellExecuteW с глаголом runas, что приводит к успешному обходу UAC. Полная реализация находится в /src/uac.rs.
[!IMPORTANT] Я не уверен, является ли это уязвимостью, о которой следует сообщить. Если да, пожалуйста, не стесняйтесь связаться со мной по указанному ниже адресу электронной почты.
Поскольку VEN0m обходит UAC и работает с высоким уровнем целостности, он автоматизирует извлечение встроенного драйвера во временную папку и создание службы ядра с замаскированными именами, такими как MicrosoftUpdate11.01. Он включает очень удобные проверки для автоматического запуска службы, если она остановлена, или для отказа от ее создания, если она уже существует.
После нейтрализации защитных средств хоста вы можете выбрать любую технику сохранения постоянства. Я выбрал простую технику Winlogon Userinit, которая использует ключ реестра Userinit по пути HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon. По умолчанию этот ключ указывает userinit.exe в качестве значения, которое выполняется при входе пользователя в систему для инициализации среды пользователя. Однако мы перехватываем это, добавляя путь к нашей полезной нагрузке, отделенный запятой от легитимного userinit.exe, а также помещая копию вредоносного ПО в %LOCALAPPDATA%.
Программа-вымогатель сканирует указанные диски на наличие файлов с целевыми расширениями, фильтруя список исключений. Соответствующие файлы шифруются с использованием 32-байтового жестко заданного ключа, и их расширения изменяются на .vnm.
Вы можете настроить поведение, изменив следующие константы:
const KEY: &[u8; 32] = b"G7m9Xq2vR4pL8bF1sW0cZ6kD3jN5yH8u";
const XClUSIONS: &[&str] = &["Windows", "Program Files", "Program Files (x86)", "ProgramData", "$Recycle.Bin", "All Users"];
const XTENSIONS: &[&str] = &["pdf", "doc", "xlms", "png", "jpg", "jpeg", "txt", "mp4"];
const DRV: &[&str] = &["C:\\", "D:\\", "E:\\", "F:\\"];
После завершения шифрования VEN0m меняет обои рабочего стола и помещает исполняемую записку с требованием выкупа на рабочий стол. Он также регистрирует запланированную задачу, которая запускается каждые пару минут для запуска графического интерфейса записки, отображающего яркий череп ☠️.
/assets/wallpaper.jpg на свое изображение./src/task.rsVEN0m также включает инструмент дешифрования Antid0te.exe🧪, который сканирует файлы с расширением .vnm и отменяет процедуру шифрования, используя тот же ключ, указанный для шифрования.
[!WARNING] Важно сохранить ваш ключ шифрования, чтобы вы могли расшифровать файлы с помощью дешифратора Antid0te.exe.
VEN0m является высокомодульным и настраиваемым. Вы можете изменить поведение программы-вымогателя, изменив жестко заданные константы. Вы также можете вывести его на новый уровень, объединив с уязвимостью повышения привилегий или техникой бокового перемещения по вашему выбору :)
> cargo build --release --bin Note --features 1
> cargo build --release --bin Antid0te --features 2
> cargo build --release --bin VEN0m
[!CAUTION] Вы несете ответственность за обеспечение надлежащего разрешения перед использованием этого инструмента. Автор не несет ответственности за неправомерное использование.
Приветствуются вклады и предложения! Если у вас есть «этические» деловые запросы или вы хотите сотрудничать, обращайтесь по адресу: [email protected]
Создано с ❤️, вдохновлено Petya, WannaCry и другими.
VEN0m — это черный бездомный кот, который повлиял на меня в моем пути.