Golden Tickets : how you got willy wokaed

Tout au long de cet article nous allons nous intéresser à une notion essentielle lorsque l’on parle de pentest sur un environnement Active Directory : les Golden Tickets.

Pour faire simple, et passer directement à la partie pratique, un golden ticket c’est tout simplement un TGT toujours valide. Ainsi un attaquant qui réussit à créer un Golden Ticket pourra se déplacer librement sur l’ensemble du domaine Active Directory.


Si les notions de TGT, TGS, krbtgt et globalement Kerberos ne vous disent rien je vous invite fortement à lire cet article qui vous présentera le fonctionnement de l’authentification via Kerberos.


Let’s dive into the wonderful world of Kerberos ! 

I/ Création d’un Golden Ticket

Pour tester en live le fonctionnement des Golden Tickets nous n’avons besoin que de deux VM (un DC et une machine faisant parti du domaine), un domaine (ici whiteflag.local) et deux comptes utilisateur (ici Administrateur et victime).

La première chose importante à retenir c’est que pour forger un Golden Ticket il faut au préalable avoir d’importants privilèges sur un DC. Autrement dit il faut déjà être administrateur du domaine.

Pour vous prouver que l’utilisateur victime n’a aucun privilège nous allons tenter de lister le répertoire c$ du dc1 :

gt1.png

Comme prévu il n’y a pas accès. En revanche nous savons que l’administrateur du domaine s’est connecté sur cette machine et comme nous venons de la rooter nous avons pu dumper le contenu de la mémoire du processus LSASS.

Par chance nous y avons trouvé le mot de passe du compte de l’administrateur. Nous sommes donc en mesure de nous connecter au DC et par la même occasion dumper le contenu de la base NTDS.dit. Pour cela plusieurs outils peuvent être utilisés. Pour ma part j’utilise l’outil CrackMapExec développé par le plus que connu Byt3bl33d3r :

sudo cme smb 192.168.0.80 -u Administrateur -p Admin@WF --ntds

Comme prévu nous y trouvons le hash NTLM du mot de passe du compte krbtgt. A noter que nous aurions très bien pu nous connecter au DC et utiliser l’utilitaire Mimikatz afin de dumper la base grâce à cette commande :

lsadump::dcsync /domain:whiteflag.local /all

Mais pourquoi est ce qu’on a besoin de ce hash ? Eh bien comme vous devez le savoir la première étape de l’authentification kerberos consiste à récupérer un TGT auprès de l’Authentication Service (AS). Ce TGT c’est une sorte de carte d’identité qui nous représente sur un réseau Active Directory. Cependant, le TGT n’est pas lisible puisqu’une grosse partie de son contenu est chiffré à l’aide… du hash NTLM du mot de passe du compte krbtgt.

Pa conséquent, pour créer un TGT valide nous devons le chiffrer avec le bon hash (d’où la nécessité de dumper la base NTDS.dit).

Revenons sur notre machine compromise. Avant de lancer Mimikatz nous allons avoir besoin de récupérer le SID du domaine. Pour le récupérer il suffira de lancer la commande whoami /all ou encore utiliser la console WMIC :

wmic useraccount get name,sid

gt3.png

Le SID du domaine est : S-1-5-21-2264230487-1737700805-2543677798.

Maintenant que l’on dispose de toutes les informations nécessaires nous allons pouvoir lancer Mimikatz :

gt4.png

Et créer notre ticket en utilisant cette commande :

kerberos::golden /user:victime /domain:whiteflag.local /sid:S-1-5-21-2264230487-1437700805-2543677798 /krbtgt:355d581b2da7d516482aee845e6f8f00 /ticket:golden.kiwi /ptt

gt5.png

Notre ticket a bien été créé et inséré ! Du coup on pourra lister le contenu du répertoire c$ du DC1 :

gt6.png

A partir de ce Golden Ticket nous pouvons donc accéder à n’importe quelle ressource sur le domaine ! Nous sommes définitivement (ou presque) administrateur du domain whiteflag.local !

Oh, by the way, ici dans le paramètre /user j’ai utilisé le nom « victime » mais il est tout à fait possible d’utiliser un utilisateur qui n’existe pas dans l’AD  !

II/ Au final, à quoi ça sert un Golden Ticket ?

C’est une question tout à fait légitime. En effet pour pouvoir créer un Golden Ticket il faut avoir des privilèges nécessaires pour dumper la base NTDS.dit. Or pour cela il faut déjà être administrateur du domaine.

En fait les Golden Ticket n’ont pas pour vocation d’augmenter les privilèges d’un utilisateur. Les Golden Ticket sont utilisés afin de créer de la persistance sur un domaine. Imaginez que vous venez de pown un DC d’une entreprise dans le cadre d’un pentest. Vous avez donc au moins le nom de compte d’un administrateur du domaine et au moins le hash NTLM du compte.

Si les administrateurs du domaine s’en rendent compte, la première chose qu’ils vont faire c’est changer le mot de passe du compte d’administration compromis. S’ils le font vous perdez votre accès au domain en tant qu’administrateur.

En revanche si vous avez créé un Golden Ticket alors les administrateurs du domaine devront aussi changer le mot de passe du compte krbtgt et ça, ça peut poser problèmes… En effet le compte krbtgt est un peu comme le pilier d’un domaine Active Directory. Si vous modifiez son mot de passe vous allez remettre en question toutes les relations de confiance établies par le passé. Suivant ce qui se trouve sur le domaine ça peut être ennuyant.

De plus, changer le mot de passe du compte krbtgt une fois n’est pas suffisant puisqu’il y aura toujours des tickets enregistrés dans le cache des machines.

Pour protéger son domaine suite à la création d’un Golden Ticket il faudra changer le mot de passe du compte krbtgt deux fois.

C’est tout pour le moment mais ne vous inquiétez pas, il reste encore quelques utilisations bien sympathiques des Golden Ticket  !