
Process Explorer driver vulnerabile Bypass PPL
Sebbene sia ben noto che le vecchie versioni (precedenti alla 17.x) dei driver di SysInternals Process Explorer (PSEXP152.sys) siano vulnerabili e possano essere sfruttate per aprire handle di processo con accesso completo verso processi PPL (IOCTL: 0x8335003c), le versioni più recenti (dalla 17.x in poi) sono ancora vulnerabili e in grado di fare lo stesso con una diversa funzione del driver (IOCTL: 0x83350014). Questa funzione IOCTL duplica handle arbitrari e ha anche ricevuto una patch per filtrare il processo di sistema e qualsiasi processo protetto (PP/PPL) nella versione 17.00 del driver. Tuttavia c'è stata una grave svista con questa funzione, poiché era ancora possibile duplicare qualsiasi handle di processo e thread dal proprio processo non-PPL. Era sufficiente aprire un processo PPL con permessi bassi come PROCESS_QUERY_LIMITED_INFORMATION e poi duplicare questo handle dal proprio processo tramite il driver di Process Explorer per aggirare il filtro e ottenere un handle con accesso completo a un processo PPL. Ho usato questo metodo anni fa per aggirare la protezione dei processi PPL, ma Microsoft ha corretto questo bypass con la versione 17.11 del driver controllando ora se l'handle di destinazione è un handle di processo o thread PPL. Tuttavia, le versioni del driver dalla 17.00 alla 17.09 (la 17.10 non esiste) non sono incluse nella blocklist dei driver vulnerabili di Microsoft e sospetto che anche alcuni vendor EDR non le segnalino (per ora).
Questa è solo un'implementazione PoC per terminare processi PPL. La stessa potente IOCTL di duplicazione degli handle può essere usata anche per duplicare altri tipi di handle come i thread e per iniettare shellcode in altri processi PPL.
Usage:
1. Download older SysInternals Process Explorer (17.00 to 17.10)
2. Run procexp64.exe as administrator to load the vulnerable driver
3. Look in Process Explorer for the PID of for example MsMpEng.exe (ex: 3660)
4. Run ps_ppl_bypass.exe PID ("ps_ppl_bypass.exe 3660") as administrator to kill the target process
È ancora possibile ottenere una vecchia versione del driver dal sito ufficiale di SysInternals estraendola dallo strumento SysInternals Handles: https://learn.microsoft.com/en-us/sysinternals/downloads/handle