
Proof-of-Concept, das eine Schwachstelle im Fortinet-Kernel-Treiber fortimon3_74.sys ausnutzt, um PPL zu umgehen und geschützte Prozesse wie lsass.exe über einen unauthentifizierten Kill-Befehl zu beenden.
Eine Schwachstelle im Kernel-Treiber fortimon3_74.sys von Fortinet (FortiClients „Anti-Exploit"-Minifilter) ermöglicht es jedem lokalen Administrator, jeden Prozess zu beenden - einschließlich PPL-geschützter (Protected Process Light) Prozesse wie Windows Defender (MsMpEng.exe) und lsass.exe -, indem eine 8-Byte-Nachricht an einen nicht authentifizierten Kommunikationsport gesendet wird.
Kein Pufferüberlauf. Kein Heap Spray. Keine ROP-Kette. Nur 8 Bytes.
| Feld | Wert |
|---|---|
| Treiber | fortimon3_74.sys (FortiClient Anti-Exploit Minifilter) |
| Port | \Fortimon3FilterAntiExploitPort |
| Auswirkung | PPL-Bypass, willkürliche Prozessbeendigung |
| Zugriff | Lokaler Administrator |
| Authentifizierung | Keine |
| BYOVD-Risiko | Hoch - Treiber ist von Fortinet signiert |
Der Treiber stellt einen Minifilter-Kommunikationsport ohne Aufrufer-Authentifizierung bereit. Er akzeptiert eine einfache 8-Byte-Nachricht:
struct {
DWORD magic; // 0x6C6C696B ("kill" in little-endian ASCII)
DWORD pid; // Target process ID
};
Beim Empfang dieser Nachricht ruft der Treiber ZwOpenProcess mit PROCESS_ALL_ACCESS aus dem Kernel-Modus auf (umgeht PPL-Prüfungen) und anschließend ZwTerminateProcess. Es wird keine Validierung des Aufrufers oder Ziels durchgeführt.
Das ZwOpenProcess-Handle wird in der Handle-Tabelle des Aufrufers erstellt (fehlendes OBJ_KERNEL_HANDLE-Flag), wodurch ein kurzes Zeitfenster entsteht, in dem ein Usermode-Angreifer ein PROCESS_ALL_ACCESS-Handle auf einen PPL-geschützten Prozess wie lsass.exe duplizieren könnte - was Credential-Diebstahl ohne Beendigung des Prozesses ermöglicht.
PROCESS_ALL_ACCESS wird anstelle von PROCESS_TERMINATE verwendetOBJ_KERNEL_HANDLE-Flag setzt Kernel-Handle dem Usermode aus
Watch the full demo - demonstriert den PPL-Bypass gegen geschützte Prozesse.
| Datei | Beschreibung |
|---|---|
poc.c | Proof of Concept - beendet jeden Prozess anhand des Namens über den verwundbaren Treiber |
cl.exe poc.c /Fe:poc_kill.exe
poc_kill.exe MsMpEng.exe
Erfordert: lokale Administratorrechte, geladener fortimon3_74.sys.
me1n
fortimon3_74.sys | Verwundbare Treiber-Binärdatei (von Fortinet signiert) |
poc.jpg | Screenshot - lsass.exe beendet, Systemneustart ausgelöst |
forti.mp4 | Video-Demo des Exploits |