On commence par télécharger le fichier analyse-memoire.tar.xz
Puis on le décompresse, on obtient un fichier avec une extension .dmp
Un fichier avec l’extension .dmp
est souvent un dump mémoire, c’est-à-dire une copie brute de la mémoire vive (RAM) d’un système à un moment donné.
L’extension .dmp
ne garantit pas qu’il s’agit forcément d’un dump mémoire. D’autres logiciels utilisent cette extension pour des types de fichiers différents. Cependant, l’énoncé est clair, il s’agit bien d’une capture mémoire.
Un outil très populaire dans l’analyse de mémoire est volatility. Sur mes premiers tests volatilty 2 ne fonctionnait pas avec le dump, j’ai donc installé volatilty 3.
Les commandes sont un peu différentes, mais restent relativement simples.
Nous allons rechercher trois éléments :
- le nom d’utilisateur,
- le nom de la machine,
- l’adresse IPv4.
Etape 1 : Installation volatility 3
On clone le repo de volatility3.
git clone https://github.com/volatilityfoundation/volatility3.git
Ensuite, on se place dans le répertoire.
cd volatility3/
On crée un environnement virtuel Python
python3 -m venv venv && . venv/bin/activate
Installation des dépendances (en se basant sur pyproject.toml)
pip install -e ".[dev]"
Etape 2 : récupérer le nom d’utilisateur
On va récupérer dans les variables d’environnement toutes celles nommées USERNAME.
vol -f /mnt/c/Users/cyrha/Desktop/demo/file.dmp windows.envars | grep -Ei 'USERNAME'
Il y a plusieurs résultats. Ceux qui nous intéressent, c’est ceux où on est sûr que c’est l’utilisateur qui a lancé l’application (ou le service), par exemple SkypeApp.exe, OneDrive.exe, soffice.exe ou encore powershell.exe, etc.
Vous pouvez facilement confirmer en effectuant une recherche supplémentaire :
vol -f /mnt/c/Users/cyrha/Desktop/demo/file.dmp windows.envars | grep -Ei 'C:\\Users\\'
En effectuant cette recherche, vous trouverez les répertoires utilisateurs, en particulier celui de notre utilisateur courant.
Etape 3 : récupérer le nom d’utilisateur
On va utiliser le même principe.
vol -f /mnt/c/Users/cyrha/Desktop/demo/file.dmp windows.envars | grep -Ei 'COMPUTERNAME'
Dans ce cas, aucune ambiguïté !
Etape 4 : récupérer l’adresse IPv4
En recherchant les connexions réseau actives, nous devrions trouver l’adresse IP.
vol -f /mnt/c/Users/cyrha/Desktop/demo/file.dmp windows.netscan
En analysant la colonne LocalAddr, on peut, par rapport à la consigne, éliminer les adresses 0.0.0.0 et 127.0.0.1 ainsi que de potentielles IP v6 ; il ne reste qu’une IP.
Nous avons donc maintenant tous les éléments pour reconstituer le flag.
FCSC{<nom d'utilisateur>:<nom de la machine>:<adresse IPv4>}