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