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 5 éléments :
- <process_name> est le nom du processus exécutant le malware,
- <process_id> est le numéro du processus (PID) exécutant le malware,
- <adresse_ip_distante> est l’adresse IP du serveur controlé par l’attaquant,
- <port_distant> est le port utilisé sur le serveur controlé par l’attaquant et
- <protocole utilisé> est le protocole utilisé pour la communication avec le serveur de l’attaquant (TCP ou UDP).
Étape 1 : Installation DE 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]"
Étape 2 : récupérer des informations sur les connections réseaux
vol -f /mnt/c/Users/cyrha/Desktop/demo/hackropole/memoire.dmp windows.netscan
On va exclure les connexions locales (0.0.0.0 ou ::)
vol -f /mnt/c/Users/cyrha/Desktop/demo/hackropole/memoire.dmp windows.netscan | grep -Ev '0\.0\.0\.0|::'
Analyse rapide des résultats
Ce qui semble légitime :
msedge.exe (navigateur Edge) SearchApp.exe (recherche Windows) svchost.exe (services Windows) smartscreen.exe, MsMpEng.exe (antivirus)
Ce qui est étrange :
rundll32.exe 2025-04-01 22:11:15 UTC ESTABLISHED to 100.68.20.103
Une connexion à l’extérieur n’est pas normale pour ce binaire.
Pour voir uniquement la ligne qui nous intéresse :
vol -f /mnt/c/Users/cyrha/Desktop/demo/hackropole/memoire.dmp windows.netscan 2>/dev/null | awk '$1 == "Offset" || $0 ~ /rundll32\.exe/'
Offset Proto LocalAddr LocalPort ForeignAddr ForeignPort State PID Owner Created
0xa50a29eaea60 TCPv4 10.0.2.15 49709 100.68.20.103 443 ESTABLISHED 1800 rundll32.exe 2025-04-01 22:11:15.000000 UTC
Étape 3 : On va récupérer des informations sur le processus rundll32.exe
vol -f /mnt/c/Users/cyrha/Desktop/demo/hackropole/memoire.dmp windows.pslist 2>/dev/null | awk '$1 == "PID" || $1 == 1800'
PID PPID ImageFileName Offset(V) Threads Handles SessionId Wow64 CreateTime ExitTime File output
1800 936 rundll32.exe 0xa50a270b9200 4 - 0 False 2025-04-01 22:10:45.000000 UTC N/A Disabled
Étape 4 : Construire le Flag avec les informations récupérées
process_name=rundll32.exe
process_id=1800
adresse_ip_distante=100.68.20.103
port_distant=443
protocole utilisé=TCP
FCSC{<process_name>:<process_id>:<adresse_ip_distante>:<port_distant>:<protocole utilisé>}