Active Directory: Attacco Kerberoasting

cc0 hacker

Introduzione

Kerberoasting è una tecnica utilizzata per ottenere gli hash delle password per gli utenti di Active Directory (AD) con valore servicePrincipalName (SPN). Negli ambienti AD, gli SPN vengono registrati su account utente o computer, noti come “service account.” Questi account vengono utilizzati per eseguire servizi e applicazioni e di solito posseggono il minimo privilegio necessario per svolgere la loro funzione. Quando un cliente richiede a servizio da un server, utilizza l’SPN per individuare il service accont collegato al servizio. Il client quindi esegue l’autenticazione al servizio utilizzando le credenziali del service accont, che vengono archiviati come hash in AD. Nel caso di Kerberoasting, un utente malintenzionato può sfruttare il valore SPN di un service accont per richiedere un service ticket (TGS). Il Ticket TGS può essere crittografato (tramite RC4) con la password hash del service accont assegnato all’SPN richiesto come chiave. Ciò significa che un utente malintenzionato che ruba i ticket TGS nel traffico di rete o li estrae dalla memoria, può ottenere l’hash della password del service accont ed eseguire un attacco brute-force offline per recuperare la password in chiaro. Tieni presente che gli attacchi Kerberoasting e Pass-the-Ticket sono due tecniche diverse utilizzate per rubare o impersonare credenziali valide in un ambiente Kerberos. Gli attacchi Kerberoasting possono essere eseguiti utilizzando vari strumenti disponibili pubblicamente e utilità come gli script Impacket.

Strumenti e Tecniche

Per questo attacco non viene utilizzato un solo strumento, ma un’intera suite composta da Rubeus, Impacket, John the Ripper, Hashcat.

Strumento 1: Impacket

L’attacco Kerberoasting che sfrutta lo script Impacket è composto da tre fasi principali.

Fase 1: Identificazione degli SPN e richiesta dei TGS

Il primo passaggio negli attacchi Kerberoasting è enumerare (o identificare) i servicePrincipalNames e richiedere i service ticket (TGS). Lo script Impacket “GetUserSPNs” può eseguire tutti i passaggi necessari per richiedere
un TGS per un servizio, dato il suo SPN e le credenziali di dominio valide:

Usando una password
GetUserSPNs.py -outputfile kerberoastables.txt -dc-ip $KeyDistributionCenter 'DOMAIN/USER:Password'

Usando un hash NT
GetUserSPNs.py -outputfile kerberoastables.txt -hashes 'LMhash:NThash' -dc-ip $KeyDistributionCenter 'DOMAIN/USER'

Il comando precedente utilizza lo script “GetUserSPNs.py” e specifica un file di output, “kerberoastables.txt”, dove verranno archiviati gli hash delle password ottenuti. Il flag -dc-ip specifica l’indirizzo IP del controller di dominio e il flag -outputfile specifica dove verranno salvati gli hash delle password ottenuti. Utilizza anche l’argomento “DOMINIO/UTENTE:Password” o “DOMINIO/UTENTE” per fornire il dominio e il nome utente e l’hash password/NT di un utente di dominio valido per richiedere il TGS. Tieni presente che gli avversari possono anche sfruttare lo strumento “CrackMapExec” (CME) per eseguire operazioni Kerberoasting relativi ad un elenco di sistemi specificati da $TARGETS.

crackmapexec ldap $TARGETS -u $USER -p $PASSWORD --kerberoasting kerberoastables.txt --kdcHost $KeyDistributionCenter

Il comando precedente utilizza il flag –kerberoasting per specificare un file di output dove salvare gli hash della password ottenuti e il flag –kdcHost per specificare l’indirizzo IP del dominio.

Fase 2: Cracking offline dell’hash

Avendo rubato le password nel file kerberoastables.txt, l’avversario può eseguire un’attacco brute-force offline per ottenere la password in chiaro utilizzando strumenti di terze parti, come John the Ripper e Hashcat.

john --format=krb5tgs --wordlist=$wordlist kerberoastables.txt

Il comando precedente utilizza il flag –format=krb5tgs per specificare che gli hash nel file “kerberoastables.txt” sono nel formato Kerberos 5 TGS ​​(Ticket Granting Service) e –wordlist flag per specificare la posizione del file wordlist da utilizzare nel processo di cracking. Una volta eseguito il comando, John proverà a trovare una corrispondenza tra gli hash della password e le parole nel file Wordlist.

Fase 3: Utilizzare i nuovi privilegi per raggiungere ulteriori obiettivi

Una volta violata la password, l’aggressore può utilizzare le credenziali del service account per accedere alle risorse della rete. Inoltre può esfiltrare dati, spostarsi lateralmente all’interno della rete o aumentare i propri privilegi.

Strumento 2: Rubeus

L’attacco Kerberoasting che sfrutta Rubeus è composto da quattro fasi principali.

Fase 1: Enumerare servicePrincipalNames

Il primo passaggio di un attacco Kerberoasting consiste nell’identificare ed enumerare i nomi delle entità servizio (SPN), degli account di servizio di destinazione, con i privilegi desiderati. Per questo motivo, gli hacker possono sviluppare filtri LDAP personalizzati per cercare utenti con valori SPN registrati nel dominio corrente. Tieni presente che gli SPN sono composti da due parti: the service class and e l’host name. La service class è il nome del servizio, ad esempio “HTTP” o “ldap”, e l’host name è il nome host DNS o l’indirizzo IP della macchina su cui si trova il servizio. Ad esempio, un SPN per un server Web potrebbe essere “HTTP/server.example.com”, dove “HTTP” è la service class e “server.example.com” è l’host name.

Fase 2: Richiesta dei Ticket TGS

Un utente malintenzionato può prendere di mira service account specifici identificandoli ed enumerando gli SPN e quindi richiedere i Ticket Granting Service (TGS). Strumenti come Rubeus possono essere utilizzati per automatizzare questo processo estraendo gli hash delle password dalla memoria.

PS> Rubeus kerberoast /simple /outfile:passwordhashes.txt

Fase3: Decifrare la password online

Il prossimo passo nell’attacco è ottenere le password in chiaro dei service account. Questo processo viene eseguito utilizzando un attacco di forza bruta offline, il che significa che per l’aggressore non è necessario comunicare con l’Active Directory. Per eseguire questa attività, l’aggressore può utilizzare diversi strumenti come John the Ripper e Hashcat, progettati specificamente per il cracking delle password:

PS> .\hashcat -m 13100 -o cracked.txt -a 0 .\passwordhashes.txt .\wordlist.txt

il comando utilizza l’eseguibile hashcat e specifica i seguenti flag:
-m 13100: questo flag viene utilizzato per specificare il tipo di hash, in questo caso Kerberos 5 TGS (Ticket Grant Service);
-o cracked.txt: questo flag viene utilizzato per specificare il file di output in cui le password decifreate verranno salvate;
-a 0: questo flag viene utilizzato per specificare la modalità di attacco, in questo caso 0 sta per “Straight”.
Il comando specifica anche i percorsi dei file passwordhashes.txt e wordlist.txt. Una volta lanciato il comando, Hashcat tenterà di trovare una corrispondenza tra gli hash della password nel file passwordhashes.txt e le parole nel file wordlist.txt.

Fase 4: Utilizzare i nuovi privilegi per raggiungere ulteriori obiettivi

Una volta violata la password, l’aggressore può utilizzare le credenziali del service account per accedere alle risorse della rete. Ad esempio, avendo le credenziali dell’account, l’aggressore può utilizzare lo strumento runas con il file /netonly parametro per eseguire PowerShell come utente “ServiceAccountx”.

Kerberoasting: Metodi di rilevamento dell’attacco

È possibile identificare vari segni di Kerberoasting osservando il registro eventi di Windows per richieste insolite di Ticket Grant Service (TGS).

ID evento 4769: è stato richiesto un TGS Kerberos.

Campi chiave: Account Name, Service Name, Client Address

ID evento 4770 – Un TGS Kerberos è stato rinnovato.

Campi chiave: Account Name, User ID, Service Name, Service ID

Kerberoasting: Tecniche di mitigazione dell’attacco

Per salvaguardare le password dei service account dagli attacchi Kerberoasting, è possibile adottare diverse misure come:

Tecnica di mitigazione 1: Rifiutare le richieste di autenticazione che non utilizzano Kerberos Flexible Authentication Secure Tunneling (FAST)

Questo è anche noto come Kerberos Armoring. Questa estensione di pre-autenticazione crea un canale sicuro di comunicazione tra il client e il controller di dominio, con l’obiettivo di migliorare la protezione dei Ticket Kerberos contro i tentativi di cracking delle password offline. Anche se FAST può eliminare i rischi legati a Kerberoasting, implementarlo in modo rapido ed efficace in un’organizzazione può rivelarsi impegnativo.

Tecnica di mitigazione 2: Eliminare l’uso di protocolli non sicuri in Kerberos

Sebbene disabilitare completamente RC4 sia un compito importante, è possibile configurare individualmente i service account per non accettare il protocollo RC4. Impostando l’attributo msDS-SupportedEncryptionTypes su 0x18 (24 decimale), verranno abilitati solo AES128 e AES256. Questa modifica non solo migliora la sicurezza, ma semplifica anche il rilevamento di attacchi dannosi poiché l’uso di RC4 in una richiesta TGS sarebbe un indicatore più facile da individuare.

Tecnica di mitigazione 3: Adozione di pratiche di igiene delle password complesse per i service account

Le password deservice account devono essere generate in modo casuale e avere una lunghezza minima di 30 caratteri ed essere cambiate frequentemente.

Conclusioni

In conclusione, la crescente frequenza e sofisticatezza degli attacchi contro Active Directory sono evidenti. Gli attacchi comuni discussi in questo rapporto, come Kerberoasting, ma anche Pass the Hash e Pass the Ticket, esemplificano la miriade di modi in cui gli avversari possono sfruttare le vulnerabilità all’interno dell’infrastruttura Active Directory di un’organizzazione. Considerando il ruolo cruciale che Active Directory svolge nella regolamentazione dell’accesso a un file dati e a risorse sensibili, è imperativo che le organizzazioni adottino misure proattive per difendersi da questo tipo di attacchi. Ciò richiede un approccio multilivello, che comprende controlli di sicurezza regolari, valutazioni delle vulnerabilità e monitoraggio continuo per rilevare e affrontare le minacce in tempo reale. È fondamentale riconoscere che gli aggressori aggiornano costantemente le loro tattiche, richiedendo alle organizzazioni di rimanere vigili e ad aggiornare costantemente le proprie misure di sicurezza per contrastare le minacce emergenti. Investendo in misure di sicurezza globali e ravvicinate, monitorando l’evoluzione del panorama delle minacce, le organizzazioni possono mitigare il rischio di cadere vittime di un attacco ad Active Directory.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *