
CVE-2020-1472
CVE-2020-1472 - Implementazione Python della vulnerabilità Zero Logon
Descrizione
- Uno script Python che utilizza la libreria Impacket per testare la vulnerabilità CVE-2020-1472 - Zerologon (crediti alla ricerca Secura).
- Il difetto deriva dal Netlogon Remote Protocol, disponibile sui controller di dominio Windows, utilizzato per vari compiti relativi all'autenticazione di utenti e macchine.
- Nello specifico, il problema risiede nell'uso della crittografia AES-CFB8 per le sessioni Netlogon. Lo standard AES-CFB8 richiede che ogni 'byte' di testo in chiaro abbia un vettore di inizializzazione (IV) randomizzato, impedendo agli aggressori di indovinare le password. Tuttavia, la funzione ComputeNetlogonCredential di Netlogon imposta l'IV a 16 bit fissi – non randomizzati – il che significa che un aggressore potrebbe controllare il testo decifrato.
- "A causa dell'uso errato di una modalità di funzionamento AES, è possibile falsificare l'identità di qualsiasi account computer (incluso quello del [Controller di Dominio] stesso) e impostare una password vuota per quell'account nel dominio", secondo i ricercatori Secura.

- Lo script tenta di eseguire il bypass dell'autenticazione Netlogon. Lo script terminerà quando il bypass viene eseguito con successo.
- Quando un controller di dominio è stato corretto, lo script si fermerà dopo aver inviato 2000 coppie di chiamate RPC (il target non è vulnerabile con una probabilità di falso negativo dello 0,04%).
- Nota che per impostazione predefinita questo cambia la password dell'account del controller di dominio. Ciò consente di eseguire DCSync, ma interrompe anche la comunicazione con altri DC.
- Maggiori informazioni e ricerca originale qui
Prerequisiti
pip install impacket
oppure scarica la versione di impacket qui. Decomprimila e, nella directory in cui l'hai posizionata, esegui:
pip install .
Utilizzo
Dato un controller di dominio chiamato DC-NAME con indirizzo IP X.X.X.X, esegui lo script come segue:
python cve-2020-1472.py DC-NAME X.X.X.X
Il nome del DC è il nome computer NetBIOS. Se questo nome non è corretto, lo script fallirà con un errore STATUS_INVALID_COMPUTER_NAME.