Un agent compromis 2/3 (Forensics) - 404CTF 2022

Un agent compromis 2/3 (Forensics) - 404CTF 2022

Fichiers du challenge Principe:
Analyser le dump réseau pour retrouver, dans un tunnel DNS, les fichiers exfiltrés par l'insider

Le challenge

Le challenge nous demande de savoir quels fichiers ont été exfiltrés en analysant un dump réseau (dispo ici) ( les autres fichiers du challenge sont là )

Tunnel DNS

On reprend le script de Un agent compromis 1/3 (Forensics) et son tunnel DNS
On cherche les requêtes DNS du dump…
…et qui corresponde au domaine principal *.hallebarde.404ctf.fr

Cette forme de tunnel DNS est simpliste, mais existe aussi IRL: l'attaquant dispose d'un nom de domaine type 404ctf.fr et du serveur DNS associé. Ce serveur DNS de l'attaquant (qui a autorité sur le domaine, puisque c'est le domaine de l'attaquant) va alors logger toutes les requêtes DNS qu'il reçoit (*.hallebarde.404ctf.fr). A partir de ces logs, l'attaquant peut reconstruire les données d'un fichier ainsi exfiltré.

Le tunnel DNS marche ainsi:
- Une requête DNS "never-gonna-give-you-up" est faite pour marquer le début d'une exfiltration
- Une requete est faite pour exfiltrer le nom du fichier, sous forme d'une chaine hexadécimale
- Une requête est faite en hexa ("begin") pour marquer le début du fichier
- Le contenu du fichier est exfiltré par paquets de 32 octets
- Une requête est faite en hexa ("end") pour marquer la fin du fichier

On décode l'hexadécimal du sous-domaine, et on a le nom du fichier (flag.txt): c'est prometteur
Pour voir, j'ai décodé les codes hexadécimaux des mots-clefs: "begin" et "end"
Pour faciliter le scripting, j'exporte le contenu du DNS dans un fichier depuis Wireshark (en rajoutant au passage une colonne "Name" avec le nom de domaine de la requête DNS)
On crée alors un script PHP pour extraire les noms de domaine du fichier qu'on a exporté
Et on va le compléter en décodant ces noms de domaines pour retrouver les fichiers originaux
L'un des fichiers ainsi exfiltré est le script python lui-même
On se retrouve alors avec 4 fichiers exfiltrés par cette méthode
Et on se fait troller :) le fichier flag.txt ne contient pas le flag! On a donc été bien inspiré de reconstruire tous les fichiers plutôt que "flag.txt" seulement

Flag

Mais en relisant le challenge, on nous demande en fait la liste des noms des fichiers dans l'ordre:
404CTF{exfiltration.py,flag.txt,hallebarde.png,super-secret.pdf}

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil