
Process Explorer anfälliger Treiber PPL-Bypass
Obwohl allgemein bekannt ist, dass alte Versionen (vor 17.x) der SysInternals Process Explorer-Treiber (PSEXP152.sys) anfällig sind und missbraucht werden können, um Vollzugriffs-Prozess-Handles auf PPL-Prozesse zu öffnen (IOCTL: 0x8335003c), sind neuere Versionen (ab 17.x aufwärts) weiterhin anfällig und in der Lage, dasselbe mit einer anderen Treiberfunktion zu tun (IOCTL: 0x83350014). Diese IOCTL-Funktion dupliziert beliebige Handles und erhielt in Treiberversion 17.00 auch einen Patch, um den Systemprozess und jeden geschützten Prozess (PP/PPL) zu filtern. Es gab jedoch ein großes Versehen bei dieser Funktion, da es weiterhin möglich war, jeden Prozess- und Thread-Handle aus dem eigenen Nicht-PPL-Prozess zu duplizieren. Es genügte, einen PPL-Prozess mit niedrigen Berechtigungen wie PROCESS_QUERY_LIMITED_INFORMATION zu öffnen und dann dieses Handle aus dem eigenen Prozess über den Process Explorer-Treiber zu duplizieren, um den Filter zu umgehen und ein Vollzugriffs-Handle auf einen PPL-Prozess zu erhalten. Ich habe diese Methode vor Jahren verwendet, um den PPL-Prozessschutz zu umgehen, aber Microsoft hat diesen Bypass mit Treiberversion 17.11 gepatcht, indem nun geprüft wird, ob das Ziel-Handle ein PPL-Prozess- oder Thread-Handle ist. Dennoch sind Treiberversionen von 17.00 bis 17.09 (17.10 existiert nicht) nicht in Microsofts Blockliste für anfällige Treiber enthalten, und ich vermute, dass einige EDR-Anbieter diese Versionen (vorerst) ebenfalls nicht kennzeichnen.
Dies ist nur eine PoC-Implementierung zum Beenden von PPL-Prozessen. Dieselbe leistungsstarke Handle-Duplizierungs-IOCTL kann auch verwendet werden, um andere Handle-Typen wie Threads zu duplizieren und um Shellcode in andere PPL-Prozesse einzuschleusen.
Verwendung:
1. Älteren SysInternals Process Explorer herunterladen (17.00 bis 17.10)
2. procexp64.exe als Administrator ausführen, um den anfälligen Treiber zu laden
3. Im Process Explorer nach der PID von beispielsweise MsMpEng.exe suchen (z. B. 3660)
4. ps_ppl_bypass.exe PID ("ps_ppl_bypass.exe 3660") als Administrator ausführen, um den Zielprozess zu beenden
Es ist auch weiterhin möglich, eine alte Treiberversion von der offiziellen SysInternals-Website zu erhalten, indem man sie aus dem SysInternals Handles-Tool extrahiert: https://learn.microsoft.com/en-us/sysinternals/downloads/handle