
Эксплойт proof-of-concept, использующий уязвимость драйвера ядра Fortinet fortimon3_74.sys для обхода PPL и завершения защищённых процессов, таких как lsass.exe, с помощью неаутентифицированной команды kill.
Уязвимость в драйвере ядра Fortinet fortimon3_74.sys (мини-фильтр «anti-exploit» FortiClient) позволяет любому локальному администратору завершить любой процесс — включая процессы, защищённые PPL (Protected Process Light), такие как Windows Defender (MsMpEng.exe) и lsass.exe — отправив 8-байтовое сообщение на неаутентифицированный порт связи.
Ни переполнения буфера. Ни heap spray. Ни ROP-цепочки. Всего 8 байт.
| Поле | Значение |
|---|---|
| Драйвер | fortimon3_74.sys (мини-фильтр FortiClient Anti-Exploit) |
| Порт | \Fortimon3FilterAntiExploitPort |
| Воздействие | Обход PPL, произвольное завершение процессов |
| Доступ | Локальный администратор |
| Аутентификация | Отсутствует |
| Риск BYOVD | Высокий — драйвер подписан Fortinet |
Драйвер предоставляет порт связи мини-фильтра без аутентификации вызывающей стороны. Он принимает простое 8-байтовое сообщение:
struct {
DWORD magic; // 0x6C6C696B ("kill" в little-endian ASCII)
DWORD pid; // Идентификатор целевого процесса
};
При получении этого сообщения драйвер вызывает ZwOpenProcess с PROCESS_ALL_ACCESS из режима ядра (обходя проверки PPL), затем ZwTerminateProcess. Никакой проверки вызывающей стороны или цели не выполняется.
Дескриптор ZwOpenProcess создаётся в таблице дескрипторов вызывающей стороны (отсутствует флаг OBJ_KERNEL_HANDLE), что создаёт краткое окно, в котором атакующий из пользовательского режима мог бы дублировать дескриптор PROCESS_ALL_ACCESS к процессу, защищённому PPL, например lsass.exe — что позволяет похитить учётные данные без завершения процесса.
PROCESS_ALL_ACCESS вместо PROCESS_TERMINATEOBJ_KERNEL_HANDLE раскрывает дескриптор ядра пользовательскому режиму
Смотреть полную демонстрацию — демонстрирует обход PPL против защищённых процессов.
| Файл | Описание |
|---|---|
poc.c | Proof of Concept — завершает любой процесс по имени через уязвимый драйвер |
cl.exe poc.c /Fe:poc_kill.exe
poc_kill.exe MsMpEng.exe
Требуется: привилегии локального администратора, загруженный fortimon3_74.sys.
me1n
fortimon3_74.sys |
| Бинарный файл уязвимого драйвера (подписан Fortinet) |
poc.jpg | Скриншот — lsass.exe завершён, инициирована перезагрузка системы |
forti.mp4 | Видеодемонстрация эксплойта |