L'analyse de la mémoire vive
Pourquoi la mémoire révèle ce que le disque cache, comment on l'acquiert, et ce qu'on y cherche avec Volatility : processus cachés, connexions, code injecté.
Elouan
Série Réponse à incident et forensic · article 4 sur 4
Le disque raconte ce qui a été stocké. La mémoire vive raconte ce qui se passait. Processus en cours, connexions ouvertes, commandes exécutées, code injecté dans d’autres programmes : beaucoup de ces éléments n’ont jamais touché le disque, ou n’y ont laissé que des traces partielles. C’est pour ça que l’analyse de la mémoire est devenue une étape à part entière de l’investigation.
Ce que contient la mémoire
| Élément | Intérêt pour l’enquête |
|---|---|
| Processus et leur arborescence | Ce qui tournait, lancé par qui, depuis où |
| Lignes de commande | Les arguments exacts, même si les journaux n’étaient pas configurés |
| Connexions réseau | Quel processus parlait à quelle adresse |
| DLL et modules chargés | Des bibliothèques suspectes dans un processus légitime |
| Code injecté | Du code malveillant qui n’existe que dans la mémoire d’un autre processus |
| Handles (fichiers, clés de registre, mutex) | Ce que le processus manipulait |
| Services, pilotes | Persistance et composants noyau |
| Clés et identifiants | Parfois des clés de chiffrement ou des secrets d’authentification |
Les menaces sans fichier
Certaines attaques ne déposent presque rien sur le disque : un script PowerShell téléchargé et exécuté directement en mémoire, du code injecté dans un processus légitime. L’analyse du disque seule ne les voit pas, la mémoire si.
Acquérir la mémoire
On acquiert la mémoire avant d’éteindre la machine (voir l’article sur l’ordre de volatilité), avec un outil dédié, et on écrit l’image sur un support externe ou un partage, jamais sur le disque de la machine analysée.
| Système | Outils |
|---|---|
| Windows | WinPmem, DumpIt, Magnet RAM Capture, fonctions de collecte de l’EDR |
| Linux | AVML, LiME |
| Machines virtuelles | Instantané de l’hyperviseur (fichiers de mémoire de la VM) |
Si la machine est déjà éteinte, il reste parfois des morceaux de mémoire sur le disque :
hiberfil.sys: l’image de la mémoire au moment de la mise en veille prolongée ;pagefile.sysetswapfile.sys: des pages de mémoire déplacées sur le disque ;MEMORY.DMP: un vidage après un plantage.
Volatility, l’outil de référence
Volatility est le cadre open source de référence pour analyser une image mémoire, et le sujet de l’ouvrage The Art of Memory Forensics. Sa version 3 détecte automatiquement le système et utilise des plugins préfixés par le système (windows., linux., mac.).
vol -f memoire.raw windows.info # version de Windows, date de l'acquisition
vol -f memoire.raw windows.pstree # arborescence des processus
vol -f memoire.raw windows.cmdline # lignes de commande
vol -f memoire.raw windows.netscan # connexions réseau et ports en écoute
| Plugin | Ce qu’il montre |
|---|---|
windows.info | Informations sur le système et l’image |
windows.pslist | Les processus, en suivant la liste du noyau |
windows.pstree | Les processus en arborescence parent → enfant |
windows.psscan | Les processus retrouvés en balayant toute la mémoire |
windows.cmdline | La ligne de commande de chaque processus |
windows.netscan | Les connexions et ports, avec le processus associé |
windows.dlllist | Les DLL chargées par chaque processus |
windows.handles | Les objets ouverts par un processus |
windows.svcscan | Les services |
windows.malfind | Les zones mémoire qui ressemblent à du code injecté |
Une démarche d’analyse
Une démarche fréquente :
- Le contexte :
windows.info, pour vérifier la version et l’heure de l’acquisition. - Les processus :
pstreeetcmdline, en appliquant ce qu’on sait d’un système sain (voir l’article sur les processus Windows) : parents inattendus, chemins anormaux, noms qui imitent des processus système, lignes de commande encodées. - Le réseau :
netscan, pour relier les connexions suspectes à un processus. - Les écarts : comparer
pslistetpsscanpour repérer d’éventuels processus cachés. - L’injection :
malfindsur les processus suspects, puis examen du contenu remonté. - L’extraction : récupérer les exécutables ou les zones mémoire suspects pour les analyser, et calculer leurs empreintes.
Les faux positifs de malfind
malfind signale les zones à la fois exécutables et modifiables sans fichier associé. C’est typique d’une injection, mais les moteurs JavaScript des navigateurs et les environnements comme .NET en créent aussi légitimement. On examine le contenu et le contexte avant de conclure.
Ce que la mémoire peut révéler
pstree montre un rundll32.exe sans argument, enfant de winword.exe. netscan le relie à une connexion vers une adresse inconnue sur le port 443. malfind remonte dans ce processus une zone exécutable qui commence par un en-tête d’exécutable Windows (MZ). Aucun fichier correspondant n’existe sur le disque : le code a été chargé directement en mémoire.
Pourquoi c’est complémentaire de l’EDR
Un EDR enregistre en continu des événements sélectionnés. Une image mémoire donne un instantané complet de la machine à un moment donné. L’EDR peut avoir été contourné ou désactivé par l’attaquant, ou n’avoir pas journalisé un détail utile. Les deux sources se confirment l’une l’autre.
C’est la fin de la série sur la réponse à incident ; la dernière série présente le cadre réglementaire et les acteurs de la cybersécurité.
L'essentiel
- La mémoire vive contient l'état réel de la machine : processus, lignes de commande, connexions réseau, DLL chargées, code injecté, parfois des clés et des identifiants.
- Certaines menaces n'existent qu'en mémoire (code injecté, scripts exécutés sans fichier). L'analyse du disque seule ne les voit pas.
- Acquisition : WinPmem, DumpIt, Magnet RAM Capture sous Windows ; AVML ou LiME sous Linux ; ou la fonction de collecte de l'EDR. Autres sources : hiberfil.sys, pagefile.sys, fichiers de vidage sur incident, mémoire des machines virtuelles.
- Volatility 3 est l'outil de référence. Plugins Windows clés : windows.info, windows.pslist, windows.pstree, windows.psscan, windows.cmdline, windows.netscan, windows.dlllist, windows.malfind, windows.svcscan.
- Comparer pslist et psscan : pslist suit la liste des processus du noyau, psscan cherche les structures dans toute la mémoire. Un processus vu par psscan mais pas par pslist peut avoir été caché (ou simplement terminé).
- malfind repère des zones mémoire exécutables et modifiables, sans fichier associé, souvent signe d'injection de code. À confirmer : des logiciels légitimes (navigateurs, environnements .NET) en produisent aussi.
Idées reçues
Un processus apparaît dans psscan mais pas dans pslist. Est-ce forcément un rootkit ?
L'erreur courante. Répondre oui.
En réalité. Pas forcément. psscan retrouve aussi des processus terminés dont la structure traîne encore en mémoire. On regarde s'il a une heure de fin, ses threads, ses connexions. Un processus actif absent de pslist, en revanche, évoque une technique de dissimulation (retrait de la liste chaînée du noyau).
malfind signale une zone mémoire suspecte dans un navigateur. Est-ce une injection ?
L'erreur courante. Conclure immédiatement à une infection.
En réalité. Pas nécessairement. Les moteurs JavaScript et les environnements .NET génèrent du code à la volée dans des zones exécutables et modifiables, ce que malfind remonte aussi. On examine le contenu (présence d'un en-tête d'exécutable, code reconnaissable), le processus concerné et le contexte avant de conclure.
Pourquoi analyser la mémoire si l'on a déjà l'EDR ?
L'erreur courante. Dire que l'EDR rend l'analyse mémoire inutile.
En réalité. L'EDR enregistre des événements choisis, et peut être contourné ou désactivé. L'image mémoire donne un instantané complet de l'état de la machine à un moment donné, y compris ce que l'EDR n'a pas journalisé. Les deux se complètent, et l'analyse mémoire reste précieuse pour confirmer une injection ou retrouver des éléments disparus du disque.
Tester ses connaissances
Références
- The Art of Memory ForensicsMichael Hale Ligh, Andrew Case, Jamie Levy, AAron Walters · Wiley
- Digital Forensics and Incident Response (3e éd.)Gerard Johansen · Packt