Volatility 3 Cheatsheet
Objectif : Volatility est un framework open-source de référence pour l'analyse de la mémoire volatile (RAM) et l'investigation numérique (forensic). Volatility 3 est une réécriture en Python 3, qui ne nécessite plus de profils système spécifiques comme Volatility 2, car il utilise des tables de symboles et tente de détecter automatiquement l'OS.
Source : https://github.com/volatilityfoundation/volatility3
Installation : pip install volatility3
(ou cloner le dépôt et installer les dépendances)
🚀 Utilisation de Base
La structure générale d'une commande Volatility 3 est :
python vol.py -f <chemin_image_memoire> <plugin> [options_plugin]
-f <chemin_image_memoire>
: Obligatoire. Spécifie le fichier de dump mémoire à analyser (ex: memory.dmp
, memdump.mem
, memory.raw
).
<plugin>
: Le plugin spécifique à exécuter (ex: windows.pslist.PsList
). Volatility 3 utilise une structure OS.module.Classe
.
[options_plugin]
: Options spécifiques au plugin choisi (ex: --pid
, --dump
).
| # Afficher l'aide générale et la liste des plugins disponibles
python vol.py -h
# Afficher l'aide pour un plugin spécifique
python vol.py <plugin> -h
# Exemple: python vol.py windows.pslist.PsList -h
# Tenter d'identifier l'OS et les tables de symboles appropriées
python vol.py -f <image> frameworkinfo.FrameworkInfo
# Alternative plus ciblée (recommandée) :
python vol.py -f <image> banners.Banners # Tente d'identifier via des signatures connues
python vol.py -f <image> layerwriter.LayerWriter # Tente d'identifier la couche OS
|
[!Astuce]
Volatility 3 tente de détecter automatiquement l'OS. Si cela échoue, vous devrez peut-être fournir manuellement les tables de symboles (moins courant que les profils de Volatility 2).
윈도우 Plugins Windows (windows.*
)
Analyse des Processus
| # Lister les processus actifs (similaire au Gestionnaire des tâches)
python vol.py -f <image> windows.pslist.PsList
# Lister les processus en incluant ceux terminés ou cachés (scan plus profond)
python vol.py -f <image> windows.psscan.PsScan
# Afficher l'arborescence des processus (relations parent/enfant)
python vol.py -f <image> windows.pstree.PsTree
# Afficher la ligne de commande utilisée pour lancer chaque processus
python vol.py -f <image> windows.cmdline.CmdLine
# Lister les DLL chargées par chaque processus
python vol.py -f <image> windows.dlllist.DllList
# Lister les modules chargés dans le noyau et les processus
python vol.py -f <image> windows.modules.Modules
# Lister les handles ouverts par processus (fichiers, clés de registre, etc.)
python vol.py -f <image> windows.handles.Handles [--pid <PID>]
# Afficher les variables d'environnement des processus
python vol.py -f <image> windows.envars.Envars [--pid <PID>]
|
- Interprétation : Comparez
pslist
et psscan
pour trouver des processus cachés (présents dans psscan
mais pas pslist
). Examinez pstree
pour des relations parent/enfant suspectes (ex: svchost.exe
lancé par explorer.exe
). Vérifiez cmdline
pour des arguments inhabituels. dlllist
peut révéler des DLL injectées. handles
montre les ressources utilisées par un processus.
Analyse Réseau
| # Lister les connexions réseau actives et en écoute (similaire à netstat)
python vol.py -f <image> windows.netscan.NetScan
# Lister les sockets ouverts
python vol.py -f <image> windows.sockets.Sockets
# Lister les informations réseau détaillées (inclut plus que netscan)
python vol.py -f <image> windows.netstat.NetStat
|
- Interprétation : Recherchez des connexions vers des adresses IP externes suspectes, des ports inhabituels en écoute, ou des processus système communiquant sur le réseau alors qu'ils ne le devraient pas.
Analyse du Registre
| # Lister les ruches (hives) du registre chargées en mémoire
python vol.py -f <image> windows.registry.hivelist.HiveList
# Afficher les clés et valeurs d'une ruche spécifique (nécessite l'offset de la ruche obtenu via hivelist)
python vol.py -f <image> windows.registry.printkey.PrintKey --hive-offset <offset> [--key <chemin_cle>]
# Rechercher des clés de persistance (Run, RunOnce, etc.)
# (Nécessite souvent de cibler les ruches NTUSER.DAT ou SOFTWARE)
python vol.py -f <image> windows.registry.printkey.PrintKey --hive-offset <offset_ruche_user_ou_software> --key "Microsoft\\Windows\\CurrentVersion\\Run"
# Extraire les hashes de mots de passe depuis les ruches SAM et SYSTEM
python vol.py -f <image> windows.hashdump.Hashdump [--sam-offset <offset>] [--system-offset <offset>]
# Note: Les offsets sont souvent nécessaires si plusieurs ruches sont trouvées.
# Afficher l'historique UserAssist (programmes lancés par l'utilisateur via l'interface graphique)
python vol.py -f <image> windows.registry.userassist.UserAssist
|
- Interprétation :
hivelist
est la première étape pour trouver les ruches. printkey
permet d'explorer des clés spécifiques (ex: persistance, configuration). hashdump
est crucial pour récupérer les hashes NTLM locaux. userassist
montre l'activité récente de l'utilisateur.
Analyse du Système de Fichiers (en Mémoire)
| # Scanner la mémoire à la recherche d'objets fichiers
python vol.py -f <image> windows.filescan.FileScan
# Dumper des fichiers spécifiques trouvés avec filescan (basé sur leur offset mémoire)
python vol.py -f <image> windows.dumpfiles.DumpFiles --virtaddr <offset_fichier> --output-dir <dossier_sortie>
# Alternative : dumper basé sur le nom (peut être moins fiable)
# python vol.py -f <image> windows.dumpfiles.DumpFiles --physaddr <offset_physique> --name-regex ".*\\.exe" -D <dossier_sortie>
|
- Interprétation :
filescan
peut trouver des fichiers qui étaient ouverts ou récemment utilisés, y compris des exécutables malveillants ou des fichiers supprimés encore présents en mémoire. dumpfiles
permet de les extraire pour une analyse plus approfondie.
Analyse Kernel et Malware
| # Rechercher des signes d'injection de code dans les processus
python vol.py -f <image> windows.malfind.Malfind [--pid <PID>] [--dump-dir <dossier_sortie>]
# Lister les drivers chargés (modules noyau)
python vol.py -f <image> windows.modules.Modules
# Vérifier les hooks dans la table d'appels système (SSDT)
python vol.py -f <image> windows.ssdt.SSDT
# Afficher les informations de version des fichiers (utile pour vérifier l'authenticité)
python vol.py -f <image> windows.verinfo.VerInfo [--pid <PID>]
|
- Interprétation :
malfind
est puissant pour détecter du code injecté (shellcode, PE injectés) en recherchant des permissions mémoire suspectes (RWX) ou des en-têtes PE anormaux. modules
et ssdt
aident à identifier des rootkits ou des drivers malveillants.
| # Dumper la mémoire d'un processus spécifique
python vol.py -f <image> windows.memmap.Memmap --pid <PID> --dump --output-dir <dossier_sortie>
# Alternative:
# python vol.py -f <image> windows.pslist.PsList --pid <PID> --dump --output-dir <dossier_sortie>
# Extraire le contenu du presse-papiers (Clipboard)
python vol.py -f <image> windows.clipboard.Clipboard
# Extraire l'historique des commandes (consoles cmd.exe)
python vol.py -f <image> windows.cmdscan.CmdScan
# Extraire les MFT (Master File Table) pour analyse de système de fichiers
python vol.py -f <image> windows.mftscan.MFTScan [--dump-dir <dossier_sortie>]
|
🐧 Plugins Linux (linux.*
)
(Moins nombreux que pour Windows mais utiles)
| # Lister les processus
python vol.py -f <image> linux.pslist.PsList
python vol.py -f <image> linux.pstree.PsTree
# Scanner les processus (plus profond)
python vol.py -f <image> linux.psscan.PsScan
# Afficher l'historique Bash en mémoire
python vol.py -f <image> linux.bash.Bash
# Lister les connexions réseau
python vol.py -f <image> linux.netscan.NetScan
# Lister les modules noyau chargés
python vol.py -f <image> linux.lsmod.Lsmod
# Vérifier les appels système (syscall table)
python vol.py -f <image> linux.check_syscall.Check_syscall
# Vérifier la table d'interruption (IDT)
python vol.py -f <image> linux.check_idt.Check_idt
# Afficher les points de montage
python vol.py -f <image> linux.mounts.Mounts
# Extraire des ELFs de la mémoire
python vol.py -f <image> linux.elfs.Elfs --dump-dir <dossier_sortie>
|
🍎 Plugins macOS (mac.*
)
(Encore moins nombreux, mais la base est là)
| # Lister les processus
python vol.py -f <image> mac.pslist.PsList
python vol.py -f <image> mac.pstree.PsTree
# Afficher l'historique Bash en mémoire
python vol.py -f <image> mac.bash.Bash
# Lister les connexions réseau
python vol.py -f <image> mac.netstat.NetStat
# Lister les fichiers ouverts (similaire à lsof)
python vol.py -f <image> mac.lsof.Lsof
# Vérifier les appels système (syscall table)
python vol.py -f <image> mac.check_syscall.Check_syscall
# Afficher les points de montage
python vol.py -f <image> mac.mount.Mounts
# Lister les extensions noyau chargées (kexts)
python vol.py -f <image> mac.lsmod.Lsmod
|