Aller au contenu

Analyse d'Artefact : Processus et Mémoire Volatile Linux

1. Le système de fichiers virtuel /proc : l’œil du noyau

Section intitulée « 1. Le système de fichiers virtuel /proc : l’œil du noyau »

Sous Linux, “tout est fichier”. Le répertoire /proc est un pseudo-système de fichiers généré dynamiquement par le noyau. Il n’existe pas sur le disque dur ; il réside entièrement en mémoire.

Chaque processus en cours d’exécution possède un sous-répertoire dédié dans /proc portant le nom de son identifiant de processus (PID) (ex: /proc/1234/). En interrogeant ces répertoires, les analystes peuvent extraire l’état exact du processus d’un attaquant.

  • cmdline : contient la ligne de commande complète et les arguments utilisés pour lancer le processus. Utile pour repérer des charges utiles en Base64 ou des indicateurs cachés.
  • cwd : un lien symbolique vers le répertoire de travail courant (Current Working Directory) du processus. Si un démon système (comme sshd) travaille depuis /dev/shm ou /tmp, c’est hautement suspect.
  • environ : contient les variables d’environnement chargées dans le processus. Les attaquants y divulguent souvent des clés d’API volées ou des chaînes de configuration C2.
  • fd/ (Descripteurs de fichiers) : un répertoire contenant des liens symboliques vers tous les fichiers, tubes nommés (pipes) et sockets réseau ouverts par le processus. Il révèle exactement avec quoi le malware communique.

L’indicateur (deleted) : chasser les malwares “Fileless”

Section intitulée « L’indicateur (deleted) : chasser les malwares “Fileless” »

Le fichier le plus précieux dans le répertoire du PID est exe. C’est un lien symbolique vers le binaire réel sur le disque. Si un attaquant dépose une charge utile (malware), l’exécute, puis supprime immédiatement le fichier physique pour se cacher des scans antivirus, le lien exe pointera vers [chemin] (deleted). Trouver un processus en cours d’exécution mappé sur un binaire supprimé est un indicateur de compromission (IOC) de très haute fidélité.

2. Filiation des processus et masquage (Masquerading)

Section intitulée « 2. Filiation des processus et masquage (Masquerading) »

Trouver l’aiguille malveillante dans une botte de foin de processus Linux légitimes nécessite une analyse comportementale.

Tout comme dans l’analyse des processus Windows, la relation parent-enfant révèle l’intention de l’attaquant. L’utilisation de la commande pstree -p -a affiche cette hiérarchie.

  • La signature du Web Shell : si un démon de serveur web (www-data exécutant apache2, nginx ou php-fpm) génère un shell interactif (bash, sh, dash) ou un moteur de script (python, perl), le serveur a été compromis via un Web Shell ou une vulnérabilité RCE.

Les attaquants renomment fréquemment leurs binaires pour se fondre dans le bruit normal du système.

  • Typosquatting : nommer le malware systmend (au lieu de systemd) ou kworker.
  • Espaces ajoutés : nommer le processus "apache2 " (avec un espace à la fin) pour tromper les analystes parcourant rapidement la sortie de top ou ps.
  • Usurpation de thread noyau : les threads noyau légitimes sont entourés de crochets (ex: [kthreadd]). Les attaquants peuvent nommer leur malware en espace utilisateur [kworker/u4:2] pour imiter un thread noyau. Cependant, les threads noyau légitimes ont un PPID de 2 (kthreadd) et n’ouvrent pas de sockets réseau. Si un “thread noyau” possède des connexions TCP ouvertes, c’est un imposteur.

Une charge utile en cours d’exécution est inutile sans Command & Control (C2). Les analystes doivent lier les connexions réseau suspectes au processus qui les a initiées.

En utilisant des outils modernes comme ss -lntp ou lsof -i -P -n, les analystes recherchent :

  1. Les shells inversés (Reverse Shells) : une connexion sortante ESTABLISHED vers une IP publique sur un port arbitraire, initiée par un shell (bash, nc) ou un interpréteur (python).
  2. Les Bind Shells : un processus inconnu ou suspect (ex: perl) dans un état d’écoute LISTEN sur un port élevé et non standard (ex: 4444, 31337).

Si un rootkit sophistiqué ou un implant en mémoire est suspecté, les analystes doivent acquérir un vidage complet de la RAM pour une analyse hors ligne à l’aide d’outils comme le Volatility Framework.

Contrairement à Windows, les noyaux Linux modernes interdisent strictement la lecture de /dev/mem pour des raisons de sécurité. Extraire la RAM nécessite le chargement d’un module noyau spécifique.

LiME (Linux Memory Extractor)

Le standard historique. Il nécessite la compilation d’un module .ko (Kernel Object) spécifique à la version exacte du noyau de la machine victime. C’est très fiable mais opérationnellement complexe lors d’un incident évoluant rapidement.

AVML (Azure Voyager Memory Layout)

Un outil open-source développé par Microsoft (écrit en Rust). Il tente d’acquérir la mémoire sans nécessiter de compilation complexe de module noyau, comblant le fossé entre /proc/kcore et /dev/crash. Il est fortement recommandé pour la réponse à incident cloud moderne.

Lors du triage d’une machine Linux en direct et activement compromise, déployez les commandes bash suivantes avant d’initier les procédures de confinement ou d’arrêt.

hunt_deleted_executables.sh
# Liste tous les processus en cours d'exécution dont le binaire d'origine a été supprimé du disque.
# Cela fait immédiatement remonter les malwares "fileless" et les droppers supprimés.
ls -l /proc/*/exe 2>/dev/null | grep "deleted"