Zoom sur l’attaque « PPID Spoofing »

À l’origine, cette technique a été vulgarisée dans le monde de la sécurité de l’information en 2009 par Didier Stevens. Une preuve de concept écrite en C++ a été publiée (SelectMyParent) et permet à l’utilisateur de sélectionner le processus parent en spécifiant le PID (identificateur de processus). Cette technique est depuis largement utilisée par des acteurs malveillants pour réaliser différents type d’attaques informatique.

Principes de l’attaque PPID Spoofing

S’il vous est déjà arrivé de d’exécuter la commande tasklist (sous windows) ou top (linux), vous avez sans doute remarqué une colonne nommée ID ou PID contenant une liste de nombres.

Sous Linux, un exécutable stocké sur disque est appelé un programme, et un programme chargé en mémoire et en cours d’exécution est appelé un processus. Lorsqu’un processus est démarré, il reçoit un numéro unique appelé ID de processus (PID) qui identifie ce processus dans le système. Vous pouvez arrêter un processus, donc le programme en cours d’exécution, en vous référant à son PID.

Les démons (processus système) et les processus utilisateur (processus que vous avez démarrés automatiquement ou manuellement) ont leurs propres ID de processus. Les PID ne sont pas toujours attribués dans l’ordre numérique, il est donc normal de voir ce qui semble être une sélection aléatoire de nombres.

L’usurpation de PPID (Parent Process ID) est une technique qui permet aux attaquants de démarrer des programmes avec un ensemble de processus parent arbitraire. Cela aide les attaquants à donner l’impression que leurs programmes ont été générés par un autre processus (au lieu de celui qui l’aurait généré si aucune usurpation n’avait été effectuée) et cela peut aider à échapper aux détections, qui sont basées sur les relations de processus parent/enfant.

En d’autres termes, l’usurpation d’ID de processus parent (PPID Spoofing) est une technique de manipulation qui consiste à faire passer un processus malveillant comme étant un sous-processus d’un processus parent légitime, afin d’échapper à des techniques de défense telles que la détection heuristique. Par exemple, un processus malveillant créé par un malware peut usurper l’ID d’un processus légitime comme notepad.exe.  

 

Processus normal du programme notepad.
Source: https://www.ired.team

Il est possible de réaliser l’attaque de PPID Spoofing avec le script suivant.

 

Le processus notepad s’exécute sous l’ID parent de igfxTray.exe, plutot que explorer.exe

Du point de vue des possibilités d’attaques, des acteurs malveillants peuvent utiliser cette technique pour réaliser une élévation de privilèges ou rendre furtive leur offensive. En effet, les nouveaux processus sont généralement générés directement à partir de leur processus parent ou appelant, sauf indication contraire. Sous Windows par exemple, Une façon d’attribuer explicitement le PPID d’un nouveau processus est via l’appel d’API CreateProcess, qui prend en charge un paramètre qui définit le PPID à utiliser. Des attaquants peuvent abuser de ces mécanismes pour échapper aux défenses telles que le blocage des processus générés directement à partir de documents Office, et l’analyse ciblant les relations de processus parent-enfant inhabituelles/potentiellement malveillantes. Cette usurpation d’identité pourrait être exécutée via Visual Basic dans un document Office malveillant ou tout code pouvant exécuter une API native.

Pour les équipes de sécurité dédiées à la recherche des menaces et la plupart des EDR, la surveillance des relations entre les processus parents et enfants est une technique très courante pour détecter les activités malveillantes. Par exemple, si PowerShell est le processus enfant et Microsoft Word est le parent, cela indique une compromission. L’appel de l’API Windows « CreateProcess » prend en charge un paramètre qui permet à l’utilisateur d’attribuer le PID parent. Cela signifie qu’un processus malveillant peut utiliser un parent différent lors de sa création à partir de celui qui est réellement exécuté.

De plus, l’attribution explicite du PPID peut également activer des privilèges élevés en fonction des droits d’accès appropriés au processus parent. Par exemple, un adversaire dans un contexte d’utilisateur privilégié (c’est-à-dire un administrateur) peut générer un nouveau processus et affecter le parent en tant que processus s’exécutant en tant que SYSTEM (tel que lsass.exe), provoquant l’élévation du nouveau processus via le jeton d’accès hérité.

Comment détecter l’attaque ?

  • Utilisation d’EDR correctement configurés;
  • Vérification manuelle à travers les journaux d’événements Event Trace Logs;
  • Utilisation de plateformes de recherches et détection de menaces (Splunk, etc.).
Références :
https://attack.mitre.org/techniques/T1134/004/
https://www.ired.team/offensive-security/defense-evasion/parent-process-id-ppid-spoofing

 

 

A propos de VLADIMIR AMAN

Est un professionnel de la cybersécurité justifiant d'une expérience de plus de 10 ans dans le domaine de la cybersécurité, à différentes fonctions au sein d’organisations étatiques. Fort de son background universitaire en criminologie appliquée, il a acquis de solides compétences techniques en sécurité informatique offensive, forensique, hacking éthique et management de la sécurité de l’information, sanctionnées par les certifications internationales les plus prestigieuses du marché (CISSP, OCIPA, ISO 27001 Lead Auditor/lead implementer, ISO 27032 Lead Cybersecurity Manager, Certified Ethical Hacker). Auteur, blogueur, conférencier, il est créateur du site "hacktu Magazine" et auteur de plusieurs ouvrages liés à la cybersécurité et la cybercriminologie.