Forensic : Extraire des fichiers depuis la table MFT avec Volatility (Part 1) [FR]
En terme d'investigation numérique (Forensic), il existe aujourd'hui de nombreux outils permettant d'extraire de précieuses informations directement depuis la mémoire (RAM) d'un ordinateur/serveur. Il est par exemple possible d'extraire les hashs de mot de passe utilisateur, les clés de chiffrement de volume Bitlocker, l'historique de navigation web, etc...
Il est également possible d'extraire de la mémoire, des fichiers complet, notamment les fichiers stockés dans la table MFT.
Qu'est-ce que la table MFT ?
Le système de fichiers NTFS est largement utilisé par les machines utilisant les OS Windows. Avec NTFS tout est stocké sous forme de fichier, metadata et registre inclus. La table MFT (Master File Table) située à la racine d'une partition NTFS, est le fichier contenant les informations concernant tous les autres éléments de la partition. Elle contient notamment, le nom, le type et l'emplacement de chaque fichier et dossier. Par défaut chaque entrée de la table MFT permet de stocker 1024 octets (Peut être configurée pour stocker jusqu'à 4096 octets). Un fichier dont la taille est inférieur ou égale à 1024 octets, sera stocké directement dans la table (fichier "resident"), s'il dépasse les 1024 octets la table ne contiendra que les informations de son emplacement (fichier "non-resient").
Volatility : MFTParser plugin
Volatility est un Framework python permettant de réaliser des analyses forensics de dump mémoire. Il bénéficie de nombreux plugins permettant l'extraction d'executable, de mot de passe, l'analyse de malware, ... La prise en main et l'utilisation de volatility est plutôt simple et accessible. Pour apprendre à maitriser l'outil, vous pouvez par exemple réaliser les challenges du site root-me.org (Catégorie Forensic).
Le plugin qui nous intéresse pour l'extraction des entrées de la table MFT est "MFTParser".
1. Identification du dump mémoire
Avant de se lancer dans l'analyse de notre dump mémoire, il est préférable de l'identifier. Pour cela, nous utilisons la commande suivante :
user@kali:~# volatility -f mydump imageinfo
-f
spécifie le nom du dump et son chemin.
imageinfo
plugin volatility utilisé.
Profil utilisable : Win7SP1x86_23418, Win7SP0x86 et Win7SP1x86.
2. Extraction des entrées MFT
L'extraction des entrées de la table MFT se fait avec le plugin MFTParser :
user@kali:~# volatility -f dump --profile=Win7SP1x86_23418 mftparser >> mfttable.txt
--profile
spécifie le profil utilisé.
mftparser
plugin volatility utilisé.
>> mfttable.txt
redirection des informations dans le fichier "mfttable.txt".
3. Récupération des données "Resident"
Le fichier "mfttable.txt" contient maintenant les informations à propos des entrées "resident" et "non-resident" stockées en mémoire. Pour trouver les entrées "Resident" il suffit par exemple de faire une recherche sur "0000000000:"
Exemple d'une entrée correspondant à un raccourci "fichier récent" :
L'analyse nous permet de retrouver le chemin complet d'un fichier ouvert récement : "C:\Users\info\Desktop\flag.png" et pourquoi pas d'extraire cette image en utilisant d'autres plugins volatility.
(Il sagit de mon premier article sur Steemit, n'hésitez pas à me faire vos retours !)