Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
rdpscan-BlueKeep — Um scanner rápido para a vulnerabilidade CVE-2019-0708 "BlueKeep". | Kitploit
Ferramentas/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
ReconhecimentoScanners de VulnerabilidadesExploraçãoColeta de InformaçõesSegurança de RedeTestes de Penetração
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

Um scanner rápido para a vulnerabilidade CVE-2019-0708 "BlueKeep".

Ver Repositório
12há 7 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Windows download macOS download Linux download Follow

rdpscan para a vulnerabilidade CVE-2019-0708 BlueKeep

Este é um scanner rápido e improvisado para a vulnerabilidade CVE-2019-0708 no Microsoft Remote Desktop. Neste momento, há cerca de 900.000 máquinas na Internet pública vulneráveis a esta vulnerabilidade, então muitos esperam um worm em breve, como WannaCry e notPetya. Portanto, escaneie suas redes e aplique correções (ou, pelo menos, ative a NLA) nos sistemas vulneráveis.

Esta é uma ferramenta de linha de comando. Você pode baixar o código-fonte e compilá-lo você mesmo, ou pode baixar um dos binários pré-compilados para Windows ou macOS a partir do link acima.

Esta ferramenta é baseada inteiramente no patch rdesktop de https://github.com/zerosum0x0/CVE-2019-0708. Simplesmente reduzi o código para poder compilar facilmente no macOS e no Windows, além de adicionar a capacidade de escanear vários alvos.

Status

Isso tem apenas alguns dias e é experimental. No entanto, estou testando-o ao escanear toda a Internet (com a ajuda do masscan), então estou resolvendo muitos problemas rapidamente. Você pode tentar entrar em contato comigo no twttier(@erratarob) para ajuda/comentários.

  • 2019-05-38 - Melhores descrições dos resultados, bem como documentação do que significam (veja abaixo).
  • 2019-05-27 - Binários para Windows e macOS lançados (clique nos selos acima).
  • 2019-05-26 - corrigindo os problemas de rede no Windows
  • 2019-05-25 - Linux e macOS funcionando bem, Windows apresenta alguns erros de rede
  • 2019-05-24 - funciona no Linux e no macOS, Windows tem alguns bugs de compilação
  • 2019-05-23 - atualmente trabalhando no macOS dentro do XCode

Uso principal

Para escanear uma rede, execute-o da seguinte forma:

root@kitploit:~
rdpscan 192.168.1.1-192.168.1.255

Isso produz um de 3 resultados para cada endereço:

  • SAFE - se o alvo for considerado corrigido (patched) ou pelo menos exigir CredSSP/NLA
  • VULNERABLE - se o alvo foi confirmado como vulnerável
  • UNKNOWN - se o alvo não responde ou apresenta alguma falha de protocolo

Quando não há nada em um endereço IP de destino, as versões antigas imprimiam a mensagem "UNKNOWN - connection timed out". Ao escanear redes grandes, isso produz uma sobrecarga de informações demais sobre sistemas com os quais você não se importa. Portanto, a nova versão, por padrão, não produz essas informações a menos que você adicione -v (para verbose) na linha de comando.

Você pode aumentar a velocidade com que ele escaneia redes grandes aumentando o número de workers:

root@kitploit:~
rdpscan --workers 10000 10.0.0.0/8

No entanto, no meu computador, ele só atinge cerca de 1500 workers, por causa de limitações do sistema, não importa o quão alto eu configure esse parâmetro.

Você pode aumentar ainda mais a velocidade usando isso em conjunto com masscan, descrito na seção abaixo.

Interpretando os resultados

Há três respostas gerais:

  • SAFE - significa que o alvo provavelmente está corrigido ou, de outra forma, não é vulnerável ao bug.
  • VULNERABLE: significa que confirmamos que o alvo é vulnerável a esse bug e que, quando o worm chegar, provavelmente será infectado.
  • UNKNOWN: significa que não conseguimos confirmar de nenhuma forma, geralmente porque o alvo não responde ou não está executando RDP, o que é a grande maioria das respostas. Além disso, quando os alvos estão sem recursos ou enfrentando problemas de rede, obteremos muitas dessas respostas. Por fim, erros de protocolo são responsáveis por muitas delas. Embora as três respostas principais sejam SAFE, VULNERABLE e UNKNOWN, elas contêm texto adicional explicando o diagnóstico. Esta seção descreve as várias strings que você verá.

SAFE

Há três principais razões pelas quais achamos que um alvo é seguro:

  • SAFE - Target appears patched Isso acontece quando o alvo não responde à solicitação de disparo. Isso significa que é um sistema Windows que foi corrigido, ou um sistema que não era vulnerável para começar, como Windows 10 ou Unix.
  • SAFE - CredSSP/NLA required Isso significa que o alvo primeiro exige Autenticação em Nível de Rede (NLA) antes que a conexão RDP possa ser estabelecida. A ferramenta não consegue passar desse ponto sem credenciais legítimas, portanto não pode determinar se o alvo foi corrigido. No entanto, hackers também não conseguem continuar além desse ponto para explorar sistemas vulneráveis, então você provavelmente está "seguro". Porém, quando exploits surgirem, pessoas internas com nomes de usuário/senhas válidos poderão explorar o sistema se ele não estiver corrigido.
  • SAFE - not RDP Isso significa que o sistema não é RDP, mas possui algum outro serviço que por acaso usa esta mesma porta e produz uma resposta que claramente não é RDP. Exemplos comuns são HTTP e SSH. Observe, no entanto, que em vez de um protocolo identificável, um servidor pode responder com um pacote RST ou FIN. Estes são identificados como UNKNOWN em vez de SAFE/

VULNERABLE

Isso significa que confirmamos que o sistema é vulnerável ao bug.

  • VULNERABLE - got appid Há apenas uma resposta quando o sistema é vulnerável: esta.

UNKNOWN

Há zilhões de variações para unknown.

  • UNKNOWN - no connection - timeout Esta é, de longe, a resposta mais comum e acontece quando o endereço IP de destino não responde de forma alguma. Na verdade, é tão comum que, ao escanear grandes faixas de endereços, geralmente é omitida. Você precisa adicionar a flag -v (verbose) para ativá-la.
  • UNKNOWN - no connection - refused (RST) Esta é, de longe, a segunda resposta mais comum e acontece quando o alvo existe e responde ao tráfego de rede, mas não está executando RDP, então recusa a conexão com um pacote TCP RST.
  • UNKNOWN - RDP protocol error - receive timeout Esta é a terceira resposta mais comum e acontece quando estabelecemos com sucesso uma conexão RDP, mas o servidor para de nos responder. Isso se deve a erros de rede e quando o sistema de destino está sobrecarregado por algum motivo. Também podem ser erros de rede deste lado, como quando você está atrás de um NAT e o sobrecarrega com muitas conexões.
  • UNKNOWN - no connection - connection closed Isso significa que estabelecemos uma conexão (TCP SYN-ACK), mas a conexão é fechada imediatamente (com um RST ou FIN). Há muitas razões para isso acontecer, que não conseguimos distinguir:
    • Está executando RDP, mas por algum motivo fecha a conexão, possivelmente por estar sem recursos.
    • Não é RDP e não gosta da solicitação RDP que enviamos, então, em vez de nos enviar uma mensagem de erro amigável (o que acionaria SAFE - not RDP), ela fecha abruptamente a conexão.
    • Algum dispositivo intermediário, como um IPS, firewall ou NAT, fechou a conexão porque a identificou como hostil, ou ficou sem recursos.
    • Alguma outra razão que não identifiquei: há muitas coisas estranhas acontecendo quando escaneio a Internet.
  • UNKNOWN - no connection - host unreachable (ICMP error) A rede remota informa que o host não pode ser alcançado ou não está em execução. Tente novamente mais tarde se você achar que esse host deveria estar ativo.
  • UNKNOWN - no connection - network unreachable (ICMP error) Há um erro de rede (transitório) na outra extremidade; tente novamente mais tarde se você acreditar que essa rede deveria estar em execução.
  • UNKNOWN - RDP protocol error Isso significa que ocorreu alguma corrupção no protocolo RDP, seja porque o lado remoto o implementa incorretamente (não é um sistema Windows), porque está lidando mal com um erro de rede transitório, ou por outra razão.
  • UNKNOWN - SSL protocol error Desde o Windows Vista, o RDP usa o protocolo STARTTLS para executar sobre SSL. Esta camada tem seus próprios problemas, como os acima, que incluem lidar mal com erros de rede subjacentes ou tentar se comunicar com sistemas que têm algum tipo de incompatibilidade. Se você receber uma mensagem de erro muito longa aqui (como SSL3_GET_RECORD:wrong version), é porque o outro lado tem um bug no SSL, ou a sua própria biblioteca SSL que você está usando tem um bug.

Usando com masscan

Esta ferramenta rdpscan é bastante lenta, escaneando apenas algumas centenas de alvos por segundo. Em vez disso, você pode usar o masscan para acelerar as coisas. A ferramenta masscan é aproximadamente 1000 vezes mais rápida, mas fornece apenas informações limitadas sobre o alvo.

Os passos são:

  • Primeiro, escaneie as faixas de endereços com o masscan para encontrar rapidamente hosts que respondem na porta 3389 (ou qualquer porta que você use).
  • Segundo, alimente o rdpscan com a saída do masscan, para que ele só tenha que escanear alvos que sabemos estarem ativos.

A maneira simples de executar isso é apenas combiná-los na linha de comando:

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

A maneira como eu faço é em duas etapas:

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

Compilando

A parte difícil é conseguir instalar as bibliotecas OpenSSL sem conflitar com outras versões no sistema. No Debian Linux, eu faço:

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

Depois de resolver esse problema, basta compilar todos os arquivos .c juntos assim:

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

Coloquei um Makefile no diretório que faz isso, então você provavelmente pode simplesmente fazer:

root@kitploit:~
$ make

O código é escrito em C, portanto precisa de um compilador C instalado, como fazer o seguinte:

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

Erros de compilação comuns

Esta seção descreve os erros de compilação mais óbvios.

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

Isso significa que você não tem os cabeçalhos do OpenSSL instalados ou eles não estão em algum caminho. Lembre-se de que, mesmo que você tenha os binários do OpenSSL instalados, isso não significa que você tem os arquivos de desenvolvimento instalados. Você precisa ter tanto os cabeçalhos quanto as bibliotecas instalados.

Para instalar essas coisas no Debian, faça:

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

Para corrigir o problema de caminho, adicione uma flag de compilação -I/usr/local/include, ou algo semelhante.

Um exemplo de problema de linker é o seguinte:

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

Eu recebo isso no macOS porque há múltiplas versões do OpenSSL. Eu corrijo isso codificando os caminhos manualmente:

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

De acordo com comentários de outras pessoas, a seguinte linha de comando pode funcionar no macOS se você usou o Homebrew para instalar as coisas. Ainda assim, recebo os erros de linker acima, porque instalei outros componentes OpenSSL que estão em conflito.

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

Executando

A seção acima fornece dicas rápidas para executar o programa. Esta seção fornece ajuda mais detalhada.

Para escanear um único alvo, basta passar o endereço do alvo:

root@kitploit:~
./rdpscan 192.168.10.101

Você pode passar endereços IPv6 e nomes de DNS. Você pode passar vários alvos. Um exemplo disso seria:

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

Você também pode escanear faixas de endereços, usando endereços IPv4 início-fim ou especificação CIDR IPv4. Faixas IPv6 não são suportadas porque são muito grandes.

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

Por padrão, ele escaneia apenas 100 alvos por vez. Você pode aumentar esse número com o parâmetro --workers. No entanto, não importa o quão alto você defina esse parâmetro, na prática você obterá no máximo cerca de 500 a 1500 workers em execução ao mesmo tempo, dependendo do seu sistema.

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

Em vez de especificar alvos na linha de comando, você pode carregá-los de um arquivo, usando o bem nomeado parâmetro --file:

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

O formato do arquivo é um endereço, nome ou faixa por linha. Ele também pode consumir o texto gerado pelo masscan. Espaços em branco extras são removidos, linhas em branco são ignoradas e quaisquer linhas de comentário são ignoradas. Um comentário é uma linha que começa com o caractere # ou com os caracteres //.

A saída é enviada para stdout dando o status de VULNERABLE, SAFE, ou UNKNOWN. Pode haver razões adicionais para cada um. Essas razões estão descritas acima.

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

Você pode processar isso com comandos unix adicionais como grep e cut. Para obter uma lista apenas das máquinas vulneráveis:

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

O parâmetro -dddd significa informações diagnósticas; quanto mais ds você adicionar, mais detalhes serão impressos. Isso é enviado para stderr em vez de stdout para que você possa separar os fluxos. Usando bash, isso é feito assim:

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

Informações de diagnóstico

Adicionar o parâmetro -d despeja informações de diagnóstico sobre as conexões no 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

No macOS/Linux, você pode redirecionar stdout e stderr separadamente para arquivos diferentes da maneira usual:

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

SOCKS5 e diversão com Tor

Então, ele inclui suporte a SOCKS5:

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

Isso piora os problemas de conexão, então você obtém muito mais resultados "UNKNOWN".

Baixar ferramenta