Forensique Mémoire

L'analyse forensique de la mémoire RAM constitue une discipline critique et spécialisée au sein de l'investigation numérique, axée sur l'extraction et l'analyse de données volatiles qui n'existent que pendant l'exécution du système. Contrairement à la forensique traditionnelle du disque, qui examine les données persistantes stockées sur des disques durs ou des SSD, la forensique mémoire capture l'état exact du système au moment de l'acquisition, révélant les processus en cours d'exécution, les connexions réseau actives, les identifiants en mémoire, les clés cryptographiques, les malware fileless et les artefacts que les attaquants sophistiqués laissent volontairement uniquement en RAM afin d'échapper à la détection. Cette technique est devenue indispensable dans l'investigation des menaces avancées (APT), des ransomware modernes et des attaques recourant aux techniques de living-off-the-land, où les intrus opèrent exclusivement en mémoire à l'aide d'outils légitimes du système d'exploitation. La fenêtre temporelle de collecte est critique : une fois le système éteint, redémarré ou mis en mode hibernation, ces artefacts volatils sont irrémédiablement perdus, faisant de la rapidité et de la méthodologie d'acquisition des facteurs déterminants pour le succès de l'investigation forensique.

Pourquoi la Forensique Mémoire

Les artefacts volatils sont perdus à l'extinction. La mémoire contient :

  • Processus en cours d'exécution : Malware fileless, injections de code
  • Connexions réseau : C2 active connections, sockets ouverts
  • Identifiants : Mots de passe en clair, hashes NTLM mis en cache
  • Cryptographie : Clés de chiffrement en mémoire
  • Registry hives : Modifications non persistées
  • Handles et DLL : Injections, hooking, rootkits

Acquisition de la Mémoire

Outils d'Acquisition

  • FTK Imager : Outil gratuit d'AccessData, interface graphique
  • DumpIt : Exécutable portable en une ligne, rapide
  • WinPmem : Open-source, prend en charge l'acquisition de la kernel memory
  • Magnet RAM Capture : Free tool, facile à utiliser
  • LiME (Linux) : Loadable Kernel Module pour les Linux systems
  • Belkasoft RAM Capturer : Fonctionne même avec l'anti-dumping

Considérations d'Acquisition

  • Acquérir la mémoire AVANT d'investiguer - l'analyse altère l'état
  • Système live : utiliser des outils qui minimisent le footprint
  • Système virtuel : snapshot de la VM ou extraction du .vmem
  • Système physique : envisager l'acquisition via FireWire/Thunderbolt DMA
  • Documenter l'heure exacte de l'acquisition pour la timeline

Analyse avec Volatility

Volatility Framework est l'outil open-source de référence pour l'analyse de mémoire, prenant en charge Windows, Linux, macOS et divers formats de dump.

Commandes Essentielles

      # Identifier le profil du système
      vol.py -f memory.dmp imageinfo
      # Lister les processus
      vol.py -f memory.dmp --profile=Win10x64 pslist
      vol.py -f memory.dmp --profile=Win10x64 pstree
      # Processus cachés (DKOM)
      vol.py -f memory.dmp --profile=Win10x64 psxview
      # Connexions réseau
      vol.py -f memory.dmp --profile=Win10x64 netscan
      # DLL chargées
      vol.py -f memory.dmp --profile=Win10x64 dlllist -p <PID>
      # Ligne de commande des processus
      vol.py -f memory.dmp --profile=Win10x64 cmdline
      # Dumps de processus
      vol.py -f memory.dmp --profile=Win10x64 procdump -p <PID> -D output/
      # Extraction des identifiants
      vol.py -f memory.dmp --profile=Win10x64 hashdump
      vol.py -f memory.dmp --profile=Win10x64 lsadump
      

Analyse de Malware Fileless

Le malware fileless réside uniquement en mémoire, utilisant des outils légitimes (PowerShell, WMI) pour échapper à l'AV. Techniques de détection :

  • Process injection : Rechercher la mémoire RWX, les remote threads
  • Analyse PowerShell : Commandes suspectes dans l'historique de la console
  • Hollowing : Processus légitimes au code remplacé
  • Reflective DLL Injection : DLL non mappées sur le disque

Exemple : Détecter une Process Injection

      # Rechercher les VADs suspects (mémoire RWX)
      vol.py -f memory.dmp --profile=Win10x64 malfind
      # Lister les injections de code
      vol.py -f memory.dmp --profile=Win10x64 hollowfind
      # Analyse des handles suspects
      vol.py -f memory.dmp --profile=Win10x64 handles -p <PID> -t Process,Thread
      

Extraction d'Identifiants

La mémoire contient fréquemment des identifiants en clair ou facilement crackables :

  • LSASS dump : NT hashes, Kerberos tickets, mots de passe en clair
  • Registry hives : SAM, SYSTEM pour hashdump offline
  • Browser memory : Mots de passe de formulaires, cookies de session
  • Spécifiques aux applications : Identifiants d'applications (email, VPN, etc.)

Reconstruction de la Timeline

Corréler les événements de la mémoire avec d'autres artefacts :

      # Timeline des processus et des connexions
      vol.py -f memory.dmp --profile=Win10x64 timeliner --output=body --output-file=timeline.body
      # Convertir en un format lisible
      mactime -b timeline.body -d > timeline.csv
      

Rootkits et DKOM

Direct Kernel Object Manipulation (DKOM) cache des processus en modifiant les kernel structures. Détecter par comparaison entre plusieurs sources :

  • psxview : Compare pslist, psscan, thrdproc, etc.
  • driverirp : Liste les drivers et leurs IRP hooks
  • ssdt : System Service Descriptor Table hooks
  • idt : Interrupt Descriptor Table modifications

Plugins Avancés de Volatility

  • yarascan : Scanner la mémoire avec des règles YARA
  • strings : Extraction de chaînes de processus spécifiques
  • clipboard : Contenu du presse-papiers Windows
  • notepad : Texte des fenêtres Notepad ouvertes
  • mftparser : Récupérer la $MFT depuis la mémoire
  • svcscan : Lister les Windows services

Outils Complémentaires

  • Rekall : Fork de Volatility avec des features supplémentaires
  • Redline : Interface graphique de FireEye pour l'analyse
  • MemProcFS : Monte le memory dump comme un filesystem
  • Bulk Extractor : Extraction en masse de features

Défis

  • Les dumps volumineux (16 Go+ de RAM) sont lents à analyser
  • Les techniques anti-forensiques peuvent corrompre les dumps
  • L'encrypted memory nécessite des keys pour l'analyse
  • Les structures de kernel changent selon les OS versions

Recommandations Finales

La forensique mémoire est essentielle pour investiguer les attaques avancées et le malware fileless. Automatisez l'acquisition de mémoire lors d'incidents suspects via l'EDR. Entraînez-vous à l'analyse avec des memory dumps publics (DFIRScience, Volatility Foundation). Corrélez toujours les résultats de la mémoire avec la disk forensics et la network forensics pour une vue complète de l'incident.