Per capire perché il Keberoasting funziona, è necessario prima comprendere le basi del protocollo Kerberos.
Kerberos è un protocollo di autenticazione che consente agli utenti e ai servizi (come applicazioni, database e server) di autenticarsi e comunicare in modo sicuro all'interno di Active Directory e altri domini.
Il processo di autenticazione Kerberos utilizza un sistema di etichettatura. Al centro di questo sistema c'è il centro di distribuzione delle chiavi (KDC), che opera sul controller di dominio della rete.
Il KDC è essenzialmente il custode del dominio. Autentica utenti e servizi sulla rete ed emette loro i ticket. I ticket sono credenziali che dimostrano l'identità degli utenti e consentono loro di accedere ad altre risorse sulla rete. Gli utenti e i servizi si scambiano questi ticket per verificarsi reciprocamente.
Quando un utente accede a un dominio, si autentica prima con il KDC e riceve un ticket-granting ticket (TGT). Questo TGT abilita l'utente a richiedere l'accesso ai servizi di dominio.
Quando l'utente vuole accedere a un servizio, invia una richiesta al servizio di assegnazione dei ticket (TGS, ticket-granting service) del KDC. Il TGT accompagna questa richiesta per garantire l'identità dell'utente.
In risposta, il KDC emette un ticket di servizio, chiamato anche "ticket TGS", che viene crittografato utilizzando la password dell'account di servizio. Ciò avviene per garantire che solo il servizio di destinazione possa convalidare la richiesta di accesso dell'utente. L'utente presenta questo ticket di servizio al servizio di destinazione, che autentica l'utente e avvia una sessione sicura.
Ci sono alcuni particolati del design di Kerberos che lo lasciano vulnerabile al Kerberoasting.
Innanzitutto, il KDC non verifica se gli utenti sono autorizzati ad accedere a un servizio. Qualsiasi utente può richiedere un ticket per qualsiasi servizio. Spetta ai singoli servizi far rispettare le autorizzazioni e bloccare gli utenti non autorizzati. Pertanto, gli hacker non hanno bisogno di sequestrare gli account degli amministratori di dominio o di altri utenti privilegiati. Un qualsiasi account compromesso funziona.
In secondo luogo, ciascun servizio in un dominio Kerberos deve essere associato a un account di servizio responsabile dell'esecuzione del servizio nel dominio. Gli account di servizio consentono a Kerberos di autenticare servizi, emettere ticket di servizio e applicare controlli di sicurezza. Questi account forniscono anche un bersaglio agli hacker, poiché spesso dispongono di privilegi elevati.
In terzo luogo, i ticket Kerberos vengono crittografati utilizzando gli hash delle password degli account associati come chiavi. Importante per il Kerberoasting, i ticket di servizio utilizzano gli hash delle password degli account di servizio rilevanti.
Le password degli account sono comode chiavi di crittografia simmetriche perché solo il KDC e il relativo servizio dovrebbero conoscere quella password. Tuttavia, poiché i ticket vengono crittografati utilizzando gli hash delle password, gli hacker possono decodificare le password degli account di servizio violando la crittografia di un ticket.
Inoltre, gli account di servizio configurati manualmente spesso hanno il flag "la password non scade mai" abilitato. Nelle reti di lunga data, ciò può significare che gli account di servizio utilizzano password molto vecchie che seguono linee guida di sicurezza obsolete, rendendole facili da decifrare.