Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
rdpscan-BlueKeep — Un scanner rapide pour la vulnérabilité CVE-2019-0708 "BlueKeep". | Kitploit
Outils/GitHubGitHub/gh0st0ne/rdpscan-bluekeep
ReconnaissanceScanners de VulnérabilitésExploitationCollecte d'InformationsSécurité RéseauTests d'Intrusion
GitHubgh0st0ne/rdpscan-bluekeep

rdpscan-BlueKeep

Un scanner rapide pour la vulnérabilité CVE-2019-0708 "BlueKeep".

Voir le dépôt
12il y a 7 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Windows download macOS download Linux download Follow

rdpscan pour la vulnérabilité BlueKeep CVE-2019-0708

Ceci est un scanner rapide et simple pour la vulnérabilité CVE-2019-0708 dans Microsoft Remote Desktop. Actuellement, environ 900 000 machines sur Internet public sont vulnérables à cette vulnérabilité, donc beaucoup s'attendent à un ver imminent comme WannaCry et notPetya. Par conséquent, analysez vos réseaux et corrigez (ou au moins, activez NLA) sur les systèmes vulnérables.

C'est un outil en ligne de commande. Vous pouvez télécharger le code source et le compiler vous-même, ou télécharger l'un des binaires pré-compilés pour Windows ou macOS depuis le lien ci-dessus.

Cet outil est entièrement basé sur le patch rdesktop de https://github.com/zerosum0x0/CVE-2019-0708. J'ai simplement réduit le code afin de pouvoir le compiler facilement sur macOS et Windows, et j'ai ajouté la possibilité de scanner plusieurs cibles.

Statut

Ceci est vieux de quelques jours seulement et expérimental. Cependant, je le teste en scannant tout l'Internet (avec l'aide de masscan), donc je résous pas mal de problèmes assez rapidement. Vous pouvez essayer de me contacter sur twttier(@erratarob) pour de l'aide/commentaires.

  • 2019-05-38 - Meilleures descriptions des résultats de sortie, ainsi qu'une documentation sur leur signification (voir ci-dessous).
  • 2019-05-27 - Binaires Windows et macOS publiés (cliquez sur les badges ci-dessus).
  • 2019-05-26 - Correction des problèmes de mise en réseau Windows
  • 2019-05-25 - Linux et macOS fonctionnent bien, Windows a quelques erreurs réseau
  • 2019-05-24 - Fonctionne sur Linux et macOS, Windows a quelques bugs de compilation
  • 2019-05-23 - Actuellement en développement sur macOS dans XCode

Utilisation principale

Pour scanner un réseau, exécutez-le comme suit :

root@kitploit:~
rdpscan 192.168.1.1-192.168.1.255

Cela produit l'un des 3 résultats pour chaque adresse :

  • SAFE - si la cible a été déterminée comme étant corrigée ou au moins nécessitant CredSSP/NLA
  • VULNÉRABLE - si la cible a été confirmée vulnérable
  • INCONNU - si la cible ne répond pas ou a une erreur de protocole

Lorsqu'il n'y a rien à une adresse IP cible, les anciennes versions imprimaient le message "UNKNOWN - connection timed out". Lors de l'analyse de grands réseaux, cela produit une surcharge d'informations sur des systèmes dont vous ne vous souciez pas. Par conséquent, la nouvelle version ne produit pas ces informations par défaut, sauf si vous ajoutez -v (pour verbose) sur la ligne de commande.

Vous pouvez augmenter la vitesse d'analyse des grands réseaux en augmentant le nombre de workers :

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

Cependant, sur mon ordinateur, cela ne produit qu'environ 1500 workers, en raison des limitations du système, peu importe la valeur élevée de ce paramètre.

Vous pouvez augmenter encore plus la vitesse en l'utilisant conjointement avec masscan, décrit dans la deuxième section ci-dessous.

Interprétation des résultats

Il y a trois réponses générales :

  • SAFE - signifie que la cible est probablement corrigée ou sinon non vulnérable au bogue.
  • VULNÉRABLE : signifie que nous avons confirmé que la cible est vulnérable à ce bogue, et que lorsque le ver frappera, elle sera probablement infectée.
  • INCONNU : signifie que nous ne pouvons confirmer ni l'un ni l'autre, généralement parce que la cible ne répond pas ou n'exécute pas RDP, ce qui est la grande majorité des réponses. De plus, lorsque les cibles manquent de ressources ou rencontrent des problèmes réseau, nous en aurons beaucoup. Enfin, les erreurs de protocole en sont responsables pour beaucoup. Bien que les trois réponses principales soient SAFE, VULNÉRABLE et INCONNU, elles contiennent du texte supplémentaire expliquant le diagnostic. Cette section décrit les différentes chaînes que vous verrez.

SAFE

Il y a trois raisons principales pour lesquelles nous pensons qu'une cible est sûre :

  • SAFE - Target appears patched Cela se produit lorsque la cible ne répond pas à la requête déclencheuse. Cela signifie qu'il s'agit d'un système Windows qui a été corrigé, ou d'un système qui n'était pas vulnérable au départ, comme Windows 10 ou Unix.
  • SAFE - CredSSP/NLA required Cela signifie que la cible nécessite d'abord une authentification au niveau du réseau (NLA) avant que la connexion RDP puisse être établie. L'outil ne peut pas dépasser ce stade sans identifiants légitimes, donc ne peut pas déterminer si la cible a été corrigée. Cependant, les pirates ne peuvent pas non plus continuer au-delà de ce stade pour exploiter les systèmes vulnérables, vous êtes donc probablement "safe". Cependant, lorsque des exploits apparaîtront, les initiés disposant de noms d'utilisateur/mots de passe valides pourront exploiter le système s'il n'est pas corrigé.
  • SAFE - not RDP Cela signifie que le système n'est pas RDP, mais a un autre service qui utilise ce même port, et produit une réponse qui n'est clairement pas RDP. Les exemples courants sont HTTP et SSH. Notez cependant qu'au lieu d'un protocole identifiable, un serveur peut répondre avec un paquet RST ou FIN. Ceux-ci sont identifiés comme INCONNU au lieu de SAFE/

VULNERABLE

Cela signifie que nous avons confirmé que le système est vulnérable au bogue.

  • VULNERABLE - got appid Il n'y a qu'une seule réponse lorsque le système est vulnérable, celle-ci.

UNKNOWN

Il existe une multitude de variations pour inconnu

  • UNKNOWN - no connection - timeout C'est de loin la réponse la plus courante, et se produit lorsque l'adresse IP cible ne répond pas du tout. En fait, c'est si courant que lors de l'analyse de grandes plages d'adresses, elle est généralement omise. Vous devez ajouter le drapeau -v (verbose) pour l'activer.
  • UNKNOWN - no connection - refused (RST) C'est de loin la deuxième réponse la plus courante, et se produit lorsque la cible existe et répond au trafic réseau, mais n'exécute pas RDP, donc refuse la connexion avec un paquet TCP RST.
  • UNKNOWN - RDP protocol error - receive timeout C'est la troisième réponse la plus courante, et se produit lorsque nous avons établi avec succès une connexion RDP, mais que le serveur cesse de répondre. Cela est dû à des erreurs réseau et lorsque le système cible est surchargé pour une raison quelconque. Cela pourrait aussi être des erreurs réseau de votre côté, par exemple lorsque vous êtes derrière un NAT et que vous le surchargez avec trop de connexions.
  • UNKNOWN - no connection - connection closed Cela signifie que nous avons établi une connexion (TCP SYN-ACK), mais que la connexion est immédiatement fermée (avec un RST ou FIN). Il y a de nombreuses raisons à cela, que nous ne pouvons pas distinguer :
    • Il exécute RDP, mais pour une raison quelconque ferme la connexion, peut-être parce qu'il est à court de ressources.
    • Ce n'est pas RDP, et n'aime pas la requête RDP que nous lui envoyons, donc au lieu de nous envoyer un joli message d'erreur (qui déclencherait SAFE - not RDP), il ferme brusquement la connexion.
    • Un périphérique intermédiaire, comme un IPS, un pare-feu ou un NAT a fermé la connexion parce qu'il a identifié cela comme hostile, ou a manqué de ressources.
    • Une autre raison que je n'ai pas identifiée, il se passe beaucoup de choses étranges lorsque je scanne Internet.
  • UNKNOWN - no connection - host unreachable (ICMP error) Le réseau distant signale que l'hôte est inaccessible ou ne fonctionne pas. Réessayez plus tard si vous pensez que cet hôte devrait être actif.
  • UNKNOWN - no connection - network unreachable (ICMP error) Il y a une erreur réseau (transitoire) à l'autre extrémité, réessayez plus tard si vous pensez que ce réseau devrait fonctionner.
  • UNKNOWN - RDP protocol error Cela signifie qu'une corruption est survenue dans le protocole RDP, soit parce que le côté distant l'implémente mal (pas un système Windows), parce qu'il gère mal une erreur réseau transitoire, ou autre chose.
  • UNKNOWN - SSL protocol error Depuis Windows Vista, RDP utilise le protocole STARTTLS pour fonctionner sur SSL. Cette couche a ses propres problèmes comme ci-dessus, qui incluent une mauvaise gestion des erreurs réseau sous-jacentes, ou une tentative de communication avec des systèmes qui ont une incompatibilité. Si vous obtenez un message d'erreur très long ici (comme SSL3_GET_RECORD:wrong version), c'est parce que l'autre côté a un bogue dans SSL, ou que votre propre bibliothèque SSL que vous utilisez a un bogue.

Utilisation avec masscan

Cet outil rdpscan est assez lent, ne scannant que quelques centaines de cibles par seconde. Vous pouvez plutôt utiliser masscan pour accélérer les choses. L'outil masscan est environ 1000 fois plus rapide, mais ne donne que des informations limitées sur la cible.

Les étapes sont :

  • Scannez d'abord les plages d'adresses avec masscan pour trouver rapidement les hôtes qui répondent sur le port 3389 (ou tout autre port que vous utilisez).
  • Ensuite, alimentez la sortie de masscan dans rdpscan, afin qu'il n'ait à scanner que les cibles que nous savons actives.

La façon simple de l'exécuter est de les combiner sur la ligne de commande :

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

La façon dont je le fais est en deux étapes :

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

Compilation

La partie difficile est d'installer les bibliothèques OpenSSL sans entrer en conflit avec d'autres versions sur le système. Sur Debian Linux, je fais :

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

Une fois ce problème résolu, il vous suffit de compiler tous les fichiers .c ensemble comme ceci :

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

J'ai mis un Makefile dans le répertoire qui fait cela, donc vous pouvez probablement faire simplement :

root@kitploit:~
$ make

Le code est écrit en C, donc nécessite un compilateur C installé, par exemple en faisant :

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

Erreurs de compilation courantes

Cette section décrit les erreurs de compilation les plus évidentes.

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

Cela signifie que vous n'avez pas les en-têtes OpenSSL installés, ou qu'ils ne sont pas dans un chemin quelque part. N'oubliez pas que même si vous avez les binaires OpenSSL installés, cela ne signifie pas que vous avez les éléments de développement installés. Vous devez avoir à la fois les en-têtes et les bibliothèques installés.

Pour installer ces éléments sur Debian, faites :

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

Pour résoudre le problème de chemin, ajoutez un drapeau de compilation -I/usr/local/include, ou quelque chose de similaire.

Un exemple de problème de liaison est le suivant :

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

J'obtiens cela sur macOS car il y a plusieurs versions d'OpenSSL. Je le résous en codant en dur les chemins :

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

Selon les commentaires d'autres, la ligne de commande suivante pourrait fonctionner sur macOS si vous avez utilisé Homebrew pour installer des choses. J'obtiens toujours les erreurs de liaison ci-dessus, cependant, car j'ai installé d'autres composants OpenSSL qui sont en conflit.

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

Exécution

La section ci-dessus donne des conseils de démarrage rapide pour exécuter le programme. Cette section donne une aide plus approfondie.

Pour scanner une seule cible, passez simplement l'adresse de la cible :

root@kitploit:~
./rdpscan 192.168.10.101

Vous pouvez passer des adresses IPv6 et des noms DNS. Vous pouvez passer plusieurs cibles. Un exemple serait :

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

Vous pouvez également scanner des plages d'adresses, en utilisant soit des adresses IPv4 début-fin, soit une spécification CIDR IPv4. Les plages IPv6 ne sont pas prises en charge car elles sont trop grandes.

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

Par défaut, il ne scanne que 100 cibles à la fois. Vous pouvez augmenter ce nombre avec le paramètre --workers. Cependant, peu importe la valeur élevée de ce paramètre, en pratique vous obtiendrez un maximum d'environ 500 à 1500 workers en cours d'exécution à la fois, selon votre système.

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

Au lieu de spécifier les cibles sur la ligne de commande, vous pouvez les charger à partir d'un fichier, en utilisant le paramètre bien nommé --file :

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

Le format du fichier est une adresse, un nom ou une plage par ligne. Il peut également consommer le texte généré par masscan. Les espaces supplémentaires sont supprimés, les lignes vides ignorées et les lignes de commentaire ignorées. Un commentaire est une ligne commençant par le caractère #, ou les caractères //.

La sortie est envoyée sur stdout donnant le statut VULNÉRABLE, SAFE ou INCONNU. Il peut y avoir des raisons supplémentaires pour chacun. Ces raisons sont décrites ci-dessus.

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

Vous pouvez traiter cela avec des commandes unix supplémentaires comme grep et cut. Pour obtenir une liste des seules machines vulnérables :

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

Le paramètre -dddd signifie information diagnostique, où plus vous ajoutez de d, plus les détails sont imprimés. Ceci est envoyé sur stderr au lieu de stdout afin que vous puissiez séparer les flux. Avec bash, cela se fait comme ceci :

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

Informations de diagnostic

L'ajout du paramètre -d vide les informations de diagnostic sur les connexions vers 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

Sur macOS/Linux, vous pouvez rediriger stdout et stderr séparément vers différents fichiers de la manière habituelle :

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

SOCKS5 et Tor lulz

Donc il inclut le support SOCKS5 :

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

Cela aggrave les problèmes de connexion, donc vous obtenez beaucoup plus de résultats "UNKNOWN".

Télécharger l’outil