
rdpscan para la vulnerabilidad CVE-2019-0708 bluekeep
Este es un escáner rápido y sucio para la vulnerabilidad CVE-2019-0708 en Microsoft Remote Desktop.
Ahora mismo, hay alrededor de 900.000 máquinas en Internet público vulnerables a esta vulnerabilidad,
por lo que muchos esperan que pronto aparezca un gusano como WannaCry y notPetya. Por tanto, escanea tus redes
y aplica el parche (o al menos, habilita NLA) en los sistemas vulnerables.
Esta es una herramienta de línea de comandos. Puedes descargar el código fuente y compilarlo
tú mismo, o descargar uno de los binarios precompilados para Windows o macOS desde el enlace anterior.
Esta herramienta se basa por completo en el parche rdesktop de https://github.com/zerosum0x0/CVE-2019-0708.
Simplemente he recortado el código para poder compilarlo fácilmente en macOS y Windows,
además de añadir la capacidad de escanear múltiples objetivos.
Estado
Esto tiene solo unos días de vida y es experimental. Sin embargo, lo estoy probando escaneando
todo Internet (con la ayuda de masscan, así que estoy resolviendo muchos problemas
bastante rápido. Puedes intentar contactarme en Twitter (@erratarob) para ayuda/comentarios.
- 2019-05-38 - Mejores descripciones de los resultados de salida, así como documentación sobre lo que significan (ver más abajo).
- 2019-05-27 - Publicados binarios para Windows y macOS (haz clic en las insignias de arriba).
- 2019-05-26 - corrigiendo los problemas de red de Windows
- 2019-05-25 - Linux y macOS funcionan bien, Windows tiene algunos errores de red
- 2019-05-24 - funciona en Linux y macOS, Windows tiene algunos errores de compilación
- 2019-05-23 - actualmente trabajando en macOS dentro de XCode
Uso principal
Para escanear una red, ejecútalo de la siguiente manera:
rdpscan 192.168.1.1-192.168.1.255
Esto produce uno de 3 resultados para cada dirección:
- SAFE - si se ha determinado que el objetivo está parcheado o al menos requiere CredSSP/NLA
- VULNERABLE - si se ha confirmado que el objetivo es vulnerable
- UNKNOWN - si el objetivo no responde o tiene algún fallo de protocolo
Cuando no hay nada en una dirección IP objetivo, las versiones antiguas imprimían
el mensaje "UNKNOWN - connection timed out". Al escanear redes grandes,
esto produce una sobrecarga de demasiada información sobre sistemas que no te
interesan. Por lo tanto, la nueva versión por defecto no produce esta información
a menos que añadas -v (para verbose) en la línea de comandos.
Puedes aumentar la velocidad con la que escanea redes grandes incrementando
el número de workers:
rdpscan --workers 10000 10.0.0.0/8
Sin embargo, en mi ordenador solo produce unos 1500 workers, debido a las
limitaciones del sistema, no importa lo alto que configure este parámetro.
Puedes aumentar la velocidad aún más usando esto en combinación
con masscan, descrito en la sección de abajo.
Interpretación de los resultados
Hay tres respuestas generales:
- SAFE - que significa que el objetivo probablemente está parcheado o no es
vulnerable al fallo.
- VULNERABLE: que significa que hemos confirmado que el objetivo es vulnerable
a este fallo, y que cuando llegue el gusano, probablemente se infectará.
- UNKNOWN: significa que no podemos confirmar ni lo uno ni lo otro, normalmente
porque el objetivo no responde o no está ejecutando RDP, que es la gran
mayoría de las respuestas. También, cuando los objetivos están sin recursos
o experimentan problemas de red, obtendremos muchos de estos. Finalmente,
los errores de protocolo son responsables de muchos.
Aunque las tres respuestas principales son SAFE, VULNERABLE y UNKNOWN,
contienen texto adicional que explica el diagnóstico. Esta sección describe
las distintas cadenas que verás.
SAFE
Hay tres razones principales por las que creemos que un objetivo está seguro:
- SAFE - Target appears patched
Esto ocurre cuando el objetivo no responde a la solicitud de activación.
Esto significa que es un sistema Windows que ha sido parcheado, o un sistema
que no era vulnerable desde el principio, como Windows 10 o Unix.
- SAFE - CredSSP/NLA required
Esto significa que el objetivo requiere primero autenticación a nivel de red (NLA) antes
de que se pueda establecer la conexión RDP. La herramienta no puede pasar de este punto
sin credenciales legítimas, por lo que no puede determinar si el objetivo ha sido
parcheado. Sin embargo, los atacantes tampoco pueden continuar más allá de este punto
para explotar sistemas vulnerables, por lo que probablemente estés "seguro".
No obstante, cuando aparezcan exploits, las personas internas con nombres de usuario
y contraseñas válidos podrán explotar el sistema si no está parcheado.
- SAFE - not RDP
Esto significa que el sistema no es RDP, pero tiene algún otro servicio que utiliza
este mismo puerto y produce una respuesta que claramente no es RDP. Los ejemplos comunes
son HTTP y SSH. Ten en cuenta, sin embargo, que en lugar de un protocolo identificable,
un servidor puede responder con un paquete RST o FIN. Estos se identifican como UNKNOWN
en lugar de SAFE/
VULNERABLE
Esto significa que hemos confirmado que el sistema es vulnerable al fallo.
- VULNERABLE - got appid
Solo hay una respuesta cuando el sistema es vulnerable: esta.
UNKNOWN
Hay una infinidad de variaciones para UNKNOWN.