🇫🇷 404 CTF 2022 – Hackllebarde ransomware 2/4

challenge 404 ctf

Création d’un profil volatility

Ce fut ma première analyse d’une capture mémoire Linux. En effet, volatility intègre par défaut les profils pour Windows mais ce n’est pas le cas pour Linux. Il faut donc générer nous même ces profils avec une procédure indiquée sur le github de volatility. Je vous passe cette étape mais cet article traîte de ce sujet plus en détails.

Trouver le fichier malveillant

Comme à mon habitude, je vérifie l’arbre d’exécution des processus dans la mémoire avec un pstree :

python2 ./volatility/vol.py -f dumpmem.raw --profile=LinuxUbuntu18_04-5_4_0-107-x64x64 linux_pstree

...bash              2586            1000
...bash              2607            1000
...bash              2627            1000
....JeNeSuisPasDuTo  2645            1000
.....sh              2646            1000
......nc             2647            1000
...bash              2662            1000
....sudo             2693
.....insmod          2694

.firefox             1679            1000

On voit un processus dont le nom est JeNeSuisPasDuToutUnFichierMalveillant. Un nom pas du tout suspect ^.^. Ce processus semble lancer un shell qui par la suite lancera netcat.

L’on peut ensuite regarder où est ce que ce fichier apparaît dans le dump avec un grep. Et l’on tombe sur une partie intéressante :

grep -A 5 -B 5 'JeNeSuisPasDuToutUnFichierMalveillant' ./dumpmem.raw

superadmin@EVIL-SERV-81:~$ ls /root/
ls: impossible d ouvrir le répertoire '/root/': Permission non accordée
superadmin@EVIL-SERV-81:~$ pwd
/home/superadmin
superadmin@EVIL-SERV-81:~$ ls
Bureau     JeNeSuisPasDuToutUnFichierMalveillant  Musique          Vidéos
Documents  LiME                                   Public
Images     Modèles                                Téléchargements
superadmin@EVIL-SERV-81:~$ ./JeNeSuisPasDuToutUnFichierMalveillant
Listening on [0.0.0.0] (family 0, port 13598)
Connection from 192.168.61.137 38088 received!

Ici l’option -A 5 -B 5 spécifie à la commande grep que l’on souhaite afficher 5 lignes avant et après la ligne qui aura matché. Cela permet d’avoir plus de contexte.

Ici l’on voit que notre executable suspect écoute sur le port 13598 de la machine locale. Une connexion est ensuite initié par la machine 192.168.61.137.

Trouver le lien

Bon il nous reste plus qu’à trouver le lien. L’énoncé étant assez flou, au départ je souhaitais utiliser le module yarascan pour scanner la présence de liens dans la mémoire du processus firefox. Mais manque de chance ce module ne marchait pas. Donc là je vous avoue que j’ai fait ça de manière assez sale ^^ coucou grep c’est encore moi !

grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" ./dumpmem.raw --binary-files=text | sort -u

Je tombe alors sur plusieurs liens "suspects" et notamment une vidéo :

https://www.youtube.com/watch?v=3Kq1MIfTWCE

test de pénétration

Capture the flag

En testant au hasard tous les liens, avec les informations trouvées auparavant on tombe sur le flag suivant : 404CTF{192.168.61.137:13598:JeNeSuisPasDuToutUnFichierMalveillant:https://www.youtube.com/watch?v=3Kq1MIfTWCE}