
rdpscan para la vulnerabilidad CVE-2019-0708 (bluekeep)
Este es un escáner rápido y sencillo para la vulnerabilidad CVE-2019-0708 en Escritorio Remoto de Microsoft.
En este momento, hay alrededor de 900.000 máquinas en Internet público vulnerables a esta vulnerabilidad,
por lo que muchos esperan un gusano pronto como WannaCry y notPetya. Por lo tanto, escanea tus redes y
parchea (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 de arriba.
Esta herramienta se basa completamente en el parche de 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 y es experimental. Sin embargo, lo estoy probando escaneando
todo el Internet (con la ayuda de masscan), por lo 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 de lo que significan (ver más abajo).
- 2019-05-27 - Binarios para Windows y macOS publicados (haz clic en las insignias de arriba).
- 2019-05-26 - Corrigiendo problemas de red en 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 (SEGURO) - si el objetivo ha sido determinado como parcheado o al menos requiere CredSSP/NLA
- VULNERABLE (VULNERABLE) - si se ha confirmado que el objetivo es vulnerable
- UNKNOWN (DESCONOCIDO) - 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
importan. Por lo tanto, la nueva versión por defecto no produce esta
información a menos que añadas -v (verbose) en la línea de comandos.
Puedes aumentar la velocidad de escaneo de redes grandes incrementando
el número de workers:
rdpscan --workers 10000 10.0.0.0/8
Sin embargo, en mi computadora, solo produce alrededor de 1500 workers, debido
a las limitaciones del sistema, sin importar qué tan alto configure este parámetro.
Puedes aumentar la velocidad aún más usando esto junto
con masscan, descrito en la segunda sección a continuación.
Interpretación de los resultados
Hay tres respuestas generales:
- SAFE (SEGURO) - significa que el objetivo probablemente está parcheado o de otro modo
no es vulnerable al error.
- VULNERABLE (VULNERABLE): significa que hemos confirmado que el objetivo es vulnerable
a este error, y que cuando llegue el gusano, probablemente se infectará.
- UNKNOWN (DESCONOCIDO): significa que no podemos confirmar de ninguna manera, generalmente porque
el objetivo no responde o no está ejecutando RDP, que es
la gran mayoría de las respuestas. Además, cuando los objetivos están sin
recursos o experimentando problemas de red, obtendremos
muchas de estas. Finalmente, los errores de protocolo son responsables
de muchas.
Mientras que las tres respuestas principales son SAFE, VULNERABLE y UNKNOWN,
contienen texto adicional que explica el diagnóstico. Esta sección
describe las diversas cadenas que verás.
SAFE (SEGURO)
Hay tres razones principales por las que creemos que un objetivo es seguro:
- SAFE - Target appears patched (SEGURO - El objetivo parece parcheado)
Esto sucede cuando el objetivo no responde a la solicitud
desencadenante. Esto significa que es un sistema Windows que ha sido parcheado,
o un sistema que no era vulnerable para empezar, como Windows 10
o Unix.
- SAFE - CredSSP/NLA required (SEGURO - Se requiere CredSSP/NLA)
Esto significa que el objetivo primero requiere Autenticación a Nivel de Red antes de
que se pueda establecer la conexión RDP. La herramienta no puede pasar este punto, sin
credenciales legítimas, por lo que no puede determinar si el objetivo ha sido parcheado.
Sin embargo, los hackers tampoco pueden continuar más allá de este punto para explotar sistemas vulnerables,
por lo que probablemente estás "seguro". Pero cuando aparezcan exploits, los internos con nombres de usuario/contraseñas válidos
podrán explotar el sistema si no está parcheado.
- SAFE - not RDP (SEGURO - no es RDP)
Esto significa que el sistema no es RDP, sino que tiene algún otro servicio que utiliza
este mismo puerto y produce una respuesta que claramente no es RDP. Ejemplos comunes son
HTTP y SSH. Ten en cuenta 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 (VULNERABLE)
Esto significa que hemos confirmado que el sistema es vulnerable al error.
- VULNERABLE - got appid (VULNERABLE - appid obtenido)
Solo hay una respuesta cuando el sistema es vulnerable, esta.
UNKNOWN (DESCONOCIDO)
Hay muchísimas variaciones para desconocido