
CVE-2020-1472
CVE-2020-1472 - Implementación en Python de la vulnerabilidad Zero Logon
Descripción
- Un script en Python que utiliza la librería Impacket para probar la vulnerabilidad CVE-2020-1472 - Zerologon (créditos a la investigación de Secura).
- El fallo se origina en el Protocolo remoto Netlogon, disponible en los controladores de dominio de Windows, que se utiliza para diversas tareas relacionadas con la autenticación de usuarios y máquinas.
- Específicamente, el problema existe en el uso del cifrado AES-CFB8 para las sesiones Netlogon. El estándar AES-CFB8 requiere que cada "byte" de texto plano tenga un vector de inicialización (IV) aleatorio, impidiendo que los atacantes adivinen contraseñas. Sin embargo, la función ComputeNetlogonCredential de Netlogon establece el IV en 16 bits fijos – no aleatorios – lo que significa que un atacante podría controlar el texto descifrado.
- "Debido al uso incorrecto de un modo de operación AES, es posible suplantar la identidad de cualquier cuenta de equipo (incluida la del propio [controlador de dominio]) y establecer una contraseña vacía para esa cuenta en el dominio", según los investigadores de Secura.

- El script intenta realizar una omisión de autenticación de Netlogon. El script terminará cuando la omisión se realice correctamente.
- Cuando un controlador de dominio está parcheado, el script se detendrá después de enviar 2000 pares de llamadas RPC (el objetivo no es vulnerable con una probabilidad de falso negativo del 0.04%).
- Tenga en cuenta que, por defecto, esto cambia la contraseña de la cuenta del controlador de dominio. Esto permite realizar DCSync, pero también rompe la comunicación con otros DC.
- Más información e investigación original aquí
Requisitos previos
pip install impacket
o descargue la versión de impacket aquí. Descomprímala y, en el directorio donde la colocó, ejecute:
pip install .
Uso
Dado un controlador de dominio llamado DC-NAME con dirección IP X.X.X.X, ejecute el script de la siguiente manera:
python cve-2020-1472.py DC-NAME X.X.X.X
El nombre del DC es el nombre de equipo NetBIOS. Si este nombre no es correcto, el script fallará con un error STATUS_INVALID_COMPUTER_NAME.