
Varredura de Gateways de Área de Trabalho Remota (Potencialmente não corrigidos CVE-2020-0609 e CVE-2020-0610)
O scanner tem 2 modos de operação:
Usa o código de verificação de vulnerabilidade de https://github.com/MalwareTech/RDGScanner
A verificação de vulnerabilidades de corrupção de memória é perigosa e pode potencialmente travar sistemas. Embora esta ferramenta tenha sido concebida para evitar causar travamentos, a estabilidade não pode ser 100% garantida. Use por sua conta e risco e apenas verifique sistemas que tenha permissão para testar.
O scanner é multithread e pode analisar ficheiros contendo máscaras de rede CIDR, mas para redes maiores você ainda pode querer usar o nmap para encontrar portas UDP 3391 abertas antes de fazer a verificação de vulnerabilidades. Isso não funciona de forma imediata atualmente. Você precisa adicionar 3391 à secção DTLS em nmap-payloads (normalmente em /usr/share/nmap, PR a caminho) e verificar usando, por exemplo:
nmap -Pn -p 3391 -sU -oA rdg_scan_yyyymmdd 10.0.0.0/24 (Requer permissões de root)
A porta padrão para verificação de vulnerabilidades é a UDP 3391, altere com --port.
Nem todos os gateways RD têm a UDP 3391 ativa ou exposta no firewall, provavelmente porque também funciona apenas com HTTPS e os administradores não se preocuparam em ler a documentação. Se também quiser encontrar esses gateways RD, use o webcheck (Talvez você esteja com medo de um servidor com CVE-2020-0609 sem correção e os operadores abrirem a UDP 3391 em 6 meses por causa da "melhor performance em redes de alta latência".)
Para verificar usando HTTPS, use o parâmetro --webcheck ou -w A porta padrão para o webcheck é a TCP 443, altere com --port.
Esteja ciente de que, por exemplo, um Debian/Kali recente tem definições padrão do openssl que impedem qualquer programa, incluindo python, curl, ... de fazer conexões com implementações SSL inseguras, incluindo qualquer coisa inferior a TLSv1.2. Isso é razoável para home banking, mas não para verificação de vulnerabilidades, onde você também quer encontrar aquele host antigo que ainda usa SSLv3. Não encontrei solução melhor do que alterar isso em /etc/ssl/openssl.cnf. Encontre/insira a secção [system_default_sect] e altere para:
[system_default_sect]
MinProtocol = SSLv3
CipherString = DEFAULT@SECLEVEL=1
Lembre-se de reverter isso para coisas sensíveis! Se você conhecer uma solução que altere essas definições apenas para um script python, por favor me avise ;)
Erros de SSL que aparecem durante a verificação podem ser de sistemas IPS.
O scanner pode analisar:
Example: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 # vuln scan for cve-2020-0609 on UDP 3391
Example2 python3 rdg_scanner_cve-2020-0609.py 192.168.1.1/24 --webcheck # check webpage for RD gateway
Example3: python3 rdg_scanner_cve-2020-0609.py 192.168.1.1
Example4: python3 rdg_scanner_cve-2020-0609.py fakewebsiteaddress.com
Example5: python3 rdg_scanner_cve-2020-0609.py as15169
Example6: python3 rdg_scanner_cve-2020-0609.py file:hostfile.txt
usage: rdg_scanner_cve-2020-0609.py [-h] [--port PORT] [--webcheck]
[--verbose]
target
No installation required.
Debian/Kali needs: apt-get install python3-netaddr
TODO: