acl-abuse
Abusing Active Directory object ACLs (DACL/ownership) for privilege escalation and lateral movement (GenericAll, GenericWrite,…
Real-world Active Directory environment constraints that silently break attacks when ignored: NTLM disabled (Kerberos fallback), AES-only KDCs (RC4 blocked by GPO), LDAP signing and channel binding requiring LDAPS on 636, Kerberos clock skew (KRB_AP_ERR_SKEW), SPNs that must be
$ npx -y skills add ADScanPro/Claude-AD --skill ad-environment-constraints --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ad-environment-constraintsContext preview
The summary Claude sees to decide when to auto-load this skill.
Real-world Active Directory environment constraints that silently break attacks when ignored: NTLM disabled (Kerberos fallback), AES-only KDCs (RC4 blocked by GPO), LDAP signing and channel binding requiring LDAPS on 636, Kerberos clock skew (KRB_AP_ERR_SKEW), SPNs that must be
name: ad-environment-constraints description: > Real-world Active Directory environment constraints that silently break attacks when ignored: NTLM disabled (Kerberos fallback), AES-only KDCs (RC4 blocked by GPO), LDAP signing and channel binding requiring LDAPS on 636, Kerberos clock skew (KRB_AP_ERR_SKEW), SPNs that must be FQDNs never short names or IPs (the misleading invalidCredentials), Protected Users / LAPS / gMSA / MachineAccountQuota, LDAP 1000-object paging, and VPN latency. Use this whenever a bind, TGT request, LDAP query, or SMB negotiation fails in a way that looks like bad credentials but is really hardening, or before running any AD tooling against a domain you have not fingerprinted. Standard-tooling knowledge (netexec, impacket, certipy, bloodyAD, kerbrute), no vendor-specific engine.
Code and commands that work in a lab break in a hardened domain, and the failure almost never says what it is. A Kerberos SPN mismatch surfaces as `invalidCredentials`. NTLM being disabled surfaces as a logon failure. AES-only KDCs reject your RC4 request with an etype error you have to know to read. This skill is the checklist of those constraints and how to survive each one with standard tooling.
**Detect the posture before you authenticate.** Every constraint below is detectable up front: probe whether NTLM answers, whether the KDC accepts RC4, whether LDAP signing is required, whether LDAPS is listening. Fingerprint first, then choose your auth path to match. Fixing an auth path reactively after each failure is slower and noisier than reading the environment once and picking the right transport from the start.
---
NTLM can be turned off org-wide or on specific DCs by GPO. Any auth path that assumes NTLM must fall back to Kerberos.
# NTLM path nxc smb dc01.corp.local -u user -p pass # Kerberos path (NTLM disabled): request a TGT, export ccache, reuse it getTGT.py corp.local/user:pass -dc-ip <dc_ip> export KRB5CCNAME=user.ccache nxc smb dc01.corp.local -u user -k --use-kcache
**Reading the signal, not guessing it.** A healthy NTLM-enabled DC answers an NTLM bind with a *bogus* password with exactly `invalidCredentials` / logon-denied, and that proves NTLM is alive (the DC reached credential verification and rejected the password). Do not infer "NTLM disabled" from a failed bind with a wrong password. NTLM is actually disabled only when you see the SSP collapse markers (`STATUS_NTLM_BLOCKED`, unsupported-function), or when a bind fails as logon-denied *while a valid Kerberos TGT for the same identity succeeds concurrently*. Only then is "wrong password" ruled out as the cause.
If a tool only supports pass-the-hash (NTLM hash), treat that as an explicit limitation in an NTLM-disabled environment: it will not work, and no flag fixes it.
---
Domains migrating off legacy crypto enforce AES-128/AES-256 and reject RC4 (arcfour-hmac).
fails with `KDC_ERR_ETYPE_NOTSUPP` on an AES-only KDC.
crack faster); on an AES-only KDC the request simply falls back to AES automatically.
ETYPE-INFO2 pre-auth probe. Standard clients do this as part of the AS exchange; if you hand-roll key derivation you must probe the salt first or the key is wrong.
# Kerberoast: RC4 preferred where allowed, auto-falls back to AES on an AES-only KDC GetUserSPNs.py corp.local/user:pass -dc-ip <dc_ip> -request -outputfile hashes.kerberoast
---
Hardened DCs require signed LDAP or channel-bound LDAPS. Plain LDAP on 389 gets rejected after the bind with `strongerAuthRequired` / `LDAP_STRONG_AUTH_REQUIRED`.
channel binding is enforced; a plain LDAP write is refused.
the connection (SASL sign/seal). A tool with no signing support cannot talk to that DC; that is a hard limitation, document it.
certipy find -u user@corp.local -p pass -dc-ip <dc_ip> -scheme ldaps bloodyAD --host dc01.corp.local -d corp.local -u user -p pass --secure get object <target>
**Legacy environments without LDAPS.** Not every domain has a cert on the DC. Where 636 is closed, LDAP 389 is your only channel and it is plaintext; signing is often on to compensate. Distinguish a *transport* failure (636 closed → connection refused / TLS handshake error → retry on 389) from a *policy* failure (bind succeeds, then `strongerAuthRequired` → signing/channel-binding issue, a different fix). A tool that tries LDAPS and falls back to plain LDAP handles the first case; the second needs signing, not a port change.
---
Kerberos rejects tickets outside a five-minute window with `KRB_AP_ERR_SKEW`. Sync to the DC before any Kerberos operation.
sudo ntpdate <dc_ip> # or rdate -n <dc_ip> # netexec auto-retries after clock correction on skew errors
If a TGT request that should work fails with a skew error, it is your clock, not your credentials.
---
This is the most misleading failure in AD. A service ticket requ
Active Directory pentest methodology for Claude Code. Skills, agents and commands that give Claude the playbook for an internal Active Directory assessment: the phase order, the environment constraints that break your tooling, the telemetry each technique
Abusing Active Directory object ACLs (DACL/ownership) for privilege escalation and lateral movement (GenericAll, GenericWrite,…
The order of operations for an Active Directory penetration test: setup, collection, exploitation, post-processing. Use this…
The telemetry each Active Directory technique generates and what alerts a defender: Kerberoasting produces Event 4769 with RC4…
Active Directory Certificate Services (AD CS) escalation techniques ESC1 through ESC17, driven by hand with Certipy (ly4k). Use…
Authentication coercion (PetitPotam MS-EFSR, PrinterBug MS-RPRN, DFSCoerce MS-DFSNM) chained into NTLM relay (impacket…
A high-level conceptual mapping from Active Directory attack techniques to the compliance controls they touch. Kerberoasting…