Hackropole - Analyse Mémoire - Pour commencer 1/2
Introduction :
URL : https://hackropole.fr/fr/challenges/forensics/fcsc2025-forensics-analyse-memoire-1/
Nom du challenge : Analyse Mémoire - Pour commencer (1/2)
Difficulté : Intro
Contexte : On analyse une capture mémoire et l’on doit identifier des informations système : le nom d’utilisateur, le nom de la machine et l’adresse IPv4.
Format du flag : FCSC{"nom d'utilisateur":"nom de la machine":"adresse IPv4"}
Déroulé / Résolution :
- Extraction du dump
On commence par extraire le dump contenu dans l’archive :
caelinceptus@2600:~/Hackropole/memory_analysis_intro$ tar xvf analyse-memoire.tar.xz
# -> analyse-memoire.dmp
- Récupérer le nom d'utilisateur (
USERNAME) :
Nous utilisons Volatility 3 et le plugin windows.envars pour lister les variables d’environnement par processus. Ici j’exécute Volatility depuis une image Docker (remplacez le chemin si besoin) :
caelinceptus@2600:~/Hackropole/memory_analysis_intro_part1$ docker run --rm -v $(pwd):/mnt sk4la/volatility3:latest -f /mnt/analyse-memoire.dmp windows.envars | grep "USERNAME"
Extrait pertinent de la sortie :
656 wininit.exe 0x23f70b715c0 USERNAME SYSTEM
...
824 lsass.exe 0x1838fe03120 USERNAME SYSTEM
936 svchost.exe 0x1f14e603300 USERNAME DESKTOP-JV996VQ$
960 fontdrvhost.ex 0x2461b6d1a30 USERNAME UMFD-0
968 fontdrvhost.ex 0x22221501a30 USERNAME UMFD-1
...
8968 soffice.exe 0x231eb801d00 USERNAME userfcsc-10
5408 msedge.exe 0x15c1fa03540 USERNAME userfcsc-10
6908 msedge.exe 0x1849e803570 USERNAME userfcsc-10
7240 msedge.exe 0x22f35e037c0 USERNAME userfcsc-10
7232 msedge.exe 0x12f5a4037c0 USERNAME userfcsc-10
...
On en déduit que l’utilisateur actif est userfcsc-10 (processus tels que msedge ou soffice indiquent une session utilisateur).
Remarque : windows.hashdump permets aussi d’obtenir la liste des comptes locaux et leurs hashes si nécessaire.- Récupérer le nom de la machine (
COMPUTER)
Toujours avec windows.envars, on filtre pour COMPUTERNAME :
caelinceptus@2600:~/Hackropole/memory_analysis_intro_part1$ docker run --rm -v $(pwd):/mnt sk4la/volatility3:latest -f /mnt/analyse-memoire.dmp windows.envars | grep "COMPUTERNAME"
En sortie :
752 winlogon.exe 0x1beb9a515c0 COMPUTERNAME DESKTOP-JV996VQ
800 services.exe 0x1d51b603120 COMPUTERNAME DESKTOP-JV996VQ
824 lsass.exe 0x1838fe03120 COMPUTERNAME DESKTOP-JV996VQ
...
Le nom de la machine est donc DESKTOP-JV996VQ.
- Récupérer l'adresse IPv4 locale (via
windows.netstat)
Le plugin windows.netstat liste les connexions réseau (TCP/UDP) retrouvées en mémoire, avec les adresses locales / distantes, ports, état, PID, processus et horodatage :
caelinceptus@2600:~/Hackropole/memory_analysis_intro_part1$ docker run --rm -v $(pwd):/mnt sk4la/volatility3:latest -f /mnt/analyse-memoire.dmp windows.netstat
Extrait de la sortie :
Offset Proto LocalAddr LocalPort ForeignAddr ForeignPort State PID Owner Created
0xa50a2791e010 TCPv4 10.0.2.15 59256 2.22.251.7 443 CLOSE_WAIT 6720 SearchApp.exe 2025-04-01 22:15:13.000000 UTC
0xa50a2a0d6ae0 TCPv4 10.0.2.15 65055 52.222.169.27 443 CLOSE_WAIT 7232 msedge.exe 2025-04-01 22:13:43.000000 UTC
0xa50a20b39010 TCPv4 10.0.2.15 49701 13.107.246.254 443 CLOSE_WAIT 6720 SearchApp.exe 2025-04-01 22:11:02.000000 UTC
...
0xa50a2752fab0 TCPv4 10.0.2.15 49683 20.199.120.182 443 ESTABLISHED 3024 svchost.exe 2025-04-01 22:10:54.000000 UTC
0xa50a27bdd460 TCPv4 10.0.2.15 59261 48.209.108.37 443 ESTABLISHED 2040 MsMpEng.exe 2025-04-01 22:17:19.000000 UTC
...
0xa50a25b5e5d0 TCPv4 10.0.2.15 139 0.0.0.0 0 LISTENING 4 System 2025-04-01 22:10:45.000000 UTC
0xa50a263ff650 TCPv4 0.0.0.0 445 0.0.0.0 0 LISTENING 4 System 2025-04-01 22:10:47.000000 UTC
En regardant la colonne LocalAddr et en excluant ::, 0.0.0.0 et 127.0.0.1, on obtient l’adresse locale 10.0.2.15.
- Construction du flag
En regroupant les éléments trouvés :
- utilisateur :
userfcsc-10 - machine :
DESKTOP-JV996VQ - IPv4 :
10.0.2.15
Le flag est donc :
FCSC{userfcsc-10:DESKTOP-JV996VQ:10.0.2.15}
Conclusion :
Ce challenge est une excellente introduction à l’analyse mémoire Windows. Deux plugins de Volatility 3 se révèlent particulièrement utiles :
windows.envars:
Ce module énumère les variables d’environnement présentes en mémoire, regroupées par processus. Il permet notamment d’extraire des informations système telles queUSERNAME(nom de l’utilisateur associé à une session ou à un processus) etCOMPUTERNAME(nom de la machine). Ces variables sont souvent conservées en clair dans la mémoire des processus et constituent un moyen fiable et rapide pour identifier les comptes et l’hôte compromis.windows.netstat:
Ce module reproduit l’équivalent mémoire d’unnetstaten listant les connexions TCP/UDP retrouvées dans la capture : adresse locale, port local, adresse distante, port distant, état de la connexion, PID/processus associé et horodatage de création. Cela permet de :- déterminer l’adresse IP locale utilisée par la machine (en filtrant les valeurs génériques telles que
0.0.0.0,::ou127.0.0.1), - reconstituer les connexions réseau actives ou récentes (écoutes, connexions établies, connexions fermées),
- corréler un socket à un processus PID pour comprendre quels programmes communiquaient et à quel moment (timeline).
- déterminer l’adresse IP locale utilisée par la machine (en filtrant les valeurs génériques telles que
En résumé, l’analyse combinée d’environnements (variables) et d’informations réseau en mémoire offre une vision claire du contexte d’exécution : qui est connecté, sur quelle machine et quelles connexions réseau ont été établies. Pour un analyste débutant, ce challenge illustre bien comment extraire rapidement des indicateurs de compromission et reconstituer une timeline basique d’activité réseau à partir d’un dump mémoire.