
rdpscan pour la vulnérabilité BlueKeep CVE-2019-0708
Il s'agit d'un scanner rapide et rudimentaire pour la vulnérabilité CVE-2019-0708 dans le Bureau à distance Microsoft.
Actuellement, environ 900 000 machines sur l'Internet public sont vulnérables à cette vulnérabilité,
on s'attend donc à voir bientôt un ver comme WannaCry et notPetya. Par conséquent, scannez vos réseaux et
mettez à jour (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 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 pour pouvoir le compiler facilement sur macOS et Windows,
et j'ai ajouté la possibilité de scanner plusieurs cibles.
Statut
Cet outil est expérimental et n'a que quelques jours. 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 me contacter sur Twitter (@erratarob) pour de l'aide ou des commentaires.
- 2019-05-38 - Meilleures descriptions des résultats, 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 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 - Fonctionne actuellement sur macOS dans XCode
Utilisation principale
Pour scanner un réseau, exécutez-le comme suit :
rdpscan 192.168.1.1-192.168.1.255
Cela produit l'un des 3 résultats pour chaque adresse :
- SAFE (SÉCURISÉ) - si la cible a été déterminée comme patchée ou nécessitant au moins CredSSP/NLA
- VULNERABLE - si la cible a été confirmée vulnérable
- UNKNOWN (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 versions plus anciennes affichaient le
message "UNKNOWN - connection timed out". Lors du scan de grands réseaux,
cela produit une surabondance d'informations sur des systèmes qui ne vous intéressent pas.
Par conséquent, la nouvelle version n'affiche pas ces informations par défaut, sauf si vous ajoutez -v (verbose) sur la ligne de commande.
Vous pouvez augmenter la vitesse de scan des grands réseaux en augmentant
le nombre de workers :
rdpscan --workers 10000 10.0.0.0/8
Cependant, sur mon ordinateur, cela ne produit qu'environ 1500 workers, à cause
des limitations système, quelle que soit la valeur configurée pour ce paramètre.
Vous pouvez encore augmenter la vitesse en utilisant cet outil conjointement
avec masscan, comme décrit ci-dessous.
Interprétation des résultats
Il y a trois réponses générales :
- SAFE (SÉCURISÉ) - la cible est probablement patchée ou sinon
non vulnérable au bug.
- VULNERABLE - nous avons confirmé que la cible est vulnérable
à ce bug, et qu'elle sera probablement infectée lorsque le ver frappera.
- UNKNOWN (INCONNU) - 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. Aussi, lorsque les cibles manquent de ressources
ou rencontrent des problèmes réseau, nous obtenons beaucoup de ces réponses.
Enfin, les erreurs de protocole en sont responsables dans de nombreux cas.
Bien que les trois réponses principales soient SAFE, VULNERABLE et UNKNOWN,
elles contiennent un 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écurisée :
- SAFE - Target appears patched (SÉCURISÉ - La cible semble patchée)
Cela se produit lorsque la cible ne répond pas à la requête déclencheur.
Cela signifie que c'est un système Windows qui a été patché,
ou un système qui n'était pas vulnérable au départ, comme Windows 10
ou Unix.
- SAFE - CredSSP/NLA required (SÉCURISÉ - CredSSP/NLA requis)
Cela signifie que la cible nécessite d'abord une authentification au niveau réseau avant
que la connexion RDP puisse être établie. L'outil ne peut pas dépasser ce point sans
des identifiants légitimes, donc il ne peut pas déterminer si la cible a été patchée.
Cependant, les hackers ne peuvent pas non plus continuer au-delà de ce point pour exploiter des systèmes vulnérables,
donc vous êtes probablement "sécurisé". Cependant, lorsque des exploits apparaîtront, des initiés disposant d'identifiants
valides pourront exploiter le système s'il n'est pas patché.
- SAFE - not RDP (SÉCURISÉ - pas du RDP)
Cela signifie que le système n'est pas RDP, mais offre un autre service qui utilise
le même port, et produit une réponse clairement non 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 UNKNOWN au lieu
de SAFE.
VULNERABLE
Cela signifie que nous avons confirmé que le système est vulnérable au bug.
- VULNERABLE - got appid (VULNÉRABLE - appid obtenu)
Il n'y a qu'une seule réponse lorsque le système est vulnérable, celle-ci.
UNKNOWN
Il existe d'innombrables variations pour "inconnu" :