Solution de Cyrhades pour Analyse mémoire 1/5 - Exfiltration

forensics windows mémoire

5 juin 2025

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