volatility

Le framework de référence en forensique mémoire. Analyse des dumps RAM pour extraire processus, connexions réseau, modules chargés, ruches de registre, credentials et artefacts de compromission. The leading memory forensics framework. Analyzes RAM dumps to extract processes, network connections, loaded modules, registry hives, credentials, and artifacts of compromise.

↗ https://github.com/volatilityfoundation/volatility3

Overview

Volatility is the industry-standard memory forensics framework. Given a memory dump from a Windows, Linux, or macOS system, it extracts running processes, network connections, loaded kernel modules, registry data, file system artifacts, and indicators of compromise. Essential for incident response and malware analysis.

Installation

# Volatility 3 (current version)
git clone https://github.com/volatilityfoundation/volatility3
cd volatility3
pip3 install -r requirements.txt

Or via pip

pip3 install volatility3

Getting a Memory Dump

# Windows: use winpmem or Magnet RAM Capture
# Linux: use LiME kernel module
# insmod lime-5.x.x.ko "path=/tmp/mem.lime format=lime"

# Or use VM snapshot (VMware .vmem, VirtualBox .sav)

Basic Usage

Identify OS profile (Volatility 3 auto-detects)

python3 vol.py -f memory.dmp windows.info

Linux target

python3 vol.py -f memory.dmp linux.pslist

Mac target

python3 vol.py -f memory.dmp mac.pslist

Process Analysis

List running processes (tree view)

python3 vol.py -f memory.dmp windows.pstree

Simple process list

python3 vol.py -f memory.dmp windows.pslist
python3 vol.py -f memory.dmp windows.psscan    # scan for EPROCESS structures
python3 vol.py -f memory.dmp windows.cmdline   # command line of each process

Find processes with injected code

python3 vol.py -f memory.dmp windows.malfind

Dump a process memory

python3 vol.py -f memory.dmp windows.memmap --pid 1234 --dump

Network Connections

Active network connections

python3 vol.py -f memory.dmp windows.netstat

Historical connections (includes closed)

python3 vol.py -f memory.dmp windows.netscan
# Output example:
# Offset  Proto  LocalAddr:Port  ForeignAddr:Port  State  PID  Process
# 0x...   TCP    10.0.0.5:54321  1.2.3.4:443       ESTABLISHED 1234 svchost.exe

Credential Extraction

Extract NTLM hashes from memory (like Mimikatz)

python3 vol.py -f memory.dmp windows.hashdump

Cached domain credentials

python3 vol.py -f memory.dmp windows.cachedump

LSA secrets

python3 vol.py -f memory.dmp windows.lsadump

Registry Analysis

List registry hives

python3 vol.py -f memory.dmp windows.registry.hivelist

Print registry key and values

python3 vol.py -f memory.dmp windows.registry.printkey \
  --key "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

Get user activity

python3 vol.py -f memory.dmp windows.registry.userassist

File System

List files cached in memory

python3 vol.py -f memory.dmp windows.filescan

Dump a specific file

python3 vol.py -f memory.dmp windows.dumpfiles --physaddr 0xADDRESS
# Find and dump a specific file
python3 vol.py -f memory.dmp windows.filescan | grep "suspicious.exe"
python3 vol.py -f memory.dmp windows.dumpfiles --virtaddr 0xADDRESS

Malware Analysis

Find injected code (common in process injection attacks)

python3 vol.py -f memory.dmp windows.malfind

Find DLL injection

python3 vol.py -f memory.dmp windows.dlllist --pid 1234

Check for loaded drivers

python3 vol.py -f memory.dmp windows.driverscan

Check for rootkit-hidden processes

python3 vol.py -f memory.dmp windows.psscan | diff - <(python3 vol.py -f memory.dmp windows.pslist)

Tips

  • windows.psscan vs windows.pslist: psscan finds processes hidden from the list
  • windows.malfind is often the fastest way to find injected shellcode
  • Memory analysis is timestamp-agnostic — can recover artifacts from days ago if memory wasn’t overwritten
  • Use windows.cmdline to see exactly what commands were executed, including PowerShell
Key Plugins Quick Reference
windows.info          OS version, architecture
windows.pslist        Running processes
windows.pstree        Process tree
windows.psscan        Find hidden processes
windows.cmdline       Process command lines
windows.netstat       Active connections
windows.netscan       All connections (incl. closed)
windows.malfind       Find injected code
windows.hashdump      NTLM hashes
windows.cachedump     Cached domain creds
windows.lsadump       LSA secrets
windows.dlllist       Loaded DLLs per process
windows.filescan      Cached file objects
windows.dumpfiles     Extract files from memory
windows.registry.hivelist   Registry hives

Vue d’ensemble

Volatility est le framework standard de l’industrie pour la forensique mémoire. À partir d’un dump mémoire d’un système Windows, Linux ou macOS, il extrait les processus en cours d’exécution, les connexions réseau, les modules kernel chargés, les données de registre, les artefacts de système de fichiers, et les indicateurs de compromission. Indispensable pour la réponse à incident et l’analyse de malware.

Installation

# Volatility 3 (version actuelle)
git clone https://github.com/volatilityfoundation/volatility3
cd volatility3
pip3 install -r requirements.txt

Ou via pip

pip3 install volatility3

Obtenir un dump mémoire

# Windows : utiliser winpmem ou Magnet RAM Capture
# Linux : utiliser le module kernel LiME
# insmod lime-5.x.x.ko "path=/tmp/mem.lime format=lime"

# Ou utiliser un snapshot de VM (VMware .vmem, VirtualBox .sav)

Utilisation de base

# Identifier le profil OS (Volatility 3 auto-détecte)
python3 vol.py -f memory.dmp windows.info

# Cible Linux
python3 vol.py -f memory.dmp linux.pslist

# Cible Mac
python3 vol.py -f memory.dmp mac.pslist

Analyse de processus

# Lister les processus en cours d'exécution (vue en arbre)
python3 vol.py -f memory.dmp windows.pstree

# Liste simple des processus
python3 vol.py -f memory.dmp windows.pslist

# Scanner les structures EPROCESS
python3 vol.py -f memory.dmp windows.psscan

# Ligne de commande de chaque processus
python3 vol.py -f memory.dmp windows.cmdline

# Trouver des processus avec du code injecté
python3 vol.py -f memory.dmp windows.malfind

# Dumper la mémoire d'un processus
python3 vol.py -f memory.dmp windows.memmap --pid 1234 --dump

Connexions réseau

# Connexions réseau actives
python3 vol.py -f memory.dmp windows.netstat

# Connexions historiques (inclut celles fermées)
python3 vol.py -f memory.dmp windows.netscan
# Exemple de sortie :
# Offset  Proto  LocalAddr:Port  ForeignAddr:Port  State  PID  Process
# 0x...   TCP    10.0.0.5:54321  1.2.3.4:443       ESTABLISHED 1234 svchost.exe

Extraction de credentials

# Extraire des hashs NTLM depuis la mémoire (comme Mimikatz)
python3 vol.py -f memory.dmp windows.hashdump

# Credentials de domaine en cache
python3 vol.py -f memory.dmp windows.cachedump

# Secrets LSA
python3 vol.py -f memory.dmp windows.lsadump

Analyse de registre

# Lister les ruches de registre
python3 vol.py -f memory.dmp windows.registry.hivelist

# Afficher une clé de registre et ses valeurs
python3 vol.py -f memory.dmp windows.registry.printkey \
  --key "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

# Obtenir l'activité utilisateur
python3 vol.py -f memory.dmp windows.registry.userassist

Système de fichiers

# Lister les fichiers mis en cache dans la mémoire
python3 vol.py -f memory.dmp windows.filescan

# Dumper un fichier spécifique
python3 vol.py -f memory.dmp windows.dumpfiles --physaddr 0xADDRESS

# Trouver et dumper un fichier spécifique
python3 vol.py -f memory.dmp windows.filescan | grep "suspicious.exe"
python3 vol.py -f memory.dmp windows.dumpfiles --virtaddr 0xADDRESS

Analyse de malware

# Trouver du code injecté (courant dans les attaques par injection de processus)
python3 vol.py -f memory.dmp windows.malfind

# Trouver de l'injection de DLL
python3 vol.py -f memory.dmp windows.dlllist --pid 1234

# Vérifier les drivers chargés
python3 vol.py -f memory.dmp windows.driverscan

# Vérifier les processus cachés par un rootkit
python3 vol.py -f memory.dmp windows.psscan | diff - <(python3 vol.py -f memory.dmp windows.pslist)

Conseils

  • windows.psscan vs windows.pslist : psscan trouve les processus cachés de la liste
  • windows.malfind est souvent le moyen le plus rapide de trouver du shellcode injecté
  • L’analyse mémoire est indépendante du temps : elle peut récupérer des artefacts vieux de plusieurs jours si la mémoire n’a pas été écrasée
  • Utiliser windows.cmdline pour voir exactement quelles commandes ont été exécutées, y compris PowerShell
Key Plugins Quick Reference
windows.info          OS version, architecture
windows.pslist        Running processes
windows.pstree        Process tree
windows.psscan        Find hidden processes
windows.cmdline       Process command lines
windows.netstat       Active connections
windows.netscan       All connections (incl. closed)
windows.malfind       Find injected code
windows.hashdump      NTLM hashes
windows.cachedump     Cached domain creds
windows.lsadump       LSA secrets
windows.dlllist       Loaded DLLs per process
windows.filescan      Cached file objects
windows.dumpfiles     Extract files from memory
windows.registry.hivelist   Registry hives