
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:
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:
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.