Furto e Forgiatura di Certificati: Steal or Forge Authentication Certificates (T1649)
La tecnica T1649 rientra nella tattica TA0006 (Credential Access) e descrive l'abuso di certificati digitali utilizzati come materiale di autenticazione. In ambienti Windows moderni i certificati emessi da Active Directory Certificate Services (AD CS) e i device certificate di Entra ID legano un'identità a una coppia di chiavi crittografiche, diventando de facto credenziali di dominio equivalenti a una password ma con validità pluriennale e immuni ai reset.
Un attaccante può muoversi lungo due direttrici. La prima è il furto: estrarre chiavi private dal registro, da file mal protetti o direttamente dal Windows Certificate Store tramite Crypto API. La seconda è la forgiatura: sfruttare template AD CS mal configurati per richiedere certificati con Subject Alternative Name (SAN) arbitrari, oppure — nel caso più devastante — compromettere la chiave privata della CA radice per emettere i cosiddetti golden certificate, validi per l'intero dominio.
L'impatto attraversa più fasi della kill chain. Un certificato rubato abilita Lateral Movement verso servizi che si fidano dell'autenticazione PKI, garantisce Persistence che sopravvive ai reset password, e apre la strada a escalation di privilegio impersonando account amministrativi. In alcuni scenari consente perfino di ottenere Golden Ticket Kerberos o hash NTLM in chiaro tramite la Key Distribution Center.
L'ecosistema di offensive tooling per AD CS ruota attorno a due strumenti di riferimento. Certipy (open source) è il framework Python più maturo per l'enumerazione e l'abuso da Linux, mentre Certify e Rubeus (entrambi open source) coprono lo stesso terreno da endpoint Windows. La fase iniziale consiste nell'enumerazione dei template vulnerabili:
certipy find -u user@domain.local -p Password123 -dc-ip 10.0.0.1 -vulnerable
Il comando restituisce i template affetti dalle misconfigurazioni note come ESC1-ESC15. Il caso ESC1 — template che permette all'enrollee di specificare arbitrariamente il SAN e ha EKU di Client Authentication — consente di richiedere un certificato per l'amministratore di dominio:
certipy req -u lowpriv@domain.local -p Password -ca DOMAIN-CA -template VulnTemplate -upn administrator@domain.local
Il certificato PFX ottenuto viene poi convertito in TGT tramite PKINIT, restituendo l'NT hash dell'account impersonato. La stessa operazione è replicabile con Rubeus tramite l'azione asktgt passando il PFX in Base64.
Per il furto di certificati già presenti sull'endpoint, Mimikatz (S0002, open source) espone il modulo crypto::capi e crypto::certificates /export che estrae certificati e chiavi private dallo store utente e macchina, aggirando le protezioni non-exportable tramite patching in memoria delle Crypto API. Il flag /systemstore:local_machine permette di dumpare lo store di sistema quando si opera con privilegi SYSTEM.
In scenari cloud, AADInternals (S0677, open source) rappresenta il coltellino svizzero per Entra ID. Il cmdlet PowerShell Export-AADIntPRTCertificate estrae il Primary Refresh Token certificate da un dispositivo joined, mentre New-AADIntUserPRTToken genera token PRT arbitrari se si possiede la chiave di sessione. Per la forgiatura di SAML token si usa Open-AADIntOffice365Portal con il certificato di token-signing federato.
Lo scenario più impattante resta il golden certificate: con accesso alla chiave privata della CA (estraibile da HSM mal configurato o dal file .pfx del CA server) si emettono offline certificati arbitrari senza toccare la CA di produzione. Certipy implementa questo attacco tramite il comando forge passando il PFX della CA compromessa.
In laboratorio, GOAD e il progetto Ludus (open source) forniscono ambienti AD CS pre-configurati con tutte le misconfigurazioni ESC per esercitazioni sicure.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo