Présentation d’un write-up de résolution du challenge « Network – Kebab STO » des qualifications du CTF de la Nuit du Hack 2018.
Le weekend du 31/03/2018 se déroulait les pré-qualifications pour la Nuit du Hack 2018 sous forme d’un CTF Jeopardy. Ayant eu l’occasion et le temps d’y participer avec quelques collègues et amis, voici un write-up de résolution d’un des challenges auquel nous avons pu participer.
- Catégorie : Network
- Nom : Kebab STO
- Description : The challenge consists in finding the flag into a network capture.
- URL : tcp://kebabsto.challs.malice.fr:8888/
- File : kebabsto.pcapng (149.66kB – c714bd030c959275df197ca7a392c21d3f68fa9fd6a161ab7ffa5e896ef7f0eb)
- Points : 350
Ce challenge consistait en une analyse d’un fichier pcapng fourni et d’en extraire le flag. Un service TCP sur le domaine kebabsto.challs.malice.fr:8888 était également disponible.
En ouvrant avec Wireshark ce kebabsto.pcapng, on creuse tout d’abord au niveau des objets qui peuvent être exportés. De là on remarque que deux fichiers sont exportables via des échanges « HTTP » :
Le premier, correspond au code source HTML d’un « index of » référençant un unique fichier « kdsqfkpdsdf », et le second est ce fichier lui-même « kdsqfkpdsdf » que nous pouvons donc récupérer.
Ce fichier s’avère être un fichier ZIP que l’on extrait :
Avant de poursuivre sur l’analyse de ce fichier ZIP, continuons de creuser le PCAPNG initial. Celui-ci contient plusieurs requêtes d’échange d’email (IMAP) que l’on peut suivre :
Cet échange IMAP est authentifié, crédentiels aisés à récupérer (c’est toujours ça) :
AHRvbWF0ZUBkZWJpYW4ueW8AdG9tYXRlMTIz Base64 decode : tomate@debian.yo:tomate123
De plus, à la fin de l’échange IMAP, une pièce jointe est présente en base64 :
On décode et récupère le fichier via un outil online :
Ce fichier est également une archive ZIP comprenant deux fichiers :
- docs/pubkey.pem : une clé publique de 1024bits semblant résistante à toutes nos attaques RSA (factordb, Wiener, etc.).
- docs/cipherText : un texte chiffré au format décimal
Un mail au sein des échanges IMAP/SMTP est également intéressant. Celui-ci précise ce que réalise le service TCP sur le port 888 indiqué par le challenge :
They also retrieved a public key and an interesting cipher text
(attached documents).Besides, they also found a service at mydomainndh.ndh (port 55555) which
decrypts every text encrypted with the public key, apart from the
interesting one.
Mis à part la co(q)uille sur le port (8888 au lieu de 5555), on comprend que le fichier « pubkey.pem » équipe le service TCP online pour déchiffrer tout message chiffré qu’on lui transmettrait. Effectuons un test avec le « cipherText » récupéré :
72873754879996948796542757182427480866384878894019674005699447004829908491467629529161961884224325941110935083467870715412599916138560976722953815670278067115980556377912852138532905866093650699880301357138301236748217037629036311469031537013958415575513723738671978421707050599317605219729945496472798064172
On se connecte au service 8888 en TCP, soumettons ce cipherText et recevons un retour que l’on s’empresser de décoder en ASCII :
Nous obtenons ce qui ressemble fortement à un mot de passe, à voir comment et quand l’utiliser…
Revenons-en au fichier kdsqfkpdsdf récupéré au sein d’échange HTTP et qui s’avère être un ZIP. Il contient le fichier lkdjflknezcz qui est également un fichier PCAP :
Analysons le via Wireshark :
De nombreux échanges Wifi chiffrés par WPA avec un point-d’accès du nom de « wifiAccess » semblent visibles. Des paquets d’authentification sont présents. Tentons de casser la clé via la traditionnelle wordlist rockyou.txt :
Bingo, la clé WPA est « abcdefgh ». Déchiffrons le fichier PCAP à partir de cette clé :
Puis analysons son contenu :
- Des trames semblent supprimées (nous ne voyons que des acquittement TCP) ;
- D’autres échanges IMAP avec des authentifications (fromage@debian.yo:fromage123) ;
- Des échanges « FTP » avec le transfert d’un fichier que nous récupérons au format hexadécimal :
On régénère le fichier transmis par FTP via un script Python et l’analysons :
De nouveau un fichier ZIP ! Seulement celui-ci semble protégé par un mot de passe. Essayons ceux trouvés jusqu’à présent (tomate123, fromage123, la clé WPA, ainsi que celui via le service sur le port 8888) :
YES ! C’est celui issu du service TCP sur le port 8888, à savoir « Th1s1s2P@ss_W0rd%M0f0 ». Un nouveau fichier est extrait slkfdsflj contenant du texte ASCII :
Salutations à toute l’équipe, on remet ça quand vous voulez 😉 // Gr3etZ