
Outil d'exploitation automatique Zerologon | CVE-2020-1472
Le protocole de chiffrement vulnérable est mis en œuvre à la place du mécanisme d'authentification du protocole Netlogon. Un attaquant non authentifié peut, en exploitant la vulnérabilité Zerologon, définir le mot de passe du compte machine du contrôleur de domaine sur une valeur nulle (NT hash = 31d6cfe0d16ae931b73c59d7e0c089c0). Ainsi, l'attaquant peut accéder au contrôleur de domaine avec les identifiants ainsi créés et obtenir les identifiants des autres utilisateurs. L'obtention des identifiants des utilisateurs autorisés permet d'obtenir une session avec des privilèges élevés sur le contrôleur de domaine.
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python3 ADZero.py dc_ip
En utilisant l'outil ADZero développé par l'équipe Privia Security, il est possible d'obtenir une session Command Prompt avec les privilèges nt authority\system sur un contrôleur de domaine vulnérable à Zerologon.
L'exécution de la commande python3 ADZero.py dc_ip permet d'obtenir une session Command Prompt sur le contrôleur de domaine possédant l'adresse IP dc_ip.
L'outil ADZero envoie une requête de connexion SMB avec des identifiants nuls afin d'obtenir les informations dc_name (nom de la machine) et dom_name (nom du domaine) du contrôleur de domaine cible. À partir de la réponse, les informations dc_name (nom de la machine) et dom_name (domaine) du contrôleur de domaine peuvent être extraites.
La vulnérabilité est déclenchée en utilisant les informations dc_name (nom de la machine), com_name (compte machine formé en ajoutant le symbole $ à la fin du nom de la machine) et dc_ip (adresse IP du contrôleur de domaine). Suite à la requête sur le protocole Netlogon Remote, la vulnérabilité est déclenchée et le mot de passe de com_name (compte machine) est défini sur une valeur nulle (NT hash = 31d6cfe0d16ae931b73c59d7e0c089c0).
En utilisant le module secretdump.py, l'un des modules d'Impacket, avec les informations com_name (compte machine), dom_name, dc_ip et le mot de passe nul créé pour com_name, le mot de passe de l'utilisateur Administrator est dumpé sous forme de hash LM:NTLM à partir du contrôleur de domaine. De plus, le hash LM:NTLM obtenu lors du dump est écrit dans un fichier nommé out.
L'utilisation du hash LM:NTLM obtenu avec le module smbexec.py d'Impacket permet d'obtenir une session Command Prompt sur le contrôleur de domaine. La technique consistant à utiliser la valeur du hash LM:NTLM comme mot de passe est appelée Pass The Hash. Une session meterpreter sur le contrôleur de domaine peut être obtenue en utilisant la valeur du hash LM:NTLM écrite dans le fichier out avec le module d'exploitation exploit/windows/smb/psexec du Metasploit Framework.
