Aujourd'hui nous allons exploiter la machine Active de chez Hack The Box. Le nom de la box laisse à penser qu'on va avoir à faire à Active Directory.

Niveau : facile

But : récupérer les fichiers users.txt et root.txt


Au programme

Scan

  • nmap

Exploitation de la vulnérabilité

  • Impacket
  • Hashcat

Scan avec nmap

Un scan rapide nous montre qu'on est face à un serveur windows 2008 R2 SP1 dont le FQDN est active.htb. Il y a pas mal de port ouvert ; dans ce cas là j'essaie de les classer par ordre d'importance. L'important étant ici l'information que je peux récolter et les failles que je peux potentiellement entrevoir.

  • Port 53 : DNS souvent très intéressant pour découvrir d'autres domaine/sous-domaine via un transfer, il l'est beaucoup moins quand on est face à une seule machine
  • Ports 139 et 445 : SMB est toujours parmi le top 5 des ports à regarder car il présente pas mal de vulnérabilité et avec un peu de chance on aura accès à un dossier
  • Port 389 : LDAP on va pouvoir énumérer le domaine
  • Port 88 Kerberos à l'air actif ; une petite lumière s'allume "kerberoasting?"

active01

 

Énumération

En premier lieu, quand j'ai un nom de domaine je commence par modifier /etc/hosts pour que le nom de domaine résolve la bonne adresse IP

active01

Le transfer DNS n'a pas donné grand chose, par contre j'ai pu me connecter en smb au dossier replication. En farfouillant un peu (/active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml) on trouve un fichier qui contient cpassword. Je me souviens avoir lu un article là dessus. Un petit tour sur un moteur de recherche m'a permis de retrouver l'article de Raj Chandel sur le blog hackingarticles.in.

Petite digression : hackingarticles.in est un des sites qui fait référence dans le monde du hacking. Les articles sont toujours de très grandes qualités et très bien détaillés.

Pour récupérer le mot de passe : gpp-decrypt edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ

active01

 active01

Exploitation de la vulnérabilité

Vu les résultats de nmap et l'obtention des infos du compte SVC_TGS, je pense forcément kerberoasting.

Kerberos est un système qui permet de centraliser l'authentification des clients. Le client fait une demande au KDC qui lui remet un Ticket Granting Ticket (TGT) prouvant qu'il est bien authentifié. Muni de sont TGT, le client peut faire une demande au Ticket Granting Service (TGS) qui lui donnera un Ticket Service TS (fichier contenant les droits d'accès au service demandé). Plus d'info en français ici

Kerberos est un bon système d'autentification, mais il reste vulnérable à l'attaque nommée kerberoasting.

Je ne vais pas entrer dans les détails, on va juste voir comment utiliser les outils impacket.

Impacket est une collection de classe écrite en python qui permet de communiquer avec le réseau à un bas niveau. Il y a de très bon article sur le site hackingarticles.in. Je vous laisse chercher...

J'ai d'abord commencé par lister les utilisateurs avec cette commande :

impacket-GetUserSPNs -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18

Puis celle là pour essayer de récupérer un hash. BINGO !

impacket-GetUserSPNs -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request-user Administrator

N.B. Ces commandes ne fonctionneront que dans la dernière version de kali. Sur les versions précédentes il fallait utiliser quelque chose comme ça :

python3 cheminVersLesExemplesDImpacket/GetUserSPNs.py -dc-ip 10.10.10.100 active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request-user Administrator

 

active01

Il n'y a plus qu'à envoyé tout ça dans hashcat.

Astuce du jour : je ne me souviens jamais des codes pour les différents hash. Un petit grep me permet de filtrer le résultat de l'aide et d'arriver facilement à trouver le bon code.

active01

La commande en détail :

hashcat -a 0 --force --hwmon-temp-abort=100 -m 13100 hash.txt /home/fr3sh/Documents/Wordlists/rockyou.txt

  • -a correspond au mode d'attaque. Ici on utilise 0 qui correspond à Straight (une attaque par dictionnaire classique)
  • --hwmon-temp-abort=100 c'est la température à laquelle je demande à hashcat de s'arréter pour épargner ma carte graphique
  • -m c'est le code pour mon hash

Bingo ! après quelques minutes de patience, j'obtiens mon mot de passe : Ticketmaster1968

active01

Toujours à l'aide d'impacket, j'obtiens une shell en tant qu'admin.

J'ai utilisé psexec, mais j'aurais aussi pu/dû utiliser wmicexec qui est moins bruyant et donc moins détectable par les antivirus. J'avais quand même toutes mes chances étant donné la version du serveur

 active01