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é>}