Thomas il motore hack a velocità massima sui binari dell'IPT
Venerdì 31 maggio, siamo stati invitati ad un workshop su Active Directory presso Bureau Veritas Cybersecurity. In questo blogpost, parleremo della nostra esperienza e di ciò che abbiamo imparato.
Il workshop è stato tenuto da Max Rozendaal e Thomas "the hacking engine" Oldengram. Hanno iniziato con una breve presentazione, dopodiché siamo stati gettati nel profondo.
Active Directory? Che cos'è?
Active Directory (AD) è un servizio sviluppato da Microsoft che consente di gestire l'accesso agli account e ai dispositivi in una rete. Utilizza i Controller di Dominio (DC) per gestire questa funzionalità. Un Controller di Dominio è un server che risponde alle richieste di autenticazione di sicurezza all'interno della rete, come l'accesso, l'accesso alle risorse e la convalida delle autorizzazioni.
Nell'ambiente Active Directory, i domini hanno una collezione di oggetti Active Directory, come utenti, gruppi, computer e altre risorse. Un gruppo di domini all'interno di un ambiente di questo tipo si chiama albero e un insieme di alberi si chiama foresta.
La fiducia è un meccanismo che consente agli utenti di accedere alle risorse di un altro dominio. La fiducia può essere stabilita in tre modi:
- Fiducia a una via
- Fiducia bidirezionale (predefinita)
- Fiducia transitiva, che estende la fiducia ad altri domini.
Impostazione del laboratorio
Il laboratorio di hacking ruotava intorno a un "Gioco di Active Directory" (GOAD), che è stato sviluppato da Mayfly277 e può essere trovato qui: https://github.com/Orange-Cyberdefense/GOAD
Siamo stati informati su 2 domini rilevanti:
- DC01: 192.168.56.10 (sevenkingdoms.local)
- DC02: 192.168.56.11 (winterfell.north.sevenkingdoms.local)
Il nostro jumpserver era 13.94.204.183, al quale abbiamo potuto accedere tramite SSH.
Questo blogpost contiene spoiler per alcune delle sfide del "Gioco di Active Directory" sviluppate da Mayfly277.
Entriamo nel regno di Active Directory: Sessioni NULL!
Per la prima sfida, dovevamo compromettere il maggior numero possibile di account spruzzando le password degli account presenti nel nostro ambiente Active Directory. Per raggiungere questo obiettivo, abbiamo cercato di capire quali account erano associati ai domini. Ci è stato detto di iniziare con il dominio winterfell.north.sevenkingdoms.local . Possiamo accedere con una sessione NULL (una sessione senza nome utente o password) ed enumerare gli utenti del dominio.
Come possiamo vedere, Samwell Tarly ha nella sua descrizione la password "Heartbane", quindi eseguiamo uno spray di password utilizzando questa password.
Per prima cosa creiamo un elenco di utenti utilizzando il seguente comando:
nxc smb 192.168.56.11 -u '' -p '' --users | awk '{ print $5 }' users.txt
E utilizziamo questo elenco per fare lo spray della password:
Vediamo che otteniamo un accesso per l'utente Samwell Tarley. A volte, più utenti nel dominio utilizzano la stessa password. Purtroppo Samwell Tarley è l'unico che utilizza la password Heartbane, quindi non è il nostro caso.
Ma c'è di più! Max e Thomas ci hanno informato che spesso vengono utilizzate password non sicure per gli account. Le password più diffuse includono la stagione con l'anno, il nome dell'azienda o il nome dell'account. Abbiamo quindi effettuato uno spray di password sugli utenti del dominio citato, utilizzando come password il loro nome utente. E siamo riusciti a ottenere una corrispondenza per l'utente hodor.
Terrore della certificazione
La seconda sfida consisteva nel diventare amministratore del dominio richiedendo un certificato per tale account. Abbiamo già trovato due account per winterfell.north.sevenkingdoms.local, ma per risparmiare tempo ci è stato fornito anche un account per il dominio sevenkingdoms.local: Renly.Baratheon:lorastyrell.
Abbiamo utilizzato il seguente comando per trovare le configurazioni dei Servizi di Certificazione di Active Directory vulnerabili, utilizzando le credenziali di renly.baratheon:
user@ubuntu-jumpbox:~$ certipy find -vulnerable -u renly.baratheon -p lorastyrell -dc-ip 192.168.56.10 -stdout
Nell'output di questo comando abbiamo ottenuto il nome del modello e l'autorità del certificato:
Nome del modello : ESC1 Nome di visualizzazione : ESC1 Autorità di certificazione : SEVENKINGDOMS-CA
Quindi il passo successivo è stato quello di richiedere un certificato per l'account amministratore del dominio ADMINISTRATOR, che è un account del dominio SEVENKINGDOMS.LOCAL che abbiamo trovato utilizzando bloodhound.
user@ubuntu-jumpbox:~$ certipy req -u renly.baratheon @SEVENKINGDOMS.LOCAL -p lorastyrell -target-ip 192.168.56.10 -ca SEVENKINGDOMS-CA -template ESC1 -upn ADMINISTRATOR@SEVENKINGDOMS.LOCAL Certipy v4.8.2 - di Oliver Lyak (ly4k) [*] Richiesta di certificato tramite RPC [*] Richiesta di certificato riuscita [*] L'ID della richiesta è 22 [*] Ottenuto il certificato con UPN 'ADMINISTRATOR@SEVENKINGDOMS.LOCAL' [*] Il certificato non ha un SID oggetto [*] Salvato il certificato e la chiave privata in 'administrator.pfx'.
Successivamente, otteniamo l'hash della password dell'account amministratore.
E siamo dentro! Yeey!
Pensieri finali
Vorremmo ringraziare Max e Thomas per l'incredibile workshop. È stato fantastico ascoltare in prima persona come hanno utilizzato gli attacchi di Active Directory per penetrare nei server dei loro clienti. In particolare, è stato interessante sentire come il Red Teaming utilizzi gli account AD per fare molti più danni di quanto pensassimo in precedenza. Ad esempio, hanno parlato di come a volte le password AD vengano utilizzate anche al di fuori di un ambiente AD, consentendo loro di prendere il controllo di altri servizi che a prima vista sembrano disconnessi dalla loro rete.
Nel complesso, ci siamo divertiti molto e speriamo di partecipare presto ad un altro workshop.
Lisanne e Michel