
Prueba de concepto que explota una vulnerabilidad del controlador de kernel fortimon3_74.sys de Fortinet para eludir PPL y terminar procesos protegidos como lsass.exe mediante un comando de finalización no autenticado.
Una vulnerabilidad en el controlador de kernel fortimon3_74.sys de Fortinet (el minifiltro "anti-exploit" de FortiClient) permite a cualquier administrador local terminar cualquier proceso, incluidos los procesos protegidos por PPL (Protected Process Light) como Windows Defender (MsMpEng.exe) y lsass.exe, enviando un mensaje de 8 bytes a un puerto de comunicación no autenticado.
Sin desbordamiento de búfer. Sin heap spray. Sin cadena ROP. Solo 8 bytes.
| Campo | Valor |
|---|
| Controlador | fortimon3_74.sys (Minifiltro Anti-Exploit de FortiClient) |
| Puerto | \Fortimon3FilterAntiExploitPort |
| Impacto | Bypass de PPL, terminación arbitraria de procesos |
| Acceso | Administrador local |
| Autenticación | Ninguna |
| Riesgo BYOVD | Alto - el controlador está firmado por Fortinet |
El controlador expone un puerto de comunicación de minifiltro sin autenticación del llamador. Acepta un mensaje simple de 8 bytes:
struct {
DWORD magic; // 0x6C6C696B ("kill" en ASCII little-endian)
DWORD pid; // ID del proceso objetivo
};
Al recibir este mensaje, el controlador llama a ZwOpenProcess con PROCESS_ALL_ACCESS desde modo kernel (omitiendo las comprobaciones de PPL), y luego a ZwTerminateProcess. No se realiza ninguna validación sobre el llamador ni sobre el objetivo.
El handle de ZwOpenProcess se crea en la tabla de handles del llamador (falta el flag OBJ_KERNEL_HANDLE), lo que crea una breve ventana en la que un atacante en modo usuario podría duplicar un handle PROCESS_ALL_ACCESS hacia un proceso protegido por PPL como lsass.exe, lo que permite el robo de credenciales sin terminar el proceso.
PROCESS_ALL_ACCESS en lugar de PROCESS_TERMINATEOBJ_KERNEL_HANDLE expone el handle del kernel al modo usuario
Ver la demostración completa - demuestra el bypass de PPL contra procesos protegidos.
| Archivo | Descripción |
|---|---|
poc.c | Prueba de concepto - termina cualquier proceso por nombre mediante el controlador vulnerable |
fortimon3_74.sys | Binario del controlador vulnerable (firmado por Fortinet) |
poc.jpg | Captura de pantalla - lsass.exe terminado, reinicio del sistema activado |
forti.mp4 | Video de demostración del exploit |
cl.exe poc.c /Fe:poc_kill.exe
poc_kill.exe MsMpEng.exe
Requiere: privilegios de administrador local, fortimon3_74.sys cargado.
me1n