Memory Forensics avec Volatility 3 : Analyser des Dumps en Lab Reproductible
Workflow technique d'analyse memoire avec Volatility 3, dumps reproduits en sandbox et validation croisee avec Rekall et MemProcFS.
Trois heures du matin, alerte SIEM, processus PowerShell tue avant que l'EDR ne recolte les artefacts. Plus de disque exploitable, il reste la RAM. La forensique memoire a cesse d'etre un luxe academique pour devenir une ligne de front, surtout face aux malwares fileless et aux techniques living-off-the-land qui ne touchent jamais NTFS. Dans ce lab nous reproduisons un scenario reel avec Volatility 3.2, des dumps de 8 et 16 Go captures sur Windows 11 23H2 et Ubuntu 22.04, en validant les decouvertes contre Rekall et MemProcFS. Le principe : tout reproductible, sans approximation. Quiconque a deja lutte contre un profile mismatch sait que se fier a un seul outil est la garantie d'une conclusion fausse en expertise.
Monter le lab prend un apres-midi. Utilisez VirtualBox 7.0 ou QEMU/KVM avec 16 Go de RAM dediee a la VM cible, un snapshot propre avant chaque execution et une capture via vboxmanage debugvm dumpvmcore ou virsh dump --memory-only. Sous Windows, winpmem 4.0 fonctionne toujours ; sous Linux, AVML de Microsoft fournit des dumps coherents sur les noyaux 5.x et 6.x. Le lab de Pentest Web depuis Zero: Construire un Lab Sur avec DVWA, Juice Shop et Burp Suite sert de generateur de trafic pre-incident, et pour detonner des payloads controles appuyez-vous sur le pipeline de Analyse de Malware en Lab Isole: Setup Securise avec FlareVM et REMnux. Notez le hash SHA-256 de chaque dump au moment de la capture, sans quoi votre chaine de garde s'evapore.
Volatility 3 a abandonne les profiles au profit de symbol tables telechargees a la demande. Premiere commande obligatoire : vol -f dump.raw windows.info, qui confirme le build du noyau, le DTB et le timestamp. Ensuite windows.pslist, windows.psscan et windows.pstree en parallele, toujours en comparant. Un processus qui apparait dans psscan mais pas dans pslist est du DKOM classique ou un unlinking via _EPROCESS. Cote Linux, linux.pslist.PsList et linux.bash sont les points de depart ; bash recupere l'historique depuis le heap, utile quand l'attaquant a efface .bash_history sans penser a la RAM. Notez les PID suspects puis passez aux handles, dlls et malfind.
Le veritable tournant est windows.malfind. Il balaie les VAD avec PAGE_EXECUTE_READWRITE et un en-tete MZ absent, attrapant l'injection classique. Sur un de mes dumps de test, malfind a signale explorer.exe PID 4820 avec une region RWX contenant 3,2 Ko de shellcode, hash identique a un stager Sliver, ce qui rejoint le materiel de Construire une Infra C2 avec Sliver en Lab Isole pour la Recherche Defensive. Croisez avec windows.netscan pour extraire les sockets actifs, meme un TCP en CLOSE_WAIT apparait. Si le suspect parle a une IP non-RFC1918, dumpez le processus avec windows.dumpfiles et envoyez le tout dans Remnux pour analyse statique. Pour le versant offensif de l'injection, Evasion EDR pour la Recherche: Direct Syscalls Expliques sans Romance expose l'autre cote de la table.
Les cas Linux exigent un autre vocabulaire. linux.check_modules detecte les rootkits LKM via la divergence entre /proc/modules et la liste du noyau, tandis que linux.check_syscall identifie les hooks dans la sys_call_table en comparant les adresses au System.map. Sur un dump infecte par Diamorphine 1.0.7, check_syscall a releve 11 entrees modifiees en quelques secondes. Pour les conteneurs, le defi double : le dump capture tous les namespaces, mais il faut correler PID et cgroups, processus fastidieux detaille dans Container Forensics: Enqueter sur les Compromissions Kubernetes. Combinez avec les timelines hote construites grace a Timeline Forensics sur Windows : Plaso, Log2Timeline et KAPE en Pratique pour aligner evenements disque et RAM sur le meme axe temporel.
La validation croisee n'est pas optionnelle. Passez les memes dumps dans MemProcFS, qui monte la memoire comme un systeme de fichiers virtuel sous /mnt/memprocfs et permet grep et find sur les structures noyau. Les divergences entre Volatility et MemProcFS viennent souvent d'une symbol table perimee, rafraichissez-la avec pdbparse. Documentez tout dans un notebook Jupyter versionne en Git prive, avec des cellules reproduisant chaque commande, le hash d'entree et la sortie attendue. Cette rigueur rejoint OPSEC pour Chercheurs en Securite: Modele de Menace Personnel : un rapport forensique fuit autant qu'un exploit. Conclusion pratique : gardez trois dumps etalon dans votre lab, un propre, un avec Mimikatz resident, un avec un rootkit LKM, et testez chaque nouvelle version de Volatility avant de toucher au moindre cas reel.