
Preuve de concept exploitant une faille du pilote noyau Fortinet fortimon3_74.sys pour contourner PPL et terminer des processus protégés comme lsass.exe via une commande kill non authentifiée.
Une vulnérabilité dans le pilote noyau fortimon3_74.sys de Fortinet (le minifiltre « anti-exploit » de FortiClient) permet à tout administrateur local de terminer n'importe quel processus - y compris les processus protégés PPL (Protected Process Light) comme Windows Defender (MsMpEng.exe) et lsass.exe - en envoyant un message de 8 octets à un port de communication non authentifié.
Pas de dépassement de tampon. Pas de heap spray. Pas de chaîne ROP. Juste 8 octets.
| Champ | Valeur |
|---|
| Pilote | fortimon3_74.sys (Minifiltre Anti-Exploit FortiClient) |
| Port | \Fortimon3FilterAntiExploitPort |
| Impact | Contournement PPL, terminaison arbitraire de processus |
| Accès | Administrateur local |
| Authentification | Aucune |
| Risque BYOVD | Élevé - le pilote est signé par Fortinet |
Le pilote expose un port de communication minifiltre sans authentification de l'appelant. Il accepte un simple message de 8 octets :
struct {
DWORD magic; // 0x6C6C696B ("kill" in little-endian ASCII)
DWORD pid; // Target process ID
};
À la réception de ce message, le pilote appelle ZwOpenProcess avec PROCESS_ALL_ACCESS depuis le mode noyau (contournant les vérifications PPL), puis ZwTerminateProcess. Aucune validation n'est effectuée sur l'appelant ou la cible.
Le handle ZwOpenProcess est créé dans la table de handles de l'appelant (flag OBJ_KERNEL_HANDLE manquant), créant une brève fenêtre où un attaquant en mode utilisateur pourrait dupliquer un handle PROCESS_ALL_ACCESS vers un processus protégé PPL comme lsass.exe - permettant le vol d'identifiants sans tuer le processus.
PROCESS_ALL_ACCESS utilisé au lieu de PROCESS_TERMINATEOBJ_KERNEL_HANDLE manquant expose le handle noyau au mode utilisateur
Regarder la démo complète - démontre le contournement PPL contre des processus protégés.
| Fichier | Description |
|---|---|
poc.c | Preuve de concept - termine n'importe quel processus par nom via le pilote vulnérable |
fortimon3_74.sys | Binaire du pilote vulnérable (signé par Fortinet) |
poc.jpg | Capture d'écran - lsass.exe terminé, redémarrage du système déclenché |
forti.mp4 | Démo vidéo de l'exploit |
cl.exe poc.c /Fe:poc_kill.exe
poc_kill.exe MsMpEng.exe
Nécessite : privilèges d'administrateur local, fortimon3_74.sys chargé.
me1n