Cos'è l'escalation dei certificati ADCS ESC9, ESC10, ESC11
L'escalation dei certificati ADCS ESC9, ESC10, ESC11 è l'insieme delle tecniche di privilege escalation di Active Directory Certificate Services (AD CS) pubblicate dopo la ricerca originale "Certified Pre-Owned" che ha introdotto ESC1-ESC8. Mentre i primi otto percorsi si concentrano su errate configurazioni dei template, impostazioni pericolose della CA e web enrollment HTTP, ESC9, ESC10 ed ESC11 colpiscono il livello che decide se un certificato viene effettivamente mappato all'account corretto: l'estensione di sicurezza incorporata nel certificato, la configurazione di mapping dei certificati del domain controller e l'applicazione della crittografia sull'interfaccia RPC di enrollment della CA.
ℹ️ Nota: questo articolo presuppone la base ESC1-ESC8. Consulta Percorsi di attacco ADCS spiegati: come le configurazioni errate dei certificati diventano percorsi di escalation in Active Directory se hai bisogno prima di queste basi — quell'articolo copre esclusivamente ESC1-ESC8 (lo dice lo stesso slug), il che colma esattamente il vuoto affrontato da questo pezzo.
Tutte e tre le tecniche esistono a causa dello stesso cambiamento sottostante: l'aggiornamento Microsoft di maggio 2022 (KB5014754) ha introdotto l'estensione di sicurezza szOID_NTDS_CA_SECURITY_EXT, che incorpora il SID del principal richiedente nel certificato emesso in modo che il KDC possa vincolare fortemente quel certificato a un unico account. ESC9, ESC10 ed ESC11 sono tre modi diversi in cui questo binding può non riuscire a proteggere un ambiente — uno a livello di template, uno a livello di domain controller/Schannel e uno a livello di trasporto RPC.
Come funziona
ESC9 — Nessuna estensione di sicurezza
ESC9 esiste quando il msPKI-Enrollment-Flag di un template di certificato include il bit CT_FLAG_NO_SECURITY_EXTENSION (0x80000). La documentazione Certify di SpecterOps descrive questo come la soppressione dell'estensione szOID_NTDS_CA_SECURITY_EXT su qualsiasi certificato emesso da quel template. L'effetto è che il processo di mapping del certificato si comporta come se StrongCertificateBindingEnforcement fosse impostato su 0, indipendentemente dal suo valore effettivo nel registro del domain controller, perché non c'è alcun SID nel certificato da verificare.
Da solo, quel flag non è sfruttabile. Diventa ESC9 quando combinato con una seconda condizione che gli attaccanti già cercano su template adiacenti a ESC1-ESC8: un principal a basso privilegio che detiene GenericWrite (o equivalente) su un altro account. Un attaccante con GenericWrite su un account vittima può modificare lo userPrincipalName di quell'account per farlo corrispondere a un target privilegiato (ad esempio lo sAMAccountName di un amministratore), effettuare l'enrollment di un certificato dal template contrassegnato ESC9 come account vittima, e autenticarsi come il target impersonato — perché il certificato risultante non porta alcuna estensione SID che contraddica l'UPN falsificato.
ESC10 — Mapping debole dei certificati (a livello di dominio)
ESC10 produce lo stesso risultato pratico di ESC9 — un'autenticazione che si risolve verso l'account sbagliato — ma la configurazione errata risiede nel domain controller o in Schannel, non su un singolo template di certificato. SpecterOps e la ricerca della community (incluso il wiki di Certify e analisi indipendenti su ADCS) descrivono due varianti:
- Caso A — Il valore di registro
CertificateMappingMethodsdi Schannel sul domain controller include il mapping UPN. Un attaccante in grado di scrivere sullouserPrincipalNamedi un account vittima (di nuovo tramiteGenericWriteo simile) lo imposta in modo che corrisponda a un principal target, quindi si autentica via Schannel (autenticazione client TLS) con qualsiasi certificato il cui subject o SAN rifletta l'UPN falsificato. - Caso B —
StrongCertificateBindingEnforcementsul domain controller è impostato esplicitamente su 0 (modalità Compatibilità) anziché sul valore predefinito applicato, per cui un'estensione SID mancante o non corrispondente viene accettata anziché rifiutata, per ogni template e ogni principal — non solo per un template contrassegnato come in ESC9.
La differenza operativa chiave rispetto a ESC9: ESC10 non è limitato a un singolo template di certificato, quindi tipicamente amplia il pool di account sfruttabili all'intero dominio.
⚠️ Attenzione: ESC10 condivide la propria causa radice con un tema di hardening più ampio — la robustezza del mapping dei certificati del domain controller. Per la meccanica completa del mapping debole vs. forte, gli eventi KDC e la remediation Schannel, consulta Mapping debole dei certificati in AD CS: perché il binding forte conta.
ESC11 — Relay NTLM verso l'interfaccia RPC della CA
ESC11 è l'equivalente a livello di trasporto RPC di ESC8 (relay NTLM verso il web enrollment HTTP). Le Certificate Authority espongono l'interfaccia RPC ICertPassage (MS-ICPR) per le richieste di certificati. Secondo la documentazione Certify di SpecterOps e la ricerca indipendente di Compass Security, se quell'interfaccia applica la crittografia a livello di pacchetto è controllato dal flag di interfaccia IF_ENFORCEENCRYPTICERTREQUEST sulla CA. Quel flag è abilitato per impostazione predefinita ma viene spesso disabilitato per compatibilità con client più vecchi che non riescono a negoziare RPC_C_AUTHN_LEVEL_PKT_PRIVACY.
Quando il flag è disattivato, un attaccante che costringe una vittima (ad esempio l'account macchina di un domain controller) ad autenticarsi via NTLM può fare relay di quell'autenticazione verso l'interfaccia RPC della CA — aggirando le stesse protezioni di web enrollment coperte da ESC8, ma via RPC anziché HTTP, e indipendentemente dal fatto che il web enrollment sia anche installato.
La catena di attacco
| Tecnica | Prerequisito | Percorso di abuso | Impatto |
|---|---|---|---|
| ESC9 | GenericWrite su un account vittima + un template con CT_FLAG_NO_SECURITY_EXTENSION | Riscrivere l'UPN della vittima sullo sAMAccountName di un target, effettuare l'enrollment, autenticarsi come il target | Impersonare uno specifico account target |
| ESC10 (Caso A) | GenericWrite su un account vittima + CertificateMappingMethods del DC che consente il mapping UPN | Riscrivere l'UPN della vittima, autenticarsi tramite certificato client Schannel | Impersonare qualsiasi account con UPN corrispondente, a livello di dominio |
| ESC10 (Caso B) | StrongCertificateBindingEnforcement = 0 sul domain controller | Qualsiasi certificato privo dell'estensione SID viene accettato per il mapping | Accettazione di mapping debole a livello di dominio |
| ESC11 | IF_ENFORCEENCRYPTICERTREQUEST della CA non impostato | Costringere l'autenticazione NTLM di un target, fare relay verso l'endpoint RPC (ICPR) della CA, richiedere un certificato come il target | Ottenere un certificato per l'identità relayata, spesso un domain controller |
🚨 Pericolo: tutte e tre le tecniche possono concludersi con lo stesso esito di ESC1-ESC8 — un certificato utilizzabile per l'autenticazione Kerberos PKINIT come Domain Admin o domain controller. L'escalation via
GenericWritesi concatena direttamente con Abuso di ACL e DCSync: i percorsi silenziosi verso Domain Admin. Il passaggio di relay di ESC11 utilizza le stesse primitive di coercizione/relay trattate in Attacchi di relay NTLM: dirottamento dell'autenticazione in AD.
Rilevamento
| Indicatore | ID evento / Fonte | Cosa cercare |
|---|---|---|
| Mapping del certificato debole o fallito al login | System log del domain controller, Event ID 39 (nessun mapping forte), 40 (il certificato precede l'account), 41 (SID non corrispondente) | Gli eventi di audit del KB5014754 che si attivano per account privilegiati, workstation amministrative o domain controller — non solo rumore di compatibilità legacy |
| Template senza estensione di sicurezza | Inventario dei template AD CS | msPKI-Enrollment-Flag include CT_FLAG_NO_SECURITY_EXTENSION (0x80000) su qualsiasi template con un EKU di autenticazione |
| Downgrade di mapping a livello di dominio | Registro del domain controller | HKLM\SYSTEM\CurrentControlSet\Services\Kdc\StrongCertificateBindingEnforcement = 0 (Compatibilità) invece del valore applicato; CertificateMappingMethods (Schannel, HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL) che riattiva il mapping UPN/Subject-Issuer |
| Modifiche UPN che precedono richieste di certificato | Log di emissione della CA AD CS + audit delle modifiche di directory (Event ID 4738 sul DC) | Una modifica di userPrincipalName immediatamente seguita da un enrollment di certificato (Event ID 4886/4887 sulla CA) nella stessa sessione |
| Crittografia dell'interfaccia RPC non applicata | Registro della CA via certutil -config "<CA>" -getreg CA\InterfaceFlags | Il valore restituito non include IF_ENFORCEENCRYPTICERTREQUEST (0x200) — indica che l'endpoint RPC ICPR accetta richieste non crittografate/non firmate ed è suscettibile a relay |
| Richieste di certificato anomale via RPC | Rete / server della CA | Connessioni RPC/DCOM in ingresso inattese verso il server della CA da host diversi dai client di enrollment noti, correlate con tentativi di coercizione dell'autenticazione NTLM |
💡 Suggerimento: Microsoft Defender for Identity include una valutazione dedicata della postura di sicurezza, "Enforce encryption for RPC certificate enrollment interface", che segnala direttamente le CA vulnerabili a ESC11 — usala se Defender for Identity è distribuito, invece di affidarti solo a controlli manuali con certutil.
Remediation
- Rimuovere
CT_FLAG_NO_SECURITY_EXTENSIONdai template (ESC9). Verifica ilmsPKI-Enrollment-Flagdi ogni template di certificato. Qualsiasi template capace di autenticazione con questo flag impostato dovrebbe averlo rimosso, salvo un motivo documentato e verificato — e quel motivo non dovrebbe includere diritti di enrollment non privilegiati. - Portare i domain controller in Full Enforcement (ESC10, Caso B). Conferma che
StrongCertificateBindingEnforcementnon sia bloccato su 0. Secondo la timeline del KB5014754 di Microsoft, i domain controller senza un valore di registro esplicito sono passati alla modalità Full Enforcement con l'aggiornamento di febbraio 2025, e la chiave di registro stessa ha smesso di essere considerata dopo l'aggiornamento di settembre 2025 — uno0esplicito lasciato in essere è quindi un downgrade deliberato che deve essere individuato e giustificato. - Disabilitare i metodi di mapping Schannel deboli (ESC10, Caso A). Rivedi
CertificateMappingMethodssu ogni domain controller e su qualsiasi server che termina l'autenticazione TLS con certificato client. I metodi deboli (Subject/Issuer, Solo Issuer, UPN) dovrebbero restare disabilitati; dovrebbero essere consentiti solo i metodi forti (S4U2Self, S4U2Self esplicito), salvo che un'applicazione legacy specifica e documentata lo richieda. - Applicare la crittografia RPC su ogni CA (ESC11). Esegui
certutil -setreg CA\InterfaceFlags +IF_ENFORCEENCRYPTICERTREQUESTsu ogni CA, quindi riavvia il servizio Certificate Services (net stop certsvc && net start certsvc). Valida in seguito concertutil -config "<CA>" -getreg CA\InterfaceFlagse conferma che0x200sia presente. - Chiudere l'esposizione
GenericWritesottostante. Sia ESC9 che ESC10 Caso A richiedono che un attaccante possieda già accesso in scrittura allouserPrincipalNamedi un account vittima. Rivedi le ACL alla ricerca di concessioni troppo ampie diGenericWrite,GenericAll,WriteProperty, o equivalenti aValidated-SPNsugli oggetti utente, in particolare da gruppi di helpdesk o provisioning, nella stessa fase di remediation. - Ritestare dopo ogni modifica. Le modifiche al mapping dei certificati e alla crittografia RPC possono interrompere client legacy (versioni Windows meno recenti, client RPC non Windows, middleware smart card datato). Distribuisci le modifiche tramite un gruppo pilota rappresentativo prima di applicarle a livello di dominio, e mantieni attiva la revisione degli eventi KDC/Schannel della sezione rilevamento durante il rollout per confermare che nessuna autenticazione legittima inizi a fallire.
✅ Azione rapida: se il tempo consente una sola azione oggi, esegui il controllo
certutil -config "<CA>" -getreg CA\InterfaceFlagssu ogni CA. ESC11 non richiede alcun privilegio di directory per essere sfruttato — solo accesso di rete e una primitiva di coercizione — il che lo rende il percorso con la barriera più bassa tra i tre.
Come EtcSec rileva questa esposizione
I controlli di audit AD di EtcSec corrispondono direttamente a ciascuna tecnica: ESC9_NO_SECURITY_EXTENSION segnala i template di certificato che presentano CT_FLAG_NO_SECURITY_EXTENSION su un template capace di autenticazione, ESC10_WEAK_CERTIFICATE_MAPPING rivede la configurazione di mapping dei certificati del domain controller e di Schannel alla ricerca di impostazioni in modalità compatibilità, e ESC11_ICERT_REQUEST_ENFORCEMENT verifica l'applicazione della crittografia RPC su ogni CA rilevata. Poiché sia ESC9 che ESC10 Caso A dipendono da un prerequisito di tipo GenericWrite, EtcSec correla anche questi rilevamenti con la superficie di esposizione ACL più ampia, in modo che un flag di template o un'impostazione di registro venga prioritizzato in base al fatto che un attaccante abbia effettivamente un percorso per sfruttarlo — non segnalato in isolamento.
Se stai costruendo una revisione AD CS completa anziché controllare una tecnica alla volta, abbina questo articolo a Come auditare la sicurezza di Active Directory: cosa rivedere per primo e come dimostrare la remediation per la checklist Tier 0 completa in cui rientrano questi percorsi.
ℹ️ Nota: EtcSec verifica automaticamente l'esposizione a ESC9, ESC10 ed ESC11 durante ogni audit AD. Esegui un audit gratuito per verificare il tuo ambiente.
Riferimenti principali
- 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
Esplora le pagine di identity security collegate a questo tema
