Kerberos e attacchi ad Active Directory

Indice dei contenuti

    Kerberos è il protocollo di autenticazione di rete adottato da Microsoft Active Directory (AD) come meccanismo predefinito dall’era Windows 2000. Progettato al MIT negli anni ‘80 nell’ambito del Progetto Athena, si basa su un modello a terza parte fidata (trusted third party): invece di trasmettere credenziali tra client e server, entrambi si fidano di un’autorità centrale — il KDC (Key Distribution Center) — che emette ticket crittografati con validità temporale. La comprensione di Kerberos è indispensabile per capire gli attacchi più efficaci contro le reti Windows enterprise.

    Funzionamento

    Il protocollo si articola in tre componenti nel KDC:

    • AS (Authentication Service): verifica l’identità iniziale dell’utente e rilascia il TGT (Ticket-Granting Ticket)
    • TGS (Ticket-Granting Service): riceve il TGT e rilascia Service Ticket per servizi specifici
    • Database delle chiavi: conserva le chiavi crittografiche derivate dalle password di tutti gli account

    Flusso di autenticazione

    1. Il client invia una richiesta AS-REQ all’AS, pre-autenticandosi con un timestamp cifrato con la propria chiave (derivata dalla password).
    2. L’AS verifica la pre-autenticazione e rilascia un TGT cifrato con la chiave del KDC stesso — il client non può leggerlo, ma lo presenta come prova di identità al TGS.
    3. Per accedere a un servizio (es. un file server), il client presenta il TGT al TGS e riceve un Service Ticket cifrato con la chiave dell’account del servizio target.
    4. Il client presenta il Service Ticket al servizio, che lo decifra con la propria chiave e autentica il client.

    In nessun momento la password viaggia in rete.

    Attacchi principali

    Kerberoasting: qualsiasi utente del dominio può richiedere Service Ticket per account con un Service Principal Name (SPN) registrato — tipicamente account di servizio. Il Service Ticket è cifrato con la chiave dell’account di servizio (derivata dalla sua password). L’attaccante richiede i ticket, li esporta offline e li attacca con forza bruta (hashcat, john). Se l’account di servizio ha una password debole, la password viene recuperata in chiaro. Non genera alert immediati perché la richiesta di Service Ticket è traffico Kerberos legittimo.

    AS-REP Roasting: se un account ha la pre-autenticazione Kerberos disabilitata, chiunque può richiedere un AS-REP senza autenticarsi. La risposta contiene materiale cifrato con la chiave dell’account, attaccabile offline.

    Pass-the-Ticket (PtT): se un attaccante compromette un sistema e ruba i ticket Kerberos dalla memoria (con strumenti come Mimikatz), può usarli per autenticarsi come l’utente legittimo su altri sistemi — senza conoscere la password.

    Golden Ticket: se l’attaccante ottiene l’hash NTLM dell’account KRBTGT (quello che firma tutti i TGT), può forgiare TGT arbitrari per qualsiasi utente con qualsiasi privilegio, con scadenza arbitraria. Garantisce accesso permanente all’intero dominio. L’unica remediation è cambiare due volte la password di KRBTGT.

    Silver Ticket: versione ridotta del Golden Ticket — l’attaccante forgia un Service Ticket per un servizio specifico usando l’hash dell’account di servizio corrispondente. Più difficile da rilevare perché non passa per il KDC.

    DCSync: tecnica che sfrutta le API di replica di Active Directory per estrarre gli hash di tutte le password del dominio dal Domain Controller, senza mai accedervi fisicamente. Richiede i privilegi di replica solitamente in possesso di Domain Admin.

    Difese

    • Monitorare event ID 4769 per richieste massive o con cifratura RC4 (segnale di Kerberoasting)
    • Account di servizio con password lunghe (>25 caratteri) gestite tramite GMSA (Group Managed Service Accounts) — ruotate automaticamente da AD
    • Protected Users Security Group: limita la superficie di attacco Kerberos per gli account aggiunti
    • Abilitare la pre-autenticazione su tutti gli account (default già attivo — verificare eccezioni)
    • Monitorare uso di DCSync (event ID 4662)

    Ultimo aggiornamento: