Zerologon, ¡parchea o muere!

Nacho Brihuega    1 octubre, 2020
Zerologon, ¡parchea o muere!

Zerologon. Si te dedicas al mundo IT y no aún no has escuchado este nombre, preocúpate y sigue leyendo.

Zerologon es, posiblemente, la vulnerabilidad de este año tan “especial” y seguramente de los últimos. Es una de esas vulnerabilidades que no deja indiferente a nadie. Antes de nada, ¿es crítica la vulnerabilidad? Sí, sí y mil veces sí. Personalmente diría que es la vulnerabilidad más crítica que he conocido desde que entré en este mundo de la ciberseguridad.

Comencemos por el principio: Zerologon (CVE-2020-1472) fue descubierto por la empresa Secura en agosto de 2020, el cual fue reportado a Microsoft, quien le asignó un CVSS de 10.0 (sobre 10, la mayor criticidad posible). Posteriormente, el día 11 de septiembre, Secura publicó un advisory y un paper sobre la vulnerabilidad, en el que se incluía una herramienta para detectar máquinas vulnerables. Tras esto, se han publicado numerosas PoC y herramientas que permiten explotar la vulnerabilidad.

¿Por qué es tan crítica esta vulnerabilidad?

Porque permite a cualquier usuario (ni siquiera requiere estar en el dominio) con conectividad al DC resetear la contraseña del domain admin. Os animo a leer el detalle que prepararon desde hackplayers sobre este tema.

Análisis práctico de Zerologon

Una vez vista la teoría, vamos a la práctica. Para testear la vulnerabilidad se ha creado un DC en una máquina virtual, en mi caso la máquina víctima tiene la IP: 192.168.0.21

En primer lugar, una vez se tiene conectividad al DC, se puede usar el script de Secura para testear si el DC es vulnerable.

Sin embargo, uno de los parámetros del script es el hostname. Para ello, podemos emplear nmap:

O bien se puede hacer uso de una enumeración SMB con Crackmapexec:

Y, como se observa pasando ese parámetro junto con la IP, el script nos da como resultado si el DC es vulnerable a Zerologon.

Una vez chequeado que es vulnerable, haciendo uso de este repositorio dispone de dos scripts:

  • CVE-2020-14-72-exploit.py: permite automatizar la explotación de la vulnerabilidad.
  • Restorepassword.py: permite restaurar la contraseña.

Sin embargo, si lo ejecutamos tal cual, nos encontraremos con este problema de impacket:

Para solucionar esto podemos optar por vías:

Ahora ejecutándolo de nuevo, funciona:

Así mismo, el autor de Mimikatz ya ha actualizado la herramienta para aprovechar esta vulnerabilidad. En este enlace se puede observar el GIF que ha preparado con la PoC.

¿Cómo se puede aprovechar esta funcionalidad? Aprovechando este recurso tenemos el comando tal cual:

secretsdump.py -hashes :31d6cfe0d16ae931b73c59d7e0c089c0 'DOMAIN/DC_NETBIOS_NAME$@dc_ip_addr'

Siendo en nuestro caso:

Obteniendo listar todos los hashes de los usuarios del dominio.

A continuación, se podrían crackear los hashes o bien emplear la técnica de Pass the Hash para autenticarse en el DC. Para ello, se puede usar pth-winexe o evil-winrm con el hash de administrador:

Para restaurarla contraseña, tendremos que recurrir al script “restorepassword”:

python restorepassword.py <DOMAIN><hostname>@<hostname> -target-ip IP -hexpass 54656d706f7………etc

o bien emplear esta funcionalidad.

python3 reinstall_original_pw.py DC_NETBIOS_NAME DC_IP_ADDR ORIG_NT_HASH

Acordaos de restaurar la password si lo probáis en un algo test de intrusión.

Y sobre todo…Parchea, parchea, pachea

Recomendaciones

Identificar con el script de check de Secura las máquinas vulnerables y aplicar el parche:

Referencias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *