
Analyse des passerelles Bureau à distance (CVE-2020-0609 et CVE-2020-0610 potentiellement non corrigées)
Le scanneur a 2 modes de fonctionnement :
Utilise le code de scan des vulnérabilités de https://github.com/MalwareTech/RDGScanner
La recherche de vulnérabilités par corruption mémoire est dangereuse et peut potentiellement faire planter des systèmes. Bien que cet outil ait été conçu pour éviter de provoquer un plantage, la stabilité ne peut pas être garantie à 100 %. À utiliser à vos risques et périls, et ne scannez que des systèmes que vous avez l'autorisation de tester.
Le scanneur est multithread et peut analyser des fichiers contenant des masques réseau CIDR, mais pour les réseaux plus importants, vous voudrez peut-être quand même utiliser nmap pour trouver les ports UDP 3391 ouverts avant de scanner les vulnérabilités. Cela ne fonctionne pas par défaut pour le moment. Vous devez ajouter 3391 à la section DTLS dans nmap-payloads (généralement dans /usr/share/nmap, PR en cours) et scanner en utilisant par exemple :
nmap -Pn -p 3391 -sU -oA rdg_scan_yyyymmdd 10.0.0.0/24 (Nécessite les droits root)
Le port par défaut pour la recherche de vulnérabilités est UDP 3391, modifiable avec --port.
Toutes les passerelles RD n'ont pas UDP 3391 actif ou exposé sur le pare-feu, probablement parce que cela fonctionne aussi avec HTTPS uniquement et que les administrateurs n'ont pas pris la peine de lire la documentation. Si vous voulez aussi trouver ces passerelles RD, utilisez le webcheck (peut-être avez-vous peur d'un serveur avec CVE-2020-0609 non corrigée et des opérateurs ouvrant UDP 3391 dans 6 mois à cause des « meilleures performances sur les réseaux à haute latence ».)
Pour scanner via HTTPS, utilisez le paramètre --webcheck ou -w Le port par défaut pour le webcheck est TCP 443, modifiable avec --port.
Sachez que, par exemple, un Debian/Kali récent a des paramètres OpenSSL par défaut qui empêchent tout programme, y compris python, curl, ... de se connecter à des implémentations SSL non sécurisées, y compris tout ce qui est inférieur à TLSv1.2. C'est raisonnable pour la banque en ligne, mais pas pour la recherche de vulnérabilités, où vous voulez aussi trouver cet ancien hôte qui utilise encore SSLv3. Je n'ai pas trouvé de meilleure solution que de modifier cela dans /etc/ssl/openssl.cnf. Trouvez/insérez la section [system_default_sect] et modifiez-la comme suit :
[system_default_sect]
MinProtocol = SSLv3
CipherString = DEFAULT@SECLEVEL=1
N'oubliez pas de la remettre en place pour les données sensibles ! Si vous connaissez une solution qui modifierait ces paramètres uniquement pour un script python, faites-le moi savoir ;)
Les erreurs SSL qui apparaissent pendant le scan peuvent provenir de systèmes IPS.
Le scanneur peut analyser :
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: