Ce challenge simule une scenario ou l’on doit compromettre un environnement Active Directory.
Scan nmap :

Au vue des ports ouverts, on a surement a faire à un environnement Active Directory.

On peut tester d’obtenir des infromations à l’aide de quelques ports importants :

Port 53 (DNS) :

Le scan nmap nous fournit des FQDN (Fully Qualified Domain Named) comme haystack.thm.corp. On peut alors demander au DNS de nous fournir tous les enregistrements DNS liée au domaine thm.corp. Cela peut être réalisé avec l’utilitaire dig (dig any thm.corp @10.10.157.68). Dans notre cas, on obtient pas de nouveau domaine intéréssant.

Port 135 (MSRPC) :

On peut faire une enumeration avec une session null pour voir si l’on peut récupérer des noms d’utilisateur avec un outil nommée rpcclient

Commande :

1
rpcclient -N -U '' 10.10.157.68

Si on peut s’authentifier, on peut utiliser rpcclient enumdomusers pour récupérer les noms d’utilisateurs :

Dans notre cas, on peut se connecter mais on ne peut pas énumérer les utilisateurs.

Port 389 (LDAP) :

On peut essayer d’énumérer les utilisateurs en utilisant LDAP s’il est possible de se connecter en mode anonyme :


Impossible de récupérer des informations de cette maniere car la connexion a échoué.

Port 5985 (WinRm)

Ce port va nous servir plus tard lorsque l’on voudra se connecter à distance avec un utilisateur

Port 88 (Kerberos)

Maitenant, essayons de récupéré la liste des utilisateurs en brute forcant le SID Windows. Pour faire ceci, utilisons le module lookupsid de impacket avec l’utilisateur guest.

1
impacket-lookupsid [email protected] -no-pass -domain-sids | grep -i SidTypeUser


Maitenant que nous avons une liste d’utilisateurs potentiel, on peut vérifier quels utilisateurs sont valide avec kerbrute.

On trouve alors 40 compte du domaine valide.

AS-REP Roasting

AS-REP Roasting est une technique qui permet de retrouver le hash du mot de passe des utilisateurs n’ayant pas la propriété Do not require Kerberos Preauthentification.

1
impacket-GetNPUsers thm.corp/ -usersfile users.txt -no-pass -request -dc-ip 10.10.157.68

On a maintenant le hash de 3 utilisateurs : ERNESTO_SILBA, TABATHA_BRITT, LEANN_LONG
Avec john, on peut tenter de casser ces hash :

On parvient alors trouver le mot de passe de TABATHA_BRITT

En utilisant le compte récupéré, on énumére les partages du serveur et parcourant le dossier Data, on récupére 3 fichiers. Un de ces fichiers contient le mot de passe par défaut qui est attribué au nouveaux utilisateurs :

Ce mot de passe nous permet de compromettre le compte LILY_ONEILL mais malheureusement, ce compte ne dispose d’aucun privilège

On remarque ensuite que le nom des fichiers de data/onboarding change périodiquement, ce qui signifie qu’un utilisateur accéde réguliérement à ces fichiers. On peut donc tenter de voler le hash ntlm de cet utilisateur en placant un fichier malveillant dans le dossier.

Avec l’outil https://github.com/Greenwolf/ntlm_theft on peut générer un fichier lnk qui forcera l’utilisateur à se connecter à notre serveur SMB que l’on lance avec responder

Ainsi, en placer le fichier lnk dans le dossier, après quelque seconde, on obtient le hash de l’utilisateur automate :

On peut alors casser ce hash à l’aide de john :

On sait maintenet que le mot de passe de AUTOMATE est Passw0rd1.
Avec ce compte, on peut alors récupérer la liste des utilisateurs du domaine :

En utilisant bloodhound, on remarque que l’utilisateur TABATHA_BRITT peut nous permettre de récupérer l’accés à 3 autres comptes :

Ainsi, en suivant les indications de bloodhound, on parvient à changer le mot de passe de ces 3 comptes :

Et on récupére alors le compte de Darla_winters :

Puis en anaylsant les droits de ce compte, on remarque que ce compte possède des droits de délégation non contrainte :

La permission AllowedToDelegate nous permet d’usurper l’identité de n’importe quel utilisateur et en particulier du compte Administrateur en ciblant le service CIFS pour retrouver un ticket TGS.
https://www.guidepointsecurity.com/blog/delegating-like-a-boss-abusing-kerberos-delegation-in-active-directory/

En utilisant le script getST de impacket :

1
impacket-getST -spn cifs/haystack.thm.corp -impersonate Administrator thm.corp/DARLA_WINTERS:'Password@2037'

On parvient à récupérer le ticket du compte administrateur :

Maintenant, on doit exporter notre fichier dans notre mémoire à l’aide de :

1
export KRB5CCNAME=Administrator.ccache

En utilisant wmiexe, on peut maiteant avoir un shell enn tant qu’administrateur :