# 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](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`). #### Aide et Informations ```bash # 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 ```bash # 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 ```bash # 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 ```bash # 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) ```bash # 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 ```bash # 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. #### Extraction de Données ```bash # 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)* ```bash # 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à)* ```bash # 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 ```