Write-up – Sthack

Nous étions présents à la Sthack cette année encore pour le CTF en équipe. Le challenge a rassemblé 35 équipes, et nous avons fini à la 8ème place avec 15850 points au total :

1

Une des épreuves valant 4200 points et ayant eu d’après les organisateurs un faible taux de résolution était le challenge système « See you on the other side » :

2

Ce challenge était uniquement constitué d’une capture réseau à analyser :

3

A l’ouverture de celle-ci, nous nous apercevons que cette capture ne contient que du trafic Wifi correspondant à la norme 802.11 :

4

Une analyse de l’ensemble des trames nous indique que celles-ci sont chiffrées via le protocole WEP :

5

L’utilisation de l’outil « Aircrack-ng » nous permet de réaliser une attaque de type « brute force » sur cette capture et ainsi de récupérer facilement la clé de chiffrement WEP utilisée :

6

Cette clé peut ensuite être utilisée afin de déchiffrer l’ensemble du trafic :

7

Une analyse du trafic permet d’identifier l’envoi d’un fichier « leo.tar.bz2 » via le protocole FTP sur un serveur externe ayant pour IP 52.49.251.67 :

8

Une fois extraite, cette archive contient un certain nombre de fichiers :

9

Outre les images de nos Pokémons préférés, 3 fichiers sont présents dans le dossier « .ssh » :

10

Nous avons donc une clé privée, mais pas l’adresse IP sur laquelle nous connecter. Un petit coup d’œil dans le fichier « know_hosts » nous révèle que celui-ci est … haché à l’aide de l’algorithme SHA1:

11

Nous devons donc réaliser une attaque de type « brute force » sur l’IP du serveur cible.

Mais quelle plage d’IP utiliser ? L’outil « whois » sur l’IP « 52.49.162.186 » nous donne plusieurs informations dont la plage IP « 52.48.0.0/14 » :

12

Le script Python suivant (https://github.com/Churro/bruteforce-known-hosts) permet de bruteforcer la plage IP identifiée à la recherche du serveur cible :

13

Bingo!!!

14

Il ne nous reste plus qu’à nous connecter sur le serveur et récupérer le flag. Nous essayons donc plusieurs comptes et trouvons ainsi le bon compte utilisateur (leo) :

15

Une fois connecté, le fichier « code_teleporteur » nous semble intéressant :

16

Bien entendu, les permissions d’accès sur celui-ci sont restreintes :

17

Une élévation de privilège est donc nécessaire. Une petite recherche des fichiers appartenant à l’utilisateur « tp » et ayant le bit suid d’activé permet de trouver un binaire intéressant :

18

En utilisant une des fonctionnalités de l’outil, nous pouvons exécuter des commandes systèmes :

19

Et ainsi récupérer le flag de ce challenge :

20