Salut les amis. Aujourd’hui, nous allons parler de Volatility. C’est l’un des meilleurs outils utilisé dans le domaine du forensic et de l’analyse de mémoire volatile.
Vous vous demandez sûrement pourquoi analyser une mémoire volatile? Par exemple quand vous avez subit une attaque grâce à l’analyse de la mémoire volatile vous pourrez voir ce qui s’est produit sur votre machine, comment ça été fait et voir les processus qui ont été touché…
Dans cet article nous verrons comment utiliser Volatility pour extraire les informations(processus en cours,toutes les connexions actives, les données dans le cache, les données cachées, les malwares …) dans l’image d’une mémoire volatile que vous pouvez retrouver ici.
Volatility, c’est quoi ?
Le framework Volatility est une collection d’outils open-source, implémenté en Python et qui est multi-plateforme(windows, linux, mac os ..) . Il vous permet de travailler avec des images de mémoire volatile, de les analyser, d’obtenir des données sur les états passés du système, et plus encore.
Les types d’images supportés par volatility sont :
- les mémoires, physique brute/rembourrée,
- firewire,
- le format EWF,
- les fichiers issus d’incident sur des systèmes Windows 32 et 64 bits,
- les fichiers d’Hibernation des systèmes Windows 32 et 64 bits,
- les fichiers MachO 32 and 64 bits,
- les images mémoire VirtualBox,
- les fichiers d’états sauvegardés et snapshots de VMware,
- les images mémoires des machines virtuelles QEMU,
- etc…
Comment installer volatility si vous n’êtes pas sur kali ?
Si vous êtes sur Kali linux, vous trouverez Volatility inclus parmis les outils de la distribution.
Sinon il vous suffit de télécharger la dernière version ici, de décompresser l’archive, d’accorder les droits d’exécution à l’exécutable et il est prêt à être utilisé.
Volatility et l’identification du profil système
Pour commencer, nous devons d’abord définir un profil pour indiquer à volatility de quel système d’exploitation provient l’image de la mémoire .Pour le découvrir nous utiliserons le plug-in imageinfo
. La commande a exécuté dans ce cas est :
volatility -f cridex.vmem imageinfo

Comme nous pouvons le voir sur la sortie de la commande plusieurs profils ont été sugéré, et que le sytème exploitation duquel a été extrait l’image est 32-bit. Nous nous allons choisir le profil WinXPSP2x86
et pour l’utiliser dans la suite nous utiliserons l’option --profile=WinXPSP2x86
.
Volatility et la liste des processus
Pour voir la liste des processus en cours, nous avons utilisé le plug-in pslist
. Ils nous fournira des détails comme l’adresse mémoire du processus, le nom du processus en cours d’exécution, la date et l’heure de lancement du processus …
volatility -f cridex.vmem --profile=WinXPSP2x86 pslist

Grâce au plug-in pstree
, nous aurons les informations obtenues grâce au plugin pslist
représentée avec une relation enfant-parent et tous les processus inconnus ou anormaux. Le processus fils est représenté par une indentation et des points.
volatility -f cridex.vmem --profile=WinXPSP2x86 pstree

Le plug-in psxview
listera les processus qui essaie de se cacher lorsqu’il s’exécute sur l’ordinateur.
volatility -f cridex.vmem --profile=WinXPSP2x86 psxview

Si un des processus était caché dans les champs pslist et psscan il y aurait la valeur false.
Volatility et les dlls
Pour afficher les DLL de tous les processus en cours d’exécution nous avons utilisé le plug-in dlllist.
volatility -f cridex.vmem --profile=WinXPSP2x86 dlllist

Dans la capture ci-dessus nous pouvons voir les dll associés aux processus smss.exe et crss.exe. Nous avons aussi la possibilité d’affichier les DLL d’un processus en particulier en spécifiant son pid. Nous allons prendre l’exemple du processus winlogon.exe dont le pid est 608.
volatility -f cridex.vmem --profile=WinXPSP2x86 dlllist -p 608

Volatility et les connexions réseaux
Volatility propose plusieurs plug-in permettant d’extraire des informations de connexion.Parmis ces plug-in nous avons le plugin connscan
qui permet de scanner les connexions TCP.
volatility -f cridex.vmem --profile=WinXPSP2x86 connscan

Nous avons aussi le plug-in sockets
qui imprime la liste des sockets ouverts.
volatility -f cridex.vmem --profile=WinXPSP2x86 sockets

Volatility et les commandes exécutées
Un autre plug-in de Volatility est cmdscan
qui recherche l’historique des commandes exécutées sur la machine.
volatility -f cridex.vmem --profile=WinXPSP2x86 cmdscan
La commande n’a rien donné dans notre cas. Il est aussi possible d’afficher les arguments de ligne de commande des processus grâce au plug-in cmdline
.
volatility -f cridex.vmem --profile=WinXPSP2x86 cmdline

Conclusion
Comme nous venons de le voir, volatility est un outil qui nous offre des fonctionnalités puissantes nous permettant de récupérer diverses informations à partir de l’image d’un mémoire volatile.
J’espère vous retrouver dans une suite de ce tutoriel autour de cet outil où nous verrons comment faire des analyses plus approfondies d’une image de mémoire volatile.