Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
rdpscan-BlueKeep — Un escáner rápido para la vulnerabilidad CVE-2019-0708 "BlueKeep". | Kitploit
Herramientas/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
ReconocimientoEscáneres de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad de RedesPruebas de Penetración
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

Un escáner rápido para la vulnerabilidad CVE-2019-0708 "BlueKeep".

Ver Repositorio
12hace 7 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Windows download macOS download Linux download Follow

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:

root@kitploit:~
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:

root@kitploit:~
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.

  • UNKNOWN - no connection - timeout Esta es, con diferencia, la respuesta más común, y ocurre cuando la dirección IP objetivo no responde en absoluto. De hecho, es tan común que al escanear grandes rangos de direcciones suele omitirse. Tienes que añadir el indicador -v (verbose) para habilitarla.
  • UNKNOWN - no connection - refused (RST) Esta es, con diferencia, la segunda respuesta más común, y ocurre cuando el objetivo existe y responde al tráfico de red, pero no está ejecutando RDP, por lo que rechaza la conexión con un paquete TCP RST.
  • UNKNOWN - RDP protocol error - receive timeout Esta es la tercera respuesta más común, y ocurre cuando hemos establecido correctamente una conexión RDP, pero luego el servidor deja de respondernos. Esto se debe a errores de red y a que el sistema objetivo está sobrecargado por alguna razón. También podrían ser errores de red en este extremo, como cuando estás detrás de un NAT y lo sobrecargas con demasiadas conexiones.
  • UNKNOWN - no connection - connection closed Esto significa que hemos establecido una conexión (TCP SYN-ACK), pero luego la conexión se cierra inmediatamente (con un RST o FIN). Hay muchas razones por las que esto ocurre, que no podemos distinguir:
    • Está ejecutando RDP, pero por alguna razón cierra la conexión, posiblemente porque se quedó sin recursos.
    • No es RDP, y no le gusta la solicitud RDP que le enviamos, así que en lugar de enviarnos un bonito mensaje de error (que activaría SAFE - not RDP), cierra la conexión abruptamente.
    • Algún dispositivo intermedio, como un IPS, cortafuegos o NAT, cerró la conexión porque la identificó como hostil, o se quedó sin recursos.
    • Alguna otra razón que no he identificado; hay muchas cosas raras que ocurren cuando escaneo Internet.
  • UNKNOWN - no connection - host unreachable (ICMP error) La red remota informa de que no se puede alcanzar el host o de que no está en ejecución. Inténtalo de nuevo más tarde si crees que ese host debería estar activo.
  • UNKNOWN - no connection - network unreachable (ICMP error) Hay un error de red (transitorio) en el extremo remoto; inténtalo de nuevo más tarde si crees que esa red debería estar funcionando.
  • UNKNOWN - RDP protocol error Esto significa que ocurrió alguna corrupción en el protocolo RDP, ya sea porque el lado remoto lo implementa mal (no es un sistema Windows), porque está gestionando mal un error de red transitorio, o por alguna otra cosa.
  • UNKNOWN - SSL protocol error Desde Windows Vista, RDP usa el protocolo STARTTLS para ejecutarse sobre SSL. Esta capa tiene sus propios problemas como los anteriores, que incluyen gestionar mal los errores de red subyacentes, o intentar comunicarse con sistemas que tienen algún tipo de incompatibilidad. Si obtienes un mensaje de error muy largo aquí (como SSL3_GET_RECORD:wrong version), es porque el otro lado tiene un fallo en SSL, o tu propia librería SSL tiene un fallo.

Uso con masscan

Esta herramienta rdpscan es bastante lenta, ya que solo escanea unos cientos de objetivos por segundo. En su lugar, puedes usar masscan para acelerar las cosas. La herramienta masscan es aproximadamente 1000 veces más rápida, pero solo proporciona información limitada sobre el objetivo.

Los pasos son:

  • Primero escanea los rangos de direcciones con masscan para encontrar rápidamente los hosts que responden en el puerto 3389 (o el puerto que uses).
  • Segundo, pasa la salida de masscan a rdpscan, para que solo tenga que escanear los objetivos que sabemos que están activos.

La forma sencilla de ejecutar esto es simplemente combinarlos en la línea de comandos:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 | rdpscan --file -

La forma en que lo hago es en dos pasos:

root@kitploit:~
masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt

Compilación

La parte difícil es conseguir instalar las librerías OpenSSL sin que entren en conflicto con otras versiones del sistema. En Debian Linux, hago:

root@kitploit:~
$ sudo apt install libssl-dev

Una vez resuelto ese problema, solo tienes que compilar todos los archivos .c juntos de esta manera:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -o rdpscan

He puesto un Makefile en el directorio que hace esto, así que probablemente puedas hacer simplemente:

root@kitploit:~
$ make

El código está escrito en C, por lo que necesita un compilador de C instalado, como haciendo lo siguiente:

root@kitploit:~
$ sudo apt install build-essential

Errores de compilación comunes

Esta sección describe los errores de compilación más evidentes.

root@kitploit:~
ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory

Esto significa que o no tienes instaladas las cabeceras de OpenSSL, o no están en alguna ruta. Recuerda que aunque tengas los binarios de OpenSSL instalados, esto no significa que tengas instalado el material de desarrollo. Necesitas tener instaladas tanto las cabeceras como las librerías.

Para instalar estas cosas en Debian, haz:

root@kitploit:~
$ sudo apt install libssl-dev

Para solucionar el problema de ruta, añade una bandera de compilación -I/usr/local/include, o algo similar.

Un ejemplo de problema del enlazador es el siguiente:

root@kitploit:~
Undefined symbols for architecture x86_64:
"_OPENSSL_init_ssl", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_RSA_get0_key", referenced from:
    _rdssl_rkey_get_exp_mod in ssl-d5fdf5.o
"_SSL_CTX_set_options", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_X509_get_X509_PUBKEY", referenced from:
    _rdssl_cert_to_rkey in ssl-d5fdf5.o

Me ocurre esto en macOS porque hay múltiples versiones de OpenSSL. Lo soluciono codificando las rutas de forma fija:

root@kitploit:~
$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan

Según comentarios de otros, la siguiente línea de comandos podría funcionar en macOS si has usado Homebrew para instalar las cosas. Aun así, sigo obteniendo los errores de enlazado anteriores, porque he instalado otros componentes de OpenSSL que están en conflicto.

root@kitploit:~
gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c

Ejecución

La sección anterior ofrece consejos de inicio rápido para ejecutar el programa. Esta sección ofrece una ayuda más detallada.

Para escanear un solo objetivo, basta con pasar la dirección del objetivo:

root@kitploit:~
./rdpscan 192.168.10.101

Puedes pasar direcciones IPv6 y nombres DNS. Puedes pasar múltiples objetivos. Un ejemplo sería:

root@kitploit:~
./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1

También puedes escanear rangos de direcciones, usando direcciones IPv4 inicio-fin o especificación CIDR IPv4. Los rangos IPv6 no son compatibles porque son demasiado grandes.

root@kitploit:~
./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16

Por defecto, escanea solo 100 objetivos a la vez. Puedes aumentar este número con el parámetro --workers. Sin embargo, no importa lo alto que establezcas este parámetro; en la práctica obtendrás un máximo de entre 500 y 1500 workers ejecutándose a la vez, dependiendo de tu sistema.

root@kitploit:~
./rdpscan --workers 1000 10.0.0.0/24

En lugar de especificar objetivos en la línea de comandos, puedes cargarlos desde un archivo usando el bien llamado parámetro --file:

root@kitploit:~
./rdpscan --file ips.txt

El formato del archivo es una dirección, nombre o rango por línea. También puede consumir el texto generado por masscan. Se recortan los espacios en blanco sobrantes, se ignoran las líneas en blanco y se ignoran las líneas de comentario. Un comentario es una línea que comienza con el carácter #, o con los caracteres //.

La salida se envía a stdout indicando el estado VULNERABLE, SAFE o UNKNOWN. Puede haber razones adicionales para cada uno. Estas razones se describen arriba.

root@kitploit:~
211.101.37.250 - SAFE - CredSSP/NLA required
185.11.124.79 - SAFE - not RDP - SSH response seen
125.121.137.42 - UNKNOWN - no connection - refused (RST)
40.117.191.215 - SAFE - CredSSP/NLA required
121.204.186.182 - SAFE - CredSSP/NLA required
99.8.11.148 - SAFE - CredSSP/NLA required
121.204.186.114 - SAFE - CredSSP/NLA required
49.50.145.236 - SAFE - CredSSP/NLA required
106.12.74.155 - VULNERABLE - got appid
222.84.253.26 - SAFE - CredSSP/NLA required
144.35.133.109 - UNKNOWN - RDP protocol error - receive timeout
199.212.226.196 - UNKNOWN - RDP protocol error - receive timeout
183.134.58.152 - UNKNOWN - no connection - refused (RST)
83.162.246.149 - VULNERABLE - got appid

Puedes procesar esto con comandos unix adicionales como grep y cut. Para obtener una lista solo de máquinas vulnerables:

root@kitploit:~
./rdpscan 10.0.0.0/8 | grep 'VULN' | cut -f1 -d'-'

El parámetro -dddd significa información diagnóstica; cuantas más ds añadas, más detalles se imprimen. Esto se envía a stderr en lugar de a stdout para que puedas separar los flujos. Usando bash esto se hace así:

root@kitploit:~
./rdpscan --file myips.txt -ddd 2> diag.txt 1> results.txt

Información de diagnóstico

Añadir el parámetro -d vuelca información de diagnóstico sobre las conexiones a stderr.

root@kitploit:~
./rdpscan 62.15.34.157 -d

[+] [62.15.34.157]:3389 - connecting...
[+] [62.15.34.157]:3389 - connected from [10.1.10.133]:49211
[+] [62.15.34.157]:3389 - SSL connection
[+] [62.15.34.157]:3389 - version = v4.8
[+] [62.15.34.157]:3389 - Sending MS_T120 check packet
[-] [62.15.34.157]:3389 - Max sends reached, waiting...
62.15.34.157    - SAFE - Target appears patched

En macOS/Linux, puedes redirigir stdout y stderr por separado a diferentes archivos de la manera habitual:

root@kitploit:~
./rdpscan --file ips.txt 2> diag.txt 1> results.txt

SOCKS5 y diversión con Tor

Así que incluye soporte SOCKS5:

root@kitploit:~
./rdpscan --file ips.txt --socks5 localhost --socks5port 9050

Hace que los problemas de conexión empeoren, por lo que obtienes muchos más resultados "UNKNOWN".

Descargar herramienta