Kerberoasting
Kerberoasting abuses the Kerberos TGS request mechanism. Any authenticated domain user can request a service ticket for any account with a Service Principal Name set. The ticket is encrypted with the service account's password hash and is returned without any special rights or group membership required. The resulting hash can be cracked offline.
Service accounts are the primary target — they tend to have weak passwords, rarely rotate, and often carry elevated privileges or local admin access on application servers.
Find Kerberoastable accounts
Identify accounts with SPNs set before requesting tickets. Prioritise accounts that are not computer objects and not krbtgt — service accounts tied to applications are the viable targets.
sAMAccountName: svc-mssql servicePrincipalName: MSSQLSvc/sql01.corp.local:1433 sAMAccountName: svc-http servicePrincipalName: HTTP/web01.corp.local
Request TGS hashes
impacket-GetUserSPNs requests TGS tickets for all Kerberoastable accounts and outputs them in a crackable format. The default encryption type returned depends on what the service account supports — RC4 hashes crack faster than AES.
$krb5tgs$23$*svc-mssql$CORP.LOCAL$corp.local/svc-mssql*$a1b2c3d4...
Crack the hashes
RC4 TGS hashes use mode 13100. AES-128 and AES-256 hashes use modes 19600 and 19700 — significantly slower to crack. If both types are present, prioritise the RC4 hashes first.
$krb5tgs$23$*svc-mssql$CORP.LOCAL$...* → Mssql2019!
Targeted Kerberoasting via GenericWrite
If you have GenericWrite or GenericAll on a user account that has no SPN, you can set one yourself. This makes any writable user account Kerberoastable. Remove the SPN after cracking to avoid leaving a detectable artefact.
A cracked service account password gives authenticated access to whatever services that account is tied to. Check the SPN to identify the target service — MSSQLSvc, HTTP, CIFS, and HOST are the most impactful. Re-run Object Enumeration under the cracked account to check group memberships and writable objects before moving to the service directly. Cracked passwords often allow Pass-the-Hash or direct AD Remote Execution. For TGS ticket mechanics and Kerberos-specific exploitation context, see Kerberoasting (service page).
References
-
Impacket — GitHubgithub.com/fortra/impacket (opens in new tab)
GetUserSPNs reference for TGS hash request
-
NetExec (nxc) — GitHubgithub.com/Pennyw0rth/NetExec (opens in new tab)
kerberoasting module reference
-
BloodyAD — GitHubgithub.com/CravateRouge/bloodyAD (opens in new tab)
set object servicePrincipalName for targeted Kerberoasting
Was this helpful?
Your feedback helps improve this page.