Des deux côtés 1/2
Catégorie : Forensic
Points : 500
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 !
- 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
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.
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 filescan |tee filescan.txt
Je pars de l'hypothèse que le fichier confidentiel en question se trouve dans l'espace perso de la victime, et effectivement, on en trouve 2 :
- Employe Secret.txt
- Resultat Entretien 2021.txt
cat filescan.txt |grep Users
...
0x000000003ea68308 8 0 R--rw- \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential\Employe Secret.txt
0x000000003f17b1e8 1 1 R--rw- \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential
0x000000003f1a3f80 1 1 R--rw- \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential
0x000000003fd0af80 8 0 R--rw- \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential\Resultat Entretien 2021.txt
...
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.
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003ea68308 --name 'Employe Secret.txt' -D output/
DataSectionObject 0x3ea68308 None \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential\Employe Secret.txt
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003fd0af80 --name 'Resultat Entretien 2021.txt' -D output/
DataSectionObject 0x3fd0af80 None \Device\HarddiskVolume1\Users\Daniel\Documents\RH-Documents\Confidential\Resultat Entretien 2021.txt
ls output/
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
- PID 3232
- PID 3732
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 pslist
Volatility Foundation Volatility Framework 2.6.1
Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit
---------- -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0x84133270 System 4 0 77 511 ------ 0 2022-02-23 18:09:02 UTC+0000
0x854f4020 smss.exe 224 4 2 29 ------ 0 2022-02-23 18:09:02 UTC+0000
0x85748030 csrss.exe 304 296 9 338 0 0 2022-02-23 18:09:03 UTC+0000
0x85b9bd40 wininit.exe 340 296 3 75 0 0 2022-02-23 18:09:03 UTC+0000
0x85b9c578 csrss.exe 352 332 9 209 1 0 2022-02-23 18:09:03 UTC+0000
0x85c23d40 winlogon.exe 392 332 5 130 1 0 2022-02-23 18:09:04 UTC+0000
0x85cac030 services.exe 444 340 7 196 0 0 2022-02-23 18:09:04 UTC+0000
0x85cba2d8 lsass.exe 452 340 6 558 0 0 2022-02-23 18:09:04 UTC+0000
0x85cbc620 lsm.exe 468 340 9 141 0 0 2022-02-23 18:09:04 UTC+0000
0x85f2bc08 svchost.exe 576 444 9 353 0 0 2022-02-23 18:09:04 UTC+0000
0x85f3d030 svchost.exe 636 444 7 250 0 0 2022-02-23 18:09:05 UTC+0000
0x854f3668 sppsvc.exe 860 444 4 147 0 0 2022-02-24 03:09:07 UTC+0000
0x84c07030 svchost.exe 900 444 14 314 0 0 2022-02-24 03:09:08 UTC+0000
0x84c08800 svchost.exe 924 444 40 1256 0 0 2022-02-24 03:09:08 UTC+0000
0x84c8d030 svchost.exe 972 444 19 450 0 0 2022-02-24 03:09:08 UTC+0000
0x84cc6030 audiodg.exe 1004 972 4 121 0 0 2022-02-24 03:09:08 UTC+0000
0x85aa6810 svchost.exe 1044 444 10 265 0 0 2022-02-24 03:09:09 UTC+0000
0x84cd8410 svchost.exe 1068 444 19 490 0 0 2022-02-24 03:09:09 UTC+0000
0x84d04d40 TrustedInstall 1180 444 6 261 0 0 2022-02-24 03:09:10 UTC+0000
0x85f9b030 spoolsv.exe 1340 444 12 293 0 0 2022-02-24 03:09:10 UTC+0000
0x85fe0030 svchost.exe 1380 444 19 315 0 0 2022-02-24 03:09:10 UTC+0000
0x85550718 svchost.exe 1692 444 6 94 0 0 2022-02-24 03:09:11 UTC+0000
0x84e3e4d0 taskhost.exe 772 444 8 208 1 0 2022-02-24 03:09:17 UTC+0000
0x84c7ac88 dwm.exe 848 900 3 71 1 0 2022-02-24 03:09:17 UTC+0000
0x84c7f9d8 explorer.exe 880 756 32 881 1 0 2022-02-24 03:09:17 UTC+0000
0x84e79508 regsvr32.exe 1864 880 0 -------- 1 0 2022-02-24 03:10:06 UTC+0000 2022-02-24 03:10:07 UTC+0000
0x85fc0030 svchost.exe 1868 444 11 144 0 0 2022-02-24 03:11:11 UTC+0000
0x84dde0b0 svchost.exe 1724 444 9 311 0 0 2022-02-24 03:11:11 UTC+0000
0x8430dc38 msiexec.exe 3820 444 6 305 0 0 2022-02-23 19:18:52 UTC+0000
0x8545d368 armsvc.exe 2660 444 6 244 0 0 2022-02-23 19:19:17 UTC+0000
0x842a3168 SearchIndexer. 3268 444 11 522 0 0 2022-02-23 19:19:24 UTC+0000
0x84356ca8 AdobeARMHelper 2484 2660 0 -------- 0 0 2022-02-23 19:20:53 UTC+0000 2022-02-23 19:20:54 UTC+0000
0x85ee3d40 firefox.exe 2360 816 0 -------- 1 0 2022-02-23 19:24:17 UTC+0000 2022-02-23 19:24:39 UTC+0000
0x84e17570 RH-Appli-Conne 3936 880 1 36 1 0 2022-02-23 19:24:45 UTC+0000
0x843485b0 RH-Appli-Conne 1668 880 3 94 1 0 2022-02-23 19:25:07 UTC+0000
0x84273030 cmd.exe 1472 1668 0 -------- 1 0 2022-02-23 19:25:24 UTC+0000 2022-02-23 19:25:27 UTC+0000
0x8549b108 WMIADAP.exe 1152 924 5 86 0 0 2022-02-23 19:27:21 UTC+0000
0x84283830 WmiPrvSE.exe 3072 576 8 115 0 0 2022-02-23 19:27:21 UTC+0000
0x84f7e630 notepad.exe 3232 880 1 63 1 0 2022-02-23 19:27:43 UTC+0000
0x86081218 notepad.exe 3732 880 1 63 1 0 2022-02-23 19:27:46 UTC+0000
0x84f3cd40 RH-Appli-Conne 3540 880 1 20 1 0 2022-02-23 19:27:54 UTC+0000
0x842ef7e0 RH-Appli-Conne 3504 880 5 99 1 0 2022-02-23 19:28:06 UTC+0000
0x84da8938 cmd.exe 2404 3504 0 -------- 1 0 2022-02-23 19:28:10 UTC+0000 2022-02-23 19:28:12 UTC+0000
Le plugin cmdline permet de confirmer cette hypothèse :
python volatility/vol.py -f memory.dmp --profile=Win7SP1x86_23418 cmdline |grep -A1 -B1 notepad
************************************************************************
notepad.exe pid: 3232
Command line : "C:\Windows\system32\NOTEPAD.EXE" C:\Users\Daniel\Documents\RH-Documents\Confidential\Resultat Entretien 2021.txt
************************************************************************
notepad.exe pid: 3732
Command line : "C:\Windows\system32\NOTEPAD.EXE" C:\Users\Daniel\Documents\RH-Documents\Confidential\Employe Secret.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
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 :
[email protected]/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 :
[email protected]/MatthieuVulnCorp123!
Attenion
bien lui fournir sa signature :
QlpIQ1RGe2ZyMzNfY3IzZDNudGk0bHN9Cg==
oye Secret.txt
.txt
Fran
ais (France)
\Win
^C
Dernière mise à jour 11mo ago