What Is ADCS ESC9, ESC10, ESC11 Certificate Escalation
ADCS ESC9, ESC10, ESC11 certificate escalation is the set of Active Directory Certificate Services (AD CS) privilege escalation techniques published after the original "Certified Pre-Owned" research that introduced ESC1 through ESC8. Where the first eight paths center on template misconfigurations, dangerous CA settings, and HTTP web enrollment, ESC9, ESC10, and ESC11 target the layer that decides whether a certificate actually maps to the right account: the security extension embedded in the certificate, the domain controller's certificate-mapping configuration, and the encryption enforcement on the CA's RPC enrollment interface.
ℹ️ Note: This article assumes the ESC1-ESC8 baseline. See ADCS Attack Paths Explained: How Certificate Misconfigurations Become Active Directory Escalation Paths if you need that foundation first — that article covers ESC1 through ESC8 exclusively (its own slug says as much), which is exactly the gap this piece closes.
All three techniques exist because of the same underlying change: Microsoft's May 2022 update (KB5014754) introduced the szOID_NTDS_CA_SECURITY_EXT security extension, which embeds the requesting principal's SID into an issued certificate so the KDC can strongly bind that certificate to one account. ESC9, ESC10, and ESC11 are three different ways that binding can fail to protect an environment — one at the template level, one at the domain controller/Schannel level, and one at the RPC transport level.
How It Works
ESC9 — No Security Extension
ESC9 exists when a certificate template's msPKI-Enrollment-Flag includes the CT_FLAG_NO_SECURITY_EXTENSION bit (0x80000). SpecterOps' Certify documentation describes this as suppressing the szOID_NTDS_CA_SECURITY_EXT extension on any certificate issued from that template. The effect is that the certificate mapping process behaves as if StrongCertificateBindingEnforcement were set to 0, regardless of its actual registry value on the domain controller, because there is no SID in the certificate to check against.
On its own, that flag is not exploitable. It becomes ESC9 when combined with a second condition attackers already look for on ESC1-ESC8-adjacent templates: a low-privileged principal holding GenericWrite (or equivalent) over another account. An attacker with GenericWrite on a victim account can change that account's userPrincipalName to match a privileged target (for example, an administrator's sAMAccountName), enroll a certificate from the ESC9-flagged template as the victim account, and authenticate as the impersonated target — because the resulting certificate carries no SID extension to contradict the spoofed UPN.
ESC10 — Weak Certificate Mapping (domain-wide)
ESC10 produces the same practical outcome as ESC9 — authentication that resolves to the wrong account — but the misconfiguration lives on the domain controller or in Schannel, not on a single certificate template. SpecterOps and community research (including the Certify wiki and independent ADCS write-ups) describe two variants:
- Case A — Schannel's
CertificateMappingMethodsregistry value on the domain controller includes UPN mapping. An attacker who can write to a victim account'suserPrincipalName(again viaGenericWriteor similar) sets it to match a target principal, then authenticates over Schannel (client TLS auth) with any certificate whose subject or SAN reflects the spoofed UPN. - Case B —
StrongCertificateBindingEnforcementon the domain controller is explicitly set to 0 (Compatibility mode) rather than the enforced default, so a missing or non-matching SID extension is accepted rather than rejected, for every template and every principal — not just one flagged template as in ESC9.
The key operational difference from ESC9: ESC10 is not limited to a single certificate template, so it typically expands the pool of exploitable accounts to the entire domain.
⚠️ Warning: ESC10 shares its root cause with a broader hardening topic — domain controller certificate mapping strength. For the full mechanics of weak vs. strong mapping, KDC events, and Schannel remediation, see Weak Certificate Mapping in AD CS: Why Strong Binding Matters.
ESC11 — Relaying NTLM to the CA's RPC interface
ESC11 is the RPC-transport sibling of ESC8 (NTLM relay to HTTP web enrollment). Certificate Authorities expose the ICertPassage (MS-ICPR) RPC interface for certificate requests. According to SpecterOps' Certify documentation and independent research from Compass Security, whether that interface enforces packet-level encryption is controlled by the IF_ENFORCEENCRYPTICERTREQUEST interface flag on the CA. That flag is enabled by default but is frequently disabled for compatibility with older clients that cannot negotiate RPC_C_AUTHN_LEVEL_PKT_PRIVACY.
When the flag is off, an attacker who coerces a victim (for example a domain controller machine account) into authenticating over NTLM can relay that authentication to the CA's RPC interface — bypassing the same web-enrollment protections ESC8 covers, but over RPC instead of HTTP, and independent of whether web enrollment is even installed.
The Attack Chain
| Technique | Prerequisite | Abuse path | Impact |
|---|---|---|---|
| ESC9 | GenericWrite on a victim account + a template with CT_FLAG_NO_SECURITY_EXTENSION | Rewrite victim's UPN to a target's sAMAccountName, enroll, authenticate as target | Impersonate one specific target account |
| ESC10 (Case A) | GenericWrite on a victim account + DC Schannel CertificateMappingMethods allows UPN mapping | Rewrite victim's UPN, authenticate via Schannel client cert | Impersonate any account with a matching UPN, domain-wide |
| ESC10 (Case B) | StrongCertificateBindingEnforcement = 0 on the domain controller | Any certificate lacking the SID extension is accepted for mapping | Domain-wide weak mapping acceptance |
| ESC11 | CA's IF_ENFORCEENCRYPTICERTREQUEST not set | Coerce NTLM auth from a target, relay to the CA's RPC (ICPR) endpoint, request a certificate as the target | Obtain a certificate for the relayed identity, often a domain controller |
🚨 Danger: All three techniques can end in the same outcome as ESC1-ESC8 — a certificate usable for Kerberos PKINIT authentication as a Domain Admin or a domain controller. Escalation via
GenericWritechains directly into ACL Abuse and DCSync: The Silent Paths to Domain Admin. ESC11's relay step uses the same coercion/relay primitives covered in NTLM Relay Attacks: Hijacking Authentication in AD.
Detection
| Indicator | Event ID / Source | What to look for |
|---|---|---|
| Weak or failed certificate mapping at logon | Domain controller System log, Event ID 39 (no strong mapping), 40 (certificate predates account), 41 (SID mismatch) | KB5014754's audit events firing for privileged accounts, admin workstations, or domain controllers — not just legacy compatibility noise |
| Template with no security extension | AD CS template inventory | msPKI-Enrollment-Flag includes CT_FLAG_NO_SECURITY_EXTENSION (0x80000) on any template with an authentication EKU |
| Domain-wide mapping downgrade | Domain controller registry | HKLM\SYSTEM\CurrentControlSet\Services\Kdc\StrongCertificateBindingEnforcement = 0 (Compatibility) instead of the enforced value; CertificateMappingMethods (Schannel, HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL) re-enabling UPN/Subject-Issuer mapping |
| UPN changes preceding certificate requests | AD CS CA issuance log + directory change auditing (Event ID 4738 on the DC) | A userPrincipalName modification immediately followed by a certificate enrollment (Event ID 4886/4887 on the CA) from the same session |
| RPC interface encryption not enforced | CA registry via certutil -config "<CA>" -getreg CA\InterfaceFlags | Returned value does not include IF_ENFORCEENCRYPTICERTREQUEST (0x200) — indicates the ICPR RPC endpoint accepts unencrypted/unsigned requests and is relay-capable |
| Anomalous certificate requests over RPC | Network / CA server | Unexpected inbound RPC/DCOM connections to the CA server from hosts other than known enrollment clients, correlated with NTLM authentication coercion attempts |
💡 Tip: Microsoft Defender for Identity ships a dedicated security posture assessment, "Enforce encryption for RPC certificate enrollment interface," that flags ESC11-vulnerable CAs directly — use it if Defender for Identity is deployed rather than relying solely on manual certutil checks.
Remediation
- Remove
CT_FLAG_NO_SECURITY_EXTENSIONfrom templates (ESC9). Audit every certificate template'smsPKI-Enrollment-Flag. Any authentication-capable template with this flag set should have it cleared unless there is a documented, reviewed reason — and that reason should not include unprivileged enrollment rights. - Move domain controllers to Full Enforcement (ESC10 Case B). Confirm
StrongCertificateBindingEnforcementis not pinned to 0. Per Microsoft's KB5014754 timeline, domain controllers without an explicit registry value moved to Full Enforcement mode as of the February 2025 update, and the registry key itself stopped being honored after the September 2025 update — so an explicit0left in place is a deliberate downgrade that should be found and justified. - Disable weak Schannel mapping methods (ESC10 Case A). Review
CertificateMappingMethodson every domain controller and any server terminating client-certificate TLS. Weak methods (Subject/Issuer, Issuer only, UPN) should stay disabled; only strong methods (S4U2Self, S4U2Self explicit) should be permitted unless a specific, documented legacy application requires otherwise. - Enforce RPC encryption on every CA (ESC11). Run
certutil -setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQUESTon each CA, then restart the Certificate Services service (net stop certsvc && net start certsvc). Validate afterward withcertutil -config "<CA>" -getreg CA\InterfaceFlagsand confirm0x200is present. - Close the underlying
GenericWriteexposure. Both ESC9 and ESC10 Case A require an attacker to already hold write access to a victim account'suserPrincipalName. Review ACLs for over-broadGenericWrite,GenericAll,WriteProperty, orValidated-SPN-equivalent grants on user objects, especially from helpdesk or provisioning groups, as part of the same remediation pass. - Re-test after every change. Certificate mapping and RPC encryption changes can break legacy clients (older Windows versions, non-Windows RPC clients, older smart card middleware). Stage changes through a representative pilot group before enforcing domain-wide, and keep the KDC/Schannel event review from the detection section running through the rollout to confirm no legitimate authentication starts failing.
✅ Quick win: If time only allows one action today, run the
certutil -config "<CA>" -getreg CA\InterfaceFlagscheck on every CA. ESC11 requires no directory privileges to exploit — only network access and a coercion primitive — which makes it the lowest-bar path of the three.
How EtcSec Detects This
EtcSec's AD audit checks map directly to each technique: ESC9_NO_SECURITY_EXTENSION flags certificate templates carrying CT_FLAG_NO_SECURITY_EXTENSION on an authentication-capable template, ESC10_WEAK_CERTIFICATE_MAPPING reviews domain controller and Schannel certificate-mapping configuration for compatibility-mode settings, and ESC11_ICERT_REQUEST_ENFORCEMENT verifies RPC encryption enforcement on every discovered CA. Because ESC9 and ESC10 Case A both depend on a GenericWrite-style prerequisite, EtcSec also correlates these findings against the broader ACL exposure surface so a template flag or a registry setting is prioritized by whether an attacker actually has a path to abuse it — not flagged in isolation.
If you are building a complete AD CS review rather than checking one technique at a time, pair this article with Audit Active Directory Security: What to Review First and How to Prove Remediation for the full Tier 0 checklist these paths fit into.
ℹ️ Note: EtcSec automatically checks for ESC9, ESC10, and ESC11 exposure during every AD audit. Run a free audit to verify your environment.
Primary References
- SpecterOps / Certify — ESC9: No Security Extension
- SpecterOps / Certify — ESC10: Weak Certificate Mapping
- SpecterOps / Certify — ESC11: NTLM Relay to AD CS RPC Interfaces
- Microsoft Support: KB5014754 — Certificate-based authentication changes on Windows domain controllers
- Microsoft Defender for Identity: Enforce encryption for RPC certificate enrollment interface (ESC11)
- Compass Security: Relaying to AD Certificate Services over RPC
Explore the identity security pages that support this topic
