NDH2K17 - Rent a Kevin

Ce challenge se déroulait sur un service caché du réseau d'anonymisation Tor, à cette adresse : http://ndhzwarzrankrxzt.onion/

L'un des moyens pour s'y connecter est de télécharger le Tor Browser. C'est une version de Firefox modifiée par l'équipe de développement de Tor afin de l'adapter au réseau et pouvoir surfer sur le Web de manière anonyme (comprendre ici : qui offre la possibilité de se protéger des sites instrusifs qui pistent leurs utilisateurs). Il permet aussi de se connecter aux services Web dits "cachés", car seulement accessibles via le réseau Tor.

On tombe sur une page Web classique, qui vends différents services. D'abord, notre attention est captée par cette petite phrase en fin de description :

We manage our clients through a very secure administration interface.

Une interface d'administration ? On commence à lancer un scan pour tenter de retrouver un éventuel formulaire de login à l'interface d'administration, en vain.

À noter que pour utiliser nos outils habituels, il faut utiliser (mais il existe plein d'autres solutions différentes) l'outil proxychains pour atteindre l'adresse en .onion au sein du réseau Tor. La syntaxe est la suivante :

$ proxychains [cmd] [cmd_options]

Après nos premières tentatives infructueuses, nous avons changé de stratégie. L'adresse IP d'un service caché est par nature masquée à l'utilisateur qui s'y connecte : ainsi, il ne pourra pas retrouver la véritable IP du serveur, sa location, etc. L'idée est de trouver ici un moyen de désanonymiser le service, et retrouver la véritable IP de celui-ci.

On lance donc classiquement un scan de ports avec nmap pour voir si des infos intéressantes peuvent être collectées sur le serveur en question :

$ proxychains nmap ndhzwarzrankrxzt.onion
Nmap scan report for ndhzwarzrankrxzt.onion (224.0.0.1)
Host is up (1.7s latency).
rDNS record for 224.0.0.1: all-systems.mcast.net
Not shown: 98 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

On peut voir ici que le serveur expose un serveur SSH, ce qui me rappelle un challenge de l'édition 2016 de l'Ecko Party CTF. En effet, l'empreinte de la clé publique qui authentifie l'hôte SSH est unique. En cherchant avec des outils de type Shodan il est possible de retrouver la réelle adresse IP du serveur simplement avec cette information.

Des outils sont disponibles sur Internet tels que SSH Key Scanner qui va mâcher le travail ici. Mais détaillons un peu ; On utilise le script NSE ssh-hostkey pour récupérer les informations sur la clé publique de l'hôte SSH.

$ proxychains nmap ndhzwarzrankrxzt.onion --script ssh-hostkey --script-args ssh_hostkey=all -p 22

Nmap scan report for ndhzwarzrankrxzt.onion (224.0.0.1)
Host is up (0.17s latency).
rDNS record for 224.0.0.1: all-systems.mcast.net

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey: 
|   2048 3e:03:c4:8e:e1:23:43:59:d5:1c:de:78:06:61:4b:2f (RSA)
| 2048 xorit-nodeb-falil-firuf-buzan-hoduk-vitul-padoc-ravyt-digyc-ruxux (RSA)
[...]

Le scan va nous ressortir plusieurs éléments mais celui qui nous intéresse est celui-ci :

3e:03:c4:8e:e1:23:43:59:d5:1c:de:78:06:61:4b:2f : L'empreinte de la clé publique RSA de l'hôte.

En recherchant sur Shodan cette empreinte, on tombe sur une unique machine qui possède cette IP : 163.172.131.172 qui est herbergée chez l'opérateur Scaleway à Londres. Nous avons donc désanonymisé le service car ici SSH est en écoute aussi sur l'adresse publique du serveur, et a donc laissé fuiter sa localisation.

shodan

Nous avons maintenant l'IP réelle du serveur, nous cherchons donc d'autres services qui pourraient être actifs. En faisant une recherche exhaustive, on se rend compte que le port 1337 est ouvert et en écoute.

On peut donc se connecter sur : http://163.172.131.172:1337 ce qui nous donne le flag :

Flag : ndh2k17_fR33DR34DPIR4T3R0B3RTS