
Proof-of-concept que explora uma falha no driver de kernel fortimon3_74.sys da Fortinet para contornar o PPL e encerrar processos protegidos como o lsass.exe através de um comando de kill não autenticado.
Uma vulnerabilidade no driver de kernel fortimon3_74.sys da Fortinet (o minifilter "anti-exploit" do FortiClient) permite que qualquer administrador local encerre qualquer processo - incluindo processos protegidos por PPL (Protected Process Light) como o Windows Defender (MsMpEng.exe) e o lsass.exe - enviando uma mensagem de 8 bytes para uma porta de comunicação não autenticada.
Sem buffer overflow. Sem heap spray. Sem ROP chain. Apenas 8 bytes.
| Campo | Valor |
|---|
| Driver | fortimon3_74.sys (FortiClient Anti-Exploit Minifilter) |
| Porta | \Fortimon3FilterAntiExploitPort |
| Impacto | Bypass de PPL, encerramento arbitrário de processos |
| Acesso | Administrador local |
| Autenticação | Nenhuma |
| Risco de BYOVD | Alto - o driver é assinado pela Fortinet |
O driver expõe uma porta de comunicação de minifilter sem autenticação do chamador. Ele aceita uma mensagem simples de 8 bytes:
struct {
DWORD magic; // 0x6C6C696B ("kill" em ASCII little-endian)
DWORD pid; // ID do processo alvo
};
Ao receber essa mensagem, o driver chama ZwOpenProcess com PROCESS_ALL_ACCESS a partir do modo kernel (contornando as verificações de PPL), e em seguida ZwTerminateProcess. Nenhuma validação é realizada no chamador ou no alvo.
O handle de ZwOpenProcess é criado na tabela de handles do chamador (falta o flag OBJ_KERNEL_HANDLE), criando uma breve janela em que um atacante em modo usuário poderia duplicar um handle PROCESS_ALL_ACCESS para um processo protegido por PPL como o lsass.exe - permitindo o roubo de credenciais sem encerrar o processo.
PROCESS_ALL_ACCESS usado em vez de PROCESS_TERMINATEOBJ_KERNEL_HANDLE expõe o handle do kernel ao modo usuário
Assista à demonstração completa - demonstra o bypass de PPL contra processos protegidos.
| Arquivo | Descrição |
|---|---|
poc.c | Prova de Conceito - encerra qualquer processo por nome através do driver vulnerável |
fortimon3_74.sys | Binário do driver vulnerável (assinado pela Fortinet) |
poc.jpg | Captura de tela - lsass.exe encerrado, reinicialização do sistema acionada |
forti.mp4 | Demonstração em vídeo do exploit |
cl.exe poc.c /Fe:poc_kill.exe
poc_kill.exe MsMpEng.exe
Requer: privilégios de administrador local, fortimon3_74.sys carregado.
me1n