• XSS.stack #1 – первый литературный журнал от юзеров форума

AV\EDR BYOVD-киллер для AV/EDR

DOC

Все сделки строго через гарант!
Пользователь
Регистрация
11.02.2023
Сообщения
345
Реакции
320
Гарант сделки
17

Jingle Bells tovarishi!

Залью тулзу на Rust для автоматического сноса av/edr процессов через эксплуатацию уязвимого драйвера.

АРХИТЕКТУРА И ПРИНЦИП РАБОТЫ

Тулза эксплуатирует CVE-2025-52915 в драйвере K7RKScan_1516.sys от K7 Computing. Драйвер подписан валидным сертификатом Microsoft, поэтому Driver Signature Enforcement его пропускает без вопросов. Через него можно убивать любые процессы на уровне ядра, включая PPL-защищенные (Protected Process Light), байпасся все хуки юзермода.

Цепочка атаки:

1. Usermode (наша тулза) → Service Control Manager API
2. Регистрация драйвера как SERVICE_KERNEL_DRIVER с правами SYSTEM
3. StartServiceA() → драйвер загружается в kernel space (Ring 0)
4. CreateFileA("\\\\.\\DosK7RKScnDrv") → получаем хендл на device object драйвера
5. DeviceIoControl() с IOCTL 0x222018 → передача PID целевого процесса
6. Драйвер вызывает PsLookupProcessById() + ZwTerminateProcess() напрямую из кернела

ТЕХНИЧЕСКИЕ ДЕТАЛИ ЭКСПЛУАТАЦИИ

IOCTL интерфейс:

  • Control Code: 0x222018 (кастомный IOCTL драйвера K7 для терминации процессов)
  • Input Buffer: DWORD с PID процесса
  • Output Buffer: отсутствует (драйвер ничего не возвращает)
  • Method: METHOD_BUFFERED (безопасная передача данных в kernel)

Device Object драйвера:

При загрузке K7RKScan_1516.sys создает:
  • Kernel device: \Device\NTK7RKScnDrv
  • Symbolic link: \DosDevices\DosK7RKScnDrv → доступен из usermode как \\.\DosK7RKScnDrv

Обход защиты процессов:

Драйвер выполняет терминацию через kernel-mode вызовы:

// Внутри драйвера K7RKScan.sys
PEPROCESS TargetProcess;
PsLookupProcessById(PID, &TargetProcess); // Получаем EPROCESS структуру
ZwTerminateProcess(TargetProcess, 0); // Убиваем процесс из Ring 0

Обход EDR/AV хуков:

EDR'ки обычно ставят хуки на:
  • NtTerminateProcess в ntdll.dll (usermode)
  • Kernel callbacks типа PsSetCreateProcessNotifyRoutineEx
Но драйвер обращается к функциям напрямую через SSDT (System Service Descriptor Table), минуя все usermode хуки. Kernel callbacks срабатывают, но уже после факта - процесс уже мертв.

Защита PPL (Protected Process Light):

Windows Defender (MsMpEng.exe), SentinelOne, CrowdStrike и другие EDR работают как PPL-процессы. Из usermode их невозможно убить через OpenProcess() - получишь ERROR_ACCESS_DENIED.
Но драйвер работает в Ring 0 с привилегиями SYSTEM, поэтому ему похуй на PPL - он напрямую модифицирует структуры ядра. (Если я здесь ошибаюсь, пожалуйста исправьте меня).

Код написан на Rust, значит быстро и без багов с памятью. HashSet для O(1) лукапа процессов, одиночный снапшот системы за итерацию - эффективно и шустро

ВАЖНО

  • (DLYA NUBOV) Нужны админ-права для загрузки драйвера (иначе CreateServiceA вернет ERROR_ACCESS_DENIED)
  • Только Windows (очевидно)
  • Только для пентеста и рисёрча, сами понимаете 😉
В настоящее время у меня нет активных ботов для тестирования на других стендах AV/EDR, поэтому я тестировал только на последней версии Windows — 25H2 (26200.7462)

1766587740738.png
 

Вложения

  • byovd.zip
    20.8 КБ · Просмотры: 76
Последнее редактирование:
Могу потестить на корпоративном CrowdStrike, Cisco AMP, Microsoft E5 Defender ну и возможно на SentinelOne. Как будет результат отпишу! Спасибо за софт!
Скорее всего, будет просто скантайм детект... 😥
 
Скорее всего, будет просто скантайм детект... 😥
 
Кинь ссылку на скомпилированный бинарь, пожалуйста.
 

Jingle Bells tovarishi!

Залью тулзу на Rust для автоматического сноса av/edr процессов через эксплуатацию уязвимого драйвера.

АРХИТЕКТУРА И ПРИНЦИП РАБОТЫ

Тулза эксплуатирует CVE-2025-52915 в драйвере K7RKScan_1516.sys от K7 Computing. Драйвер подписан валидным сертификатом Microsoft, поэтому Driver Signature Enforcement его пропускает без вопросов. Через него можно убивать любые процессы на уровне ядра, включая PPL-защищенные (Protected Process Light), байпасся все хуки юзермода.

Цепочка атаки:

1. Usermode (наша тулза) → Service Control Manager API
2. Регистрация драйвера как SERVICE_KERNEL_DRIVER с правами SYSTEM
3. StartServiceA() → драйвер загружается в kernel space (Ring 0)
4. CreateFileA("\\\\.\\DosK7RKScnDrv") → получаем хендл на device object драйвера
5. DeviceIoControl() с IOCTL 0x222018 → передача PID целевого процесса
6. Драйвер вызывает PsLookupProcessById() + ZwTerminateProcess() напрямую из кернела

ТЕХНИЧЕСКИЕ ДЕТАЛИ ЭКСПЛУАТАЦИИ

IOCTL интерфейс:

  • Control Code: 0x222018 (кастомный IOCTL драйвера K7 для терминации процессов)
  • Input Buffer: DWORD с PID процесса
  • Output Buffer: отсутствует (драйвер ничего не возвращает)
  • Method: METHOD_BUFFERED (безопасная передача данных в kernel)

Device Object драйвера:

При загрузке K7RKScan_1516.sys создает:
  • Kernel device: \Device\NTK7RKScnDrv
  • Symbolic link: \DosDevices\DosK7RKScnDrv → доступен из usermode как \\.\DosK7RKScnDrv

Обход защиты процессов:

Драйвер выполняет терминацию через kernel-mode вызовы:

// Внутри драйвера K7RKScan.sys
PEPROCESS TargetProcess;
PsLookupProcessById(PID, &TargetProcess); // Получаем EPROCESS структуру
ZwTerminateProcess(TargetProcess, 0); // Убиваем процесс из Ring 0

Обход EDR/AV хуков:

EDR'ки обычно ставят хуки на:
  • NtTerminateProcess в ntdll.dll (usermode)
  • Kernel callbacks типа PsSetCreateProcessNotifyRoutineEx
Но драйвер обращается к функциям напрямую через SSDT (System Service Descriptor Table), минуя все usermode хуки. Kernel callbacks срабатывают, но уже после факта - процесс уже мертв.

Защита PPL (Protected Process Light):

Windows Defender (MsMpEng.exe), SentinelOne, CrowdStrike и другие EDR работают как PPL-процессы. Из usermode их невозможно убить через OpenProcess() - получишь ERROR_ACCESS_DENIED.
Но драйвер работает в Ring 0 с привилегиями SYSTEM, поэтому ему похуй на PPL - он напрямую модифицирует структуры ядра. (Если я здесь ошибаюсь, пожалуйста исправьте меня).

Код написан на Rust, значит быстро и без багов с памятью. HashSet для O(1) лукапа процессов, одиночный снапшот системы за итерацию - эффективно и шустро

ВАЖНО

  • (DLYA NUBOV) Нужны админ-права для загрузки драйвера (иначе CreateServiceA вернет ERROR_ACCESS_DENIED)
  • Только Windows (очевидно)
  • Только для пентеста и рисёрча, сами понимаете 😉
В настоящее время у меня нет активных ботов для тестирования на других стендах AV/EDR, поэтому я тестировал только на последней версии Windows — 25H2 (26200.7462)

Посмотреть вложение 111793
что там у тебя за криптер стаб?)
 
Опять велосипед изобретаете, причем детский, который к EDR Kill никакого отношения не имеет.

Все эти ZwTerminateProcess и PsTerminateProcess лишь убивают процессы (кстати нужно проверять из на ProcessBreakOnTermination
перед тем как прибить (NtQueryInformationProcess) и можно из r3 убрать флаг).

В реальности драйвер должен еще и уметь читать/писать ядерную память.
Все что нужно для реальной дезактивации защиты, это:

Поставить заглушки
ObRegisterCallbacks
CmRegisterCallback
PsSetCreateThreadNotifyRoutine
PsSetCreateProcessNotifyRoutine
PsSetLoadImageNotifyRoutine

Снять хуки с
ObUnRegisterCallbacks
CmUnRegisterCallback
использовать их, пройтись по двусвязным спискам CallbackList
и почистить их.

Убрать мини-фильтры через перечисление
FltEnumerateFilters

С другой стороны: если взять для примера Falcon CrowdStrike
то даже тупому и ленивому админу достаточно сделать 3 вещи:
1. Включить список заблокированных драйверов
2. Включить Виртуализацию/Целостность памяти ядра
3. Самое простое и главное -В админ-панели Falcon CS включить запрет на загрузку драйверов
и идти спокойно пить пиво.
 
Последнее редактирование:
Товарищ Stupor !
Я же не написал что Америку открыл, на этом посте всё ясненько и понятно, даже слепой может читать, это обзор CVE-2025-52915 вот и всё, если читатель как я только начнет интересоваться с драйверами то это верный роадмап товарищ, читает этот пост - смотрит сурси - ищет что-то из гугла или жпт - найдет r/w драйвер - обходит ппл итд. В этом посте я написал что-как работает, пусть чел берет и сделает под себя, вы смотрите на торговом площадки за сколько люди продают именно вот такие решения - много!
 
что там у тебя за криптер стаб?)
Да там просто папка такой название. Хотел написать криптер для с2 агента ого ещё 2 месяцев назад и бросил. Сделал дроппера намного эффективнее чем криптер.
 
вы смотрите на торговом площадки за сколько люди продают именно вот такие решения - много!
Вообще то "такие решения", - это не "решения", а развод чистой воды.
 
Вообще то "такие решения", - это не "решения", а развод чистой воды.
Товарищ! Я не хочу с вами что-то дебатировать, я не ультра мега соник малдев как вы, нынешняя рынок все убивают едр через драйвер. ИМЕННО ВОТ С ТАКИМИ ДРАЙВЕРАМИ И ИМЕННО ВОТ С ТАКИМИ РЕШЕНИЯМИ!
 
У вас должно быть более 20 сообщений для просмотра скрытого контента.


вот на СИ есть чёт нифига он не убивает
У вас должно быть более 20 сообщений для просмотра скрытого контента.

 

Jingle Bells tovarishi!

Залью тулзу на Rust для автоматического сноса av/edr процессов через эксплуатацию уязвимого драйвера.

АРХИТЕКТУРА И ПРИНЦИП РАБОТЫ

Тулза эксплуатирует CVE-2025-52915 в драйвере K7RKScan_1516.sys от K7 Computing. Драйвер подписан валидным сертификатом Microsoft, поэтому Driver Signature Enforcement его пропускает без вопросов. Через него можно убивать любые процессы на уровне ядра, включая PPL-защищенные (Protected Process Light), байпасся все хуки юзермода.

Цепочка атаки:

1. Usermode (наша тулза) → Service Control Manager API
2. Регистрация драйвера как SERVICE_KERNEL_DRIVER с правами SYSTEM
3. StartServiceA() → драйвер загружается в kernel space (Ring 0)
4. CreateFileA("\\\\.\\DosK7RKScnDrv") → получаем хендл на device object драйвера
5. DeviceIoControl() с IOCTL 0x222018 → передача PID целевого процесса
6. Драйвер вызывает PsLookupProcessById() + ZwTerminateProcess() напрямую из кернела

ТЕХНИЧЕСКИЕ ДЕТАЛИ ЭКСПЛУАТАЦИИ

IOCTL интерфейс:

  • Control Code: 0x222018 (кастомный IOCTL драйвера K7 для терминации процессов)
  • Input Buffer: DWORD с PID процесса
  • Output Buffer: отсутствует (драйвер ничего не возвращает)
  • Method: METHOD_BUFFERED (безопасная передача данных в kernel)

Device Object драйвера:

При загрузке K7RKScan_1516.sys создает:
  • Kernel device: \Device\NTK7RKScnDrv
  • Symbolic link: \DosDevices\DosK7RKScnDrv → доступен из usermode как \\.\DosK7RKScnDrv

Обход защиты процессов:

Драйвер выполняет терминацию через kernel-mode вызовы:

// Внутри драйвера K7RKScan.sys
PEPROCESS TargetProcess;
PsLookupProcessById(PID, &TargetProcess); // Получаем EPROCESS структуру
ZwTerminateProcess(TargetProcess, 0); // Убиваем процесс из Ring 0

Обход EDR/AV хуков:

EDR'ки обычно ставят хуки на:
  • NtTerminateProcess в ntdll.dll (usermode)
  • Kernel callbacks типа PsSetCreateProcessNotifyRoutineEx
Но драйвер обращается к функциям напрямую через SSDT (System Service Descriptor Table), минуя все usermode хуки. Kernel callbacks срабатывают, но уже после факта - процесс уже мертв.

Защита PPL (Protected Process Light):

Windows Defender (MsMpEng.exe), SentinelOne, CrowdStrike и другие EDR работают как PPL-процессы. Из usermode их невозможно убить через OpenProcess() - получишь ERROR_ACCESS_DENIED.
Но драйвер работает в Ring 0 с привилегиями SYSTEM, поэтому ему похуй на PPL - он напрямую модифицирует структуры ядра. (Если я здесь ошибаюсь, пожалуйста исправьте меня).

Код написан на Rust, значит быстро и без багов с памятью. HashSet для O(1) лукапа процессов, одиночный снапшот системы за итерацию - эффективно и шустро

ВАЖНО

  • (DLYA NUBOV) Нужны админ-права для загрузки драйвера (иначе CreateServiceA вернет ERROR_ACCESS_DENIED)
  • Только Windows (очевидно)
  • Только для пентеста и рисёрча, сами понимаете 😉
В настоящее время у меня нет активных ботов для тестирования на других стендах AV/EDR, поэтому я тестировал только на последней версии Windows — 25H2 (26200.7462)

Посмотреть вложение 111793
This driver (K7RKScan_1516.sys) was detected and blocked by SentinelOne. It cannot be used for BYOVD (Bring Your Own Vulnerable Driver) attacks on systems protected by SentinelOne, as the EDR immediately flags it as malicious before it can be loaded.

Are there any alternative vulnerable drivers that can still be used for similar kernel-level exploits which are not currently detected by major EDR solutions like SentinelOne, CrowdStrike, or Microsoft Defender? If you know of any less-detected or new BYOVD drivers, please share or recommend them.
 
This driver (K7RKScan_1516.sys) was detected and blocked by SentinelOne. It cannot be used for BYOVD (Bring Your Own Vulnerable Driver) attacks on systems protected by SentinelOne, as the EDR immediately flags it as malicious before it can be loaded.
oo shit really? i have this version by the way which is old, i think may be that was a case for this.
Screenshot-2026-01-01.png
 
oo shit really? i have this version by the way which is old, i think may be that was a case for this.
Screenshot-2026-01-01.png

The issue is that the license has been revoked. The driver is being detected even by older versions of Sentinel.
 
The issue is that the license has been revoked. The driver is being detected even by older versions of Sentinel.
Thanks for information.
I deeply apologize from forum members that i fucked up the hole edr kill process with or without meaningless information. Sorry forum!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх