Kerberoasting
Extract and crack service account password hashes by requesting TGS tickets for accounts with Service Principal Names (SPNs).
Kerberoasting targets service accounts which often have weak passwords and elevated privileges in Active Directory environments.
Quick Reference
# List Kerberoastable accounts (Linux) |
Impacket GetUserSPNs (Linux)
# List Kerberoastable accounts |
Rubeus (Windows)
# Statistics on Kerberoastable accounts |
PowerView (Windows)
# Import PowerView |
Manual Kerberoasting (Windows)
# Import required assembly |
Extract Tickets with Mimikatz
# Start Mimikatz |
Hash Cracking
RC4 Tickets (Type 23)
# Hashcat mode 13100 |
AES Tickets (Type 18)
# Hashcat mode 19700 (slower) |
Encryption Type Handling
Check Supported Encryption
# PowerView |
Force RC4 Tickets
# Rubeus with /tgtdeleg flag |
Common Workflow
# Step 1: Enumerate Kerberoastable accounts |
Notes
What is Kerberoasting?
Kerberoasting exploits how Kerberos handles service authentication. When a user requests access to a service, the Domain Controller issues a TGS ticket encrypted with the service account’s password hash. Any domain user can request these tickets, which can then be cracked offline.
Why It Works:
- Any domain user can request TGS tickets
- Tickets are encrypted with service account password
- Service accounts often have weak passwords
- Service accounts often have elevated privileges
- Cracking happens offline (no account lockout)
Target Selection:
High-value targets:
- SQL Server service accounts
- Exchange service accounts
- IIS application pool accounts
- Accounts with adminCount=1
- Accounts with old password dates
- Accounts with weak encryption (RC4)
Encryption Types:
| Type | Encryption | Cracking Speed |
|---|---|---|
| 23 | RC4_HMAC_MD5 | Fast |
| 17 | AES128_CTS_HMAC_SHA1_96 | Slow |
| 18 | AES256_CTS_HMAC_SHA1_96 | Very Slow |
RC4 vs AES:
- RC4 tickets crack much faster
- Use
/tgtdelegto force RC4 requests - AES tickets can still be cracked with weak passwords
- Server 2019+ always returns highest encryption
Detection:
Event IDs to monitor:
- 4769: Kerberos service ticket requested
- Look for:
- Multiple 4769 events in short time
- Requests for unusual SPNs
- Requests from unexpected accounts
- RC4 downgrade attempts
Best Practices:
- Enumerate before requesting (less noisy)
- Target specific high-value accounts
- Use RC4 tickets when possible (faster)
- Try common passwords first
- Use rules for password mutations
- Document all cracked credentials
Common Service Account Passwords:
- Company name + year + !
- Service name + 123!
- Password123!
- Welcome1!
- Seasonal passwords (Summer2024!)
Blind Kerberoasting:
Request TGS for guessed SPNs without enumeration:
- Requires valid TGT
- More stealthy
- Less efficient
- Useful when LDAP enumeration blocked
Cross-Domain Kerberoasting:
- Works across forest trusts
- Use
-target-domainflag - Requires authentication permitted across trust
- Can target child/parent domains
Mitigation (for defenders):
- Use strong service account passwords (25+ characters)
- Use Group Managed Service Accounts (gMSA)
- Disable RC4 encryption
- Monitor for 4769 events
- Implement least privilege for service accounts
- Regular password rotation
- Use AES encryption only
Tools Comparison:
- GetUserSPNs.py: Best for Linux, clean output
- Rubeus: Most features, Windows-native
- PowerView: Good for enumeration
- Manual method: Stealthy, no tools needed
Troubleshooting:
- If no SPNs found: Check permissions
- If tickets are AES: Use /tgtdeleg or accept slower cracking
- If cracking fails: Try larger wordlists, rules
- If Server 2019: Can’t force RC4 downgrade