Forensics Mémoire avec Volatility 2.6 : Analyse d'un Dump RAM (Cas Weyland-Yutani)¶
Cette fiche documente la méthodologie d'analyse d'un dump mémoire (memdump.mem) via Volatility Framework 2.6 (standalone Windows), dans le cadre d'un lab DFIR : reconstitution de l'activité d'un attaquant ayant compromis un serveur web, puis corrélation optionnelle avec une image disque via FTK Imager.
Contexte outillage¶
Volatility installé en version standalone Windows (.exe), non ajouté au PATH.
Appel systématique via chemin complet, avec & en PowerShell pour gérer les
espaces dans le chemin.
$VOL = "C:\Users\muzee\Downloads\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone.exe"
$MEM = "D:\Jedha Bootcamp Cyber Lead\5.Incident Management\Weyland-Yutani\dfir-case1\memdump\memdump.mem"
Partie 1 — Reconnaissance système¶
Identification du profil¶
Liste des processus (vue plate)¶
Arborescence des processus (vue hiérarchique)¶
Partie 2 — Activité de l'attaquant¶
Récupération de l'historique des commandes¶
Identification du compte associé à un processus (SID)¶
Partie 3 — Analyse approfondie et synthèse¶
Dump mémoire d'un processus spécifique¶
Extraction des chaînes lisibles (alternative PowerShell à strings)¶
strings (Sysinternals) non disponible sur le poste. Extraction via lecture
binaire brute et regex sur les octets imprimables, encodage ISO-8859-1 pour
préserver l'alignement octet-à-octet :
$bytes = [System.IO.File]::ReadAllBytes("2880.dmp")
$text = [System.Text.Encoding]::GetEncoding("ISO-8859-1").GetString($bytes)
$text | Select-String -Pattern "[\x20-\x7E]{4,}" -AllMatches | ForEach-Object { $_.Matches.Value } | Out-File -Encoding UTF8 "2880_strings.txt"
Recherche de motifs dans les chaînes extraites¶
Select-String -Path "2880_strings.txt" -Pattern "net.user" -SimpleMatch:$false
Select-String -Path "2880_strings.txt" -Pattern "%26%26"
Scan des fichiers en mémoire¶
Filtrage du filescan (répertoire web + extensions sensibles)¶
Select-String -Path "filescan_full.txt" -Pattern "htdocs" | Select-String -Pattern "\.zip|\.rar|\.7z|\.php|\.exe|\.jsp|\.asp"
Méthodologie de raisonnement (réutilisable)¶
- imageinfo → déterminer le profil avant tout autre plugin.
- pslist + pstree → repérer les processus hors fenêtre de setup initiale et analyser leur lignée (parent = explorer.exe → session interactive ; parent = service web → exécution via l'application).
- cmdscan → historique des commandes tapées en interactif ; filtrer les blocs de mémoire résiduelle (CommandCount incohérent, fragments).
- getsids -p
→ le SID se terminant par -500désigne toujours le compte Administrateur intégré, quel que soit le nom du domaine/machine. - memdump -p
+ extraction de strings → pour retrouver l'activité d'un attaquant passée par une application (web) plutôt que par une console interactive ; penser à l'encodage URL des caractères spéciaux (%26%26=&&) dans les paramètres de formulaire. - filescan → toujours rediriger vers un fichier (sortie volumineuse) puis filtrer par répertoire applicatif connu et extensions à risque.
Bonus — Corrélation avec l'image disque (FTK Imager)¶
Complément optionnel du lab : croiser les preuves mémoire avec l'image disque
complète (Case1-Webserver.E01), pour accéder aux logs Apache, aux
métadonnées de fichiers et à d'éventuels artefacts absents de la RAM.
Installation FTK Imager (Exterro)¶
Le formulaire de téléchargement officiel filtre les domaines de webmail grand
public (Orange, MSN...) et n'accepte que des adresses à caractère
professionnel/institutionnel. Une adresse sur domaine personnel
(@tech-etc.fr) passe le filtre là où les FAI grand public sont rejetés.
Distribution reçue sous forme d'ISO — montage natif Windows avant installation :
$mount = Mount-DiskImage -ImagePath "C:\chemin\vers\FTKImager.iso" -PassThru
$driveLetter = ($mount | Get-Volume).DriveLetter
Get-ChildItem "${driveLetter}:\" -Recurse
Ouverture de l'image disque¶
Dans FTK Imager : File > Add Evidence Item > Image File, puis sélection du
fichier Case1-Webserver.E01 (format EWF reconnu nativement, pas de
conversion nécessaire). Les segments .E02, .E03... doivent rester dans le
même dossier que le .E01 pour un rechargement automatique en séquence.
Export d'un fichier pour analyse texte hors FTK Imager¶
Clic droit sur le fichier ciblé dans le panneau File List → Export Files..., puis recherche dans le fichier exporté :
Méthodologie de corrélation mémoire ↔ disque¶
- Métadonnées de fichiers (
Date Created/Date Modified/Date Accesseddans le panneau File List de FTK Imager) pour situer un artefact retrouvé en mémoire (ex. webshell) dans une chronologie précise — information que Volatility seul ne fournit pas aussi finement. - Logs applicatifs (
xampp\apache\logs\access.log) pour confirmer et enrichir une séquence d'attaque déduite de la mémoire (ex. corrélation entre le nombre de tentativesPOSTobservées côté web et le nombre de commandes reconstruites via strings surhttpd.exe). - Repérage par user-agent atypique dans les logs (ex.
sqlmap/1.0-dev) pour détecter des outils d'exploitation automatisés qui n'auraient laissé aucune trace en mémoire au moment du dump (fichiers webshell temporaires déjà supprimés par l'attaquant après usage). - Dossier
[orphan]dans l'arborescence FTK Imager : pointe vers des entrées MFT dont le chemin parent est cassé, piste à explorer pour retrouver des fichiers supprimés récemment (non exploré dans cette session).
Points de vigilance techniques¶
- Sous PowerShell, les chemins avec espaces nécessitent l'opérateur
&(call operator) pour l'exécution d'un exécutable. Get-Content -Encoding Latin1n'existe pas nativement en PowerShell 5.1 ; passer par[System.Text.Encoding]::GetEncoding("ISO-8859-1")en .NET direct.- Un dump mémoire de ~200 Mo se traite en quelques dizaines de secondes à quelques minutes avec une regex PowerShell — acceptable sans script externe.