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
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}