
Process Explorer contournement PPL par pilote vulnérable
Bien qu'il soit bien connu que les anciennes versions (antérieures à 17.x) des pilotes SysInternals Process Explorer (PSEXP152.sys) sont vulnérables et peuvent être exploitées pour ouvrir des handles de processus avec un accès complet vers des processus PPL (IOCTL : 0x8335003c), les versions plus récentes (à partir de 17.x) restent vulnérables et capables de faire de même avec une fonction de pilote différente (IOCTL : 0x83350014). Cette fonction IOCTL duplique des handles arbitraires et a également reçu un correctif pour filtrer le processus système et tout processus protégé (PP/PPL) dans la version 17.00 du pilote. Mais il y avait un oubli majeur avec cette fonction, car il était toujours possible de dupliquer n'importe quel handle de processus et de thread depuis votre propre processus non-PPL. Il suffisait d'ouvrir un processus PPL avec des permissions faibles comme PROCESS_QUERY_LIMITED_INFORMATION, puis de dupliquer ce handle depuis votre propre processus via le pilote Process Explorer pour contourner le filtre et obtenir un handle avec accès complet vers un processus PPL. J'ai utilisé cette méthode il y a des années pour contourner la protection des processus PPL, mais Microsoft a corrigé ce contournement avec la version 17.11 du pilote en vérifiant désormais si le handle cible est un handle de processus ou de thread PPL. Cependant, les versions du pilote de 17.00 à 17.09 (17.10 n'existe pas) ne sont pas incluses dans la liste de blocage des pilotes vulnérables de Microsoft et je soupçonne que certains fournisseurs d'EDR ne signalent pas non plus ces versions (pour l'instant).
Ceci n'est qu'une implémentation PoC pour tuer des processus PPL. La même IOCTL puissante de duplication de handles peut également être utilisée pour dupliquer d'autres types de handles comme les threads et pour injecter du shellcode dans d'autres processus PPL.
Utilisation :
1. Téléchargez une ancienne version de SysInternals Process Explorer (17.00 à 17.10)
2. Exécutez procexp64.exe en tant qu'administrateur pour charger le pilote vulnérable
3. Recherchez dans Process Explorer le PID de par exemple MsMpEng.exe (ex : 3660)
4. Exécutez ps_ppl_bypass.exe PID ("ps_ppl_bypass.exe 3660") en tant qu'administrateur pour tuer le processus cible
Il est également toujours possible d'obtenir une ancienne version du pilote depuis le site officiel de SysInternals en l'extrayant de l'outil SysInternals Handles : https://learn.microsoft.com/en-us/sysinternals/downloads/handle