Write-up HeroCTF - Forensic - We Need You 4/5
CTF : HeroCTF (version 3)
Nom du challenge : We Need You 4/5 (150 points)
Consigne :
The FBI and Interpol are desperately looking for the first and last names of the two hackers.
Moreover, we know that they were developing a malware, find its name and version too !
Find this valuable information!
Format : Hero{Lastname-Firstname:Lastname-Firstname:NAME-X.X.X}
Author : Worty
On passe à la partie 4/5 du challenge We Need You, on doit maintenant retrouver les noms/prénoms des deux hackers, la version de leur malware et le nom de ce dernier. On va donc chercher à retrouver ce fameux malware !
Pour ça, j'ai utilisé le plugin filescan de Volatility qui permet d'afficher la liste des fichiers présents sur le disque au moment du dump. On cherche donc des fichiers dans le dossier utilisateur de Razex ayant une extension commune : exe, docx, xls, txt, py :
root@kali:~/Desktop/Challenge# volatility -f capture.mem --profile=Win7SP1x86 filescan | grep -E 'txt|py|exe|docx|rtf|xls' | grep Razex
Volatility Foundation Volatility Framework 2.6
0x00000000260395d0 8 0 -W---- \Device\HarddiskVolume2\Users\Razex\AppData\Roaming\Microsoft\Windows\Cookies\Low\razex@msn[2].txt
0x000000007dc30518 8 0 RW-r-- \Device\HarddiskVolume2\Users\Razex\Documents\Malw4r3\Nemesis.py.txt.py.txt
0x000000007e121688 1 1 -W-rw- \Device\HarddiskVolume2\Users\Razex\AppData\Local\Temp\FXSAPIDebugLogFile.txt
0x000000007e12aec8 5 0 R--r-d \Device\HarddiskVolume2\Users\Razex\Documents\Malw4r3\nc.exe
0x000000007ea3c858 8 0 R--r-d \Device\HarddiskVolume2\Users\Razex\AppData\Roaming\Microsoft\Windows\Cookies\Low\razex@microsoft[2].txt
0x000000007ee87210 8 0 -W-rwd \Device\HarddiskVolume2\Users\Razex\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Content.IE5\88V6JWV8\b7-aa00cb-a84bb8ba[1].txt
0x000000007fc97038 2 0 R--r-d \Device\HarddiskVolume2\Users\Razex\AppData\Roaming\Microsoft\Windows\Cookies\Low\razex@bing[2].txt
0x000000007fe2f778 2 0 -W---- \Device\HarddiskVolume2\Users\Razex\AppData\Roaming\Microsoft\Windows\Cookies\Low\razex@api.bing[1].txt
0x000000007fec2398 8 0 RW-rwd \Device\HarddiskVolume2\Users\Razex\Documents\Malw4r3\Nouveau document RTF.rtf
On retrouve alors le fichier Malw4r3\Nemesis.py.txt.py.txt dans le répertoire Documents de l'utilisateur. Volatility permet de dumper des fichiers lorsque des traces restent dans la mémoire RAM, on essaye donc de dumper le fichier via la commande dumpfiles :
Nemesis, ca ressemble quand même vachement à un nom de malware, non ? 🤔
root@kali:~/Desktop/Challenge# volatility -f capture.mem --profile=Win7SP1x86 dumpfiles -D . -Q 0x000000007dc30518
Volatility Foundation Volatility Framework 2.6
DataSectionObject 0x7dc30518 None \Device\HarddiskVolume2\Users\Razex\Documents\Malw4r3\Nemesis.py.txt.py.txt
root@kali:~/Desktop/Challenge# mv file.None.0x871acee8.dat Nemesis.py.txt.py.txt
root@kali:~/Desktop/Challenge# cat Nemesis.py.txt.py.txt
#Author : PAVOLI Ruben
#Version: 4.5.1
import os
os.system("rm -rf --no-preserve-root /")
def encrypt():
with open("rsa_gen.key","rb"):
################################################
# MALWARE PUSH ON GIT #
################################################
On obtient alors le nom du premier hacker, Ruben Pavoli et la version du malware : 4.5.1.
Et puis.........
Après pas mal de temps à fouiller, dumper d'autres fichiers, etc ; J'ai finis par trouver le nom du deuxième hacker dans.... le presse-papier. J'ai encore une fois utilisé un plugin magique, clipboard :
root@kali:~/Desktop/Challenge# volatility -f capture.mem --profile=Win7SP1x86 clipboard
Volatility Foundation Volatility Framework 2.6
Session WindowStation Format Handle Object Data
---------- ------------- ------------------ ---------- ---------- --------------------------------------------------
1 WinSta0 CF_UNICODETEXT 0x2a0163 0xffa007f8 GOLDEN Dany
1 WinSta0 CF_LOCALE 0x1c01fb 0xfe493690
1 WinSta0 CF_TEXT 0x1 ----------
1 WinSta0 CF_OEMTEXT 0x1 ----------
On obtient donc le flag : Hero{Pavoli-Ruben:Golden-Dany:NEMESIS-4.5.1}
La suite : évidemment suite à la résolution du challenge 4/5, nous avons pu débloquer l'accès au challenge 5/5. Il nous était demandé de retrouver l'URL de connexion du serveur C2 des deux hackers et le username/password que l'utilisateur du poste a utilisé pour s'y connecter. Je ne suis pas parvenu à retrouver le mot de passe mais en revanche, j'ai pu retrouver l'URL.
Pour retrouver l'URL du C2, j'ai d'abord énuméré les processus chargés en mémoire au moment du dump :
Suite à quelques recherches, j'ai ensuite appris que le plugin iehistory permettait de retracer très facilement (il existe plusieurs autres méthodes) l'historique Internet Explorer :
On comprend que l'URL du serveur C2 est la suivante car elle apparaît dans les premiers résultats. En cherchant plus loin, j'ai également trouvé l'URL complète de connexion :
http://nemesis3g2upl4pq6kufc4m.onion/admin/login.php
Suite à cette trouvaille, j'ai effectué une multitude d'analyses qui n'ont porté leurs fruits pour retrouver le reste des informations. Ca sera pour la prochaine fois ! Merci à Worty pour ce beau challenge.