Cos’è Zerologon?

Zerologon è:

una vulnerabilità nella crittografia del processo Netlogon di Microsoft che consente un attacco contro i controller di dominio Microsoft Active Directory, rendendo possibile per un hacker impersonare qualsiasi computer, compreso il controller del dominio root.

Zerologon

Zerologon è il nome che è stato dato a una vulnerabilità identificata in CVE-2020-1472. Si chiama Zerologon a causa del difetto nel processo di logon in cui tutti gli elementi del vettore di inizializzazione (Initialization Vector, IV) sono impostati a zero per tutto il tempo, mentre un vettore di inizializzazione dovrebbe essere sempre costituito da un numero casuale.

A questa pericolosa vulnerabilità è associato un livello di gravità di 10 su 10 (CVSS v3.1) del Common Vulnerability Scoring System (CVSS). Sono noti exploit proof-of-concept (POC) attivi, ed è molto probabile che presto si verificheranno attacchi nel mondo reale.

La Cybersecurity and Infrastructure Security Agency ha emanato una direttiva d'emergenza che ordina alle agenzie federali civili di applicare le patch o di disattivare immediatamente tutti i server Windows interessati e ha avvertito le organizzazioni non governative di fare lo stesso.

Microsoft ha rilasciato la prima di due patch nell'agosto 2020 e queste devono essere applicate a tutti i controller di dominio.

Questa vulnerabilità sfrutta un difetto crittografico nell'Active Directory Netlogon Remote Protocol di Microsoft (MS-NRPC) che consente agli utenti di accedere ai server che utilizzano NTLM (NT LAN Manager). Il problema maggiore di questa vulnerabilità è che MS-NRPC viene utilizzato anche per trasmettere specifiche modifiche dell'account, come ad esempio le password degli account dei servizi del computer. Ripensando alla sua origine, è comprensibile la logica che ha portato all'aggiunta di questa funzionalità, ma la mancanza di convalida della fonte nella richiesta di modifica di tali password è diventata un problema di sicurezza significativo.

Da qui in poi la situazione peggiora. La crittografia che è stata aggiunta a MS-NRPC non è stata scelta saggiamente. Nel 1883 il crittografo olandese Aguste Kerckhoff pubblicò 2 saggi, intitolati La Cryptographie Militaire (La crittografia militare), che delineavano i 6 principi chiave per la progettazione di sistemi crittografici. Il più noto di essi, il Principio di Kerckhoff, afferma che è necessario mantenere segreta la chiave crittografica, ma non bisogna affidarsi alla segretezza dell'algoritmo per proteggere i dati. Un altro modo per dirlo, al giorno d'oggi, è che dovremmo usare algoritmi ben noti, ben collaudati e affidabili.

L'algoritmo originariamente utilizzato per criptare il processo di logon in Windows NT era 2DES, che ora sappiamo avere problemi. Oggi MS-NRPC utilizza l'Advanced Encryption Standard (AES), considerato il punto di riferimento per la crittografia. Oltre alla scelta di un algoritmo di comprovata robustezza, è necessario selezionare ulteriori impostazioni per garantire un'adeguata resistenza. MS-NRPC utilizza un'impostazione oscura nota come AES-CFB8 (Advanced Encryption Standard - Cipher Feed Back 8 bit). AES-CFB8 è oscura perché non è ben nota e non è ben testata. L'utilizzo di AES-CFB8 all'interno di MS-NRPC genera un problema con il vettore di inizializzazione che dovrebbe essere un numero casuale, mentre MS-NRPC lo ha fissato a un valore di 16 byte impostati a zero. Questo valore è tutt'altro che casuale. È prevedibile. La crittografia viene spesso violata laddove è presente della prevedibilità.

Come siamo venuti a conoscenza di questa vulnerabilità

La vulnerabilità è stata annunciata a settembre 2020 da Tom Tervoort, un ricercatore olandese che lavora per Secura. Per la vulnerabilità sono state effettivamente rilasciate delle patch ad agosto, ma solo quando il ricercatore ha pubblicato il suo rapporto a settembre abbiamo iniziato a vedere i POC e altre attività. Dopo l'articolo di Tervoort che descriveva in dettaglio la sua scoperta e il processo che lo ha portato alla sua scoperta. Durante la sua ricerca ha notato una significativa mancanza di informazioni su MS-NRPC. Incuriosito, Tervoort ha cercato di ottenere maggiori informazioni. 

Anche se all'inizio Tervoort era alla ricerca della possibilità di un attacco person-in-the-middle, ha scoperto un'altra vulnerabilità dettagliata in CVE-2020-1424. Continuando la sua ricerca ha identificato quello che ora è noto come Zerologon. La parte critica della sua scoperta è che Microsoft ha implementato una variante unica della crittografia che è diversa da tutti gli altri protocolli RPC. Ai tempi di Windows NT, gli account assegnati a un computer non erano identificati come un elemento di prima classe, quindi Microsoft non poteva utilizzare lo standard Kerberos o NTLM per autenticare gli account dei computer o delle macchine. Di conseguenza gli sviluppatori hanno prodotto un'alternativa. È incredibilmente difficile creare codice e protocolli per la crittografia che siano inviolabili. Infatti può passare un tempo incredibilmente lungo prima che i difetti vengano scoperti, come in questo caso.

Come funziona l'attacco

Questa vulnerabilità permette a un hacker di acquisire il controllo di un controller di dominio (Domain Controller, DC), incluso il DC root.  Questo avviene modificando o rimuovendo la password per un account di servizio sul controller. L'hacker può quindi semplicemente causare un malfunzionamento del servizio o prendere il controllo e accedere all'intera rete.

Affinché gli aggressori possano sfruttare questa vulnerabilità, devono essere in grado di impostare una sessione TCP verso un DC.  Se si trovano fisicamente all'interno della rete, possono farlo alla scrivania di un utente o attraverso una porta aperta in un luogo come una sala conferenze. Questi exploit si qualificano come attacchi interni, gli attacchi oggi più costosi per un'azienda. Possono avere luogo anche dall'esterno della rete, a patto che riescano a trovare un punto d'appoggio per stabilire la sessione TCP verso il controller.

Utilizzando AES-CFB8 con un IV fisso di 16 byte a zero, Tervoort ha scoperto che è probabile che una ogni 256 chiavi utilizzate crei un testo cifrato con un valore di tutti zero. Si tratta di un numero estremamente ridotto di chiavi che consentono all'aggressore di cercare di creare un testo cifrato composto da tutti zero. Ci vorranno al massimo 2-3 secondi perché il computer dell'hacker lo faccia. 

E allora, perché è importante?

Se la macchina che comunica con un DC appartiene a un utente che sta semplicemente facendo il suo lavoro non c'è nessun problema reale. Si verifica la generazione di questo testo mal criptato ma il processo di autenticazione della rete continuerà a funzionare. Il problema si presenta solo quando un hacker cerca di sfruttare il sistema.

Nell'attacco provato da Tervoort, l'hacker dovrebbe prima falsificare la credenziale, o password, di un cliente sulla rete. A causa della non corretta implementazione dell'IV all'interno dell'MS-NRPC, sono necessari solo circa 256 tentativi per riuscire a farlo. Normalmente l'account di un utente viene bloccato dopo tre tentativi di indovinare una password, ma lo stesso non vale per un account associato a un computer o una macchina. Quando un computer si connette non c'è limite ai tentativi di password sbagliate, il che consente agli hacker di generare una sequenza continua di tentativi in un lasso di tempo ridotto per provare a guadagnare l'accesso. Devono trovare una delle chiavi che produce un testo cifrato composto da tutti zero.

Cosa possono fare gli hacker una volta che hanno falsificato l'identità di un computer in rete? Una volta compiuto il primo passo di falsificazione dell'identità, l'aggressore non conoscerà la chiave di cifratura effettiva della sessione. Gli aggressori sono stati in grado di falsificare la loro identità solo indovinando alla fine una delle 256 chiavi che producono un testo cifrato completamente nullo. Il passo successivo è quello di disattivare il meccanismo di "firma e sigillo".

Firma e sigillo di RPC è il meccanismo utilizzato per la cifratura del trasporto all'interno di MS-NRPC. Questo sembra un processo logico in quanto dovremmo criptare quanto più possibile i dati in transito, ma all'interno dell'MS-NRPC si tratta si una caratteristica opzionale che viene disattivata semplicemente non impostando un flag nell'intestazione di un messaggio. Una volta che il meccanismo di firma e sigillo è disattivato, i messaggi vengono inviati in chiaro e gli hacker sono ora in grado di intraprendere tutte le azioni che desiderano, compresa l'eliminazione di una password o la sua impostazione a un altro valore. A febbraio 2021 è prevista una patch da Microsoft per imporre il meccanismo di firma e sigillo.

Il terzo passo è quello di modificare la password dell’account che è stato falsificato. Il dispositivo più utile da falsificare è un server AD, preferibilmente addirittura il server AD root. Per modificare la password, gli aggressori utilizzano il messaggio NetServerPasswordSet2 in MS-NRPC. È possibile modificare una password semplicemente inviando il frame con la nuova password preferita. L'approccio più semplice è quello di rimuovere la password o di impostarla a un valore vuoto, l'hacker può a questo punto effettuare il login attraverso il normale processo. 

Se l'attacco ha come obiettivo un computer a caso in rete, allora tale computer non è più in grado di effettuare il login. La prima conseguenza di questo attacco è quindi un semplice attacco di rifiuto del servizio contro quel computer.

Impatto globale

Attualmente sono disponibili più exploit PoC pubblici e, qualora non venissero applicate le patch ai server AD, le aziende potrebbero subire gravi danni, poiché l'attacco potrebbe essere utilizzato per iniettare ransomware in una rete. 

Esistono degli strumenti per verificare se i propri server sono vulnerabili. Tervoort e Secura hanno rilasciato uno strumento su GitHub per verificare che i controller di dominio siano dotati delle patch o scoprire se sono vulnerabili.

La patch per CVE-2020-1472

Nell'agosto 2020, Microsoft ha rilasciato una patch per CVE-2020-1472 (Zerologon). A tutti i server AD (2008 R2 e superiori) dovrebbero essere applicate le patch il prima possibile. Ma il tempo medio che passa dal rilascio della patch all'installazione è ancora troppo lungo. I ricercatori affermano che in un'azienda media ci vogliono dai 60 ai 150 giorni (circa 5 mesi) dopo il rilascio di una patch affinché sia finalmente installata. Questo tempo è noto come il tempo medio di applicazione della patch (Mean Time to Patch, MTTP). 

Inoltre, purtroppo, la patch appena rilasciata risolve solo la metà del problema. Microsoft rilascerà la seconda fase della patch, che comprenderà la fase di applicazione, il 9 febbraio 2021. A quel punto, tutti i dispositivi saranno tenuti a utilizzare la modalità canale sicuro e, in caso contrario, sarà loro negato l'accesso. In caso di dispositivi non conformi più vecchi, questi dovranno essere aggiunti manualmente a una policy di gruppo che permette esplicitamente l'accesso ai dispositivi non conformi.

Patch virtuali

Poiché la patch che è stata rilasciata costituisce solo metà della soluzione, è necessario adottare ulteriori misure provvisorie per proteggere la rete, i dispositivi e i dati. Una di queste misure di protezione è la conferma dell'esistenza della vulnerabilità. Ci sono diversi strumenti, uno fornito da Secura e Tervoort, già disponibili per rilevare le vulnerabilità Zerologon sui server AD.

Le misure di sicurezza tradizionali dovrebbero essere sempre applicate per controllare gli account e le reti compromesse, il traffico dannoso e altri indicatori di compromissione. I sistemi di rilevamento e prevenzione delle intrusioni e i software antimalware per la rete e i dispositivi host (tutti gli endpoint) per monitorare la presenza di ransomware, virus e altre minacce sono fondamentali. I registri degli eventi devono essere raccolti, centralizzati e analizzati da un SIEM (Security Information & Event Manager). Una volta che i registri degli eventi sono analizzati, dovrebbero esserci persone e processi al posto giusto, per rispondere agli indicatori di compromissione (Indicators of Compromise, IoC). A quel punto, un team di risposta agli incidenti con solide procedure e conoscenze dovrebbe prendere in mano la situazione per decidere l'entità della compromissione e lavorare per una risoluzione.

C'è anche l'idea più recente del patching virtuale, una misura di sicurezza contro le minacce che sfruttano vulnerabilità note e sconosciute. La Zero Day Initiative (ZDI) di Trend Micro garantisce la protezione dei clienti 81 giorni prima del rilascio di una patch, grazie all'implementazione di livelli di policy e regole di sicurezza che prevengono e intercettano le vulnerabilità come Zerologon. 

Argomenti di Zerologon