CVE-2020-1350 (SIGRed) - Exploit de DoS de DNS de Windows
Los créditos por el fallo son enteramente de Check Point Research (@_cpresearch_) quienes hicieron un increíble análisis de este fallo (gracias a @sagitz_ por la publicación)
Su análisis se puede encontrar aquí.
Este exploit fue escrito por @maxpl0it
Resumen rápido de cómo funciona:
- En la LAN, se provoca una solicitud DNS (más específicamente, una solicitud de los registros SIG) para un dominio malicioso (por ejemplo, 9.evil_domain.com)
- Esta se envía al servidor DNS del servidor Windows vulnerable
- El servidor vulnerable envía una solicitud al DNS al que reenvía las solicitudes (normalmente las IP estándar de Google)
- El DNS de Google responde con los servidores de nombres del dominio malicioso
- Luego, el servidor vulnerable actúa como cliente DNS y envía una solicitud al servidor DNS malicioso
- El servidor malicioso responde con un payload que desborda un número de 2 bytes, provocando que se realice una asignación más pequeña de lo necesario
- La firma se copia y las cosas se rompen (por supuesto), provocando un fallo en el servidor DNS del servidor vulnerable
Configuración general:
- Este exploit requiere que configures un dominio con sus propios servidores de nombres apuntando a tu servidor.
- Configura el servidor y ejecuta este script. Escuchará en el puerto 53 tanto en TCP como en UDP
- Si recibes un error que dice que los puertos están ocupados, usa netstat -pa para averiguar qué está escuchando en los puertos del dominio (probablemente systemd-resolved) y desactívalo + detenlo. Si no hay nada escuchando en el servidor, asegúrate de haber terminado todas las instancias de este script antes de volver a ejecutarlo.
Por ejemplo, ejecuté python sigred_dos.py ibrokethe.net para iniciar el servidor DNS malicioso
Configuración de pruebas:
- Si tienes acceso al servidor Windows, puedes configurar un reenviador condicional para que apunte ibrokethe.net a la dirección IP del host que ejecuta el script. Esto efectivamente omite los pasos 3 y 4 del resumen.
Ejecución:
- Para activar la vulnerabilidad en el servidor DNS de Windows, ejecuta
nslookup -type=sig 9.your_domain_name_here dns_server_to_target
El subdominio '9' es realmente necesario aquí. No tienes que hacer ningún cambio de registros de dominio para esto, ya que el script se encarga de ello.
Como ejemplo: ejecuté nslookup -type=sig 9.ibrokethe.net 127.0.0.1 mientras ejecutaba esto en el servidor.