Voir les deux côtés de quelque chose, c'est toujours bon non?
Vous êtes une APT et un de vos collègues a volé une machine chez une entreprise du CAC40, malheureusement, celle-ci ne veut plus démarrer.. Votre collègue étant un hacker en herbe, il a pensé à faire un dump mémoire avant que la machine rende l'âme !
Retrouvez le fichier qui contient des données confidentielles dans ce dump mémoire !
Début de l'analyse
On a un dump mémoire "memory.dmp" de 1.1Go (=volatility)
On cherche un fichier avec des données confidentielles
La machine volée est une Windows et plus précisément une Win7SP1x86_23418 :
file memory.dmp
memory.dmp: MS Windows 32bit crash dump, PAE, full dump, 262144 pages
python volatility/vol.py -f memory.dmp imageinfo
Volatility Foundation Volatility Framework 2.6.1
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP1x86_23418, Win7SP0x86, Win7SP1x86_24000, Win7SP1x86 (Instantiated with WinXPSP2x86)
AS Layer1 : IA32PagedMemoryPae (Kernel AS)
AS Layer2 : WindowsCrashDumpSpace32 (Unnamed AS)
AS Layer3 : FileAddressSpace (/mnt/v/BZHCTF/FOFO/memory.dmp)
PAE type : PAE
DTB : 0x185000L
KUSER_SHARED_DATA : 0xffdf0000L
Image date and time : 2022-02-23 19:29:05 UTC+0000
Image local date and time : 2022-02-23 11:29:05 -0800
Recherche du fichier secret
Maintenant que nous avons notre profil volatility, nous pouvons pousser nos recherches et lister l'ensemble des fichiers connus de la mémoire via le plugin filescan.
Après avoir trouvé les fichiers, on imagine qu'il ne reste plus qu'a les extraire... mais malheureusement, le contenu des fichiers n'est pas récupérable.
Seul moyen pour retrouver le contenu des fichiers, chercher un processus qui les utilisent. Le plugin pslist nous aide à identifier les différents processus en fonctionnement sur le système.
notepad.exe semble être intéressant à vérifier car il est souvent utilisé pour ouvrir les fichiers .txt
Je dump le premier process (pid=3232) associé à notepad.exe :
Le vidage mémoire (plugin memdump) d'un processus extraira tout de l'état actuel du processus. Le plugin procdump ne fera qu'extraire le code.
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 memdump -p 3232 -D output/
************************************************************************
Writing notepad.exe [ 3232] to 3232.dmp
file output/3232.dmp
output/3232.dmp: DOS executable (COM, 0x8C-variant)
du -h output/3232.dmp
157M output/3232.dmp
Flag !
Après un gros strings/grep sur 'BZHCTF', on ne récupère rien... j'essaye BZHCTF en base64 soit : QlpIQ1RG
On récupère un message indiquant l'arrivée d'un employé ainsi que sa signature, qui est en réalité notre flag : BZHCTF{fr33_cr3d3nti4ls}
strings output/3232.dmp |grep -i -A10 -B10 'QlpIQ1RG'
f\,)
f\,)
f\,)
f\,)
Le nouvel employ
, Matthieu Delkique va nous rejoindre (ouf !)
Ses identifiants de connexion seront :
m.delkique@vulncorp.fr/MatthieuVulnCorp123!
Attenion
bien lui fournir sa signature :
QlpIQ1RGe2ZyMzNfY3IzZDNudGk0bHN9Cg==
FILE0
FILE0
FILE0
FILE0
FILE0
FILE0
FILE0
FILE0
FILE0
FILE0
Il était possible de flag juste via strings/grep :
strings -el memory.dmp |grep -A5 -B5 'QlpIQ1RG'
, Matthieu Delkique va nous rejoindre (ouf !)
Ses identifiants de connexion seront :
m.delkique@vulncorp.fr/MatthieuVulnCorp123!
Attenion
bien lui fournir sa signature :
QlpIQ1RGe2ZyMzNfY3IzZDNudGk0bHN9Cg==
oye Secret.txt
.txt
Fran
ais (France)
\Win
^C