
BlueKeep scanner supporting NLA
Scanner BlueKeep (CVE-2019-0708) fonctionnant à la fois sans authentification et avec authentification (c'est-à-dire lorsque l'authentification au niveau du réseau (NLA) est activée).
Prérequis :
Il est basé sur FreeRDP et utilise Docker pour faciliter la compilation/exécution. Il devrait fonctionner sur tout environnement UNIX et a été testé principalement sur Linux/Ubuntu.
Installer les prérequis :
sudo apt-get install docker.io
Construire le client FreeRDP personnalisé dans le conteneur Docker nommé bkscan :
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
Exécutez le script bkscan.sh depuis votre machine. Il invoquera le client FreeRDP personnalisé dans
le conteneur Docker bkscan nouvellement créé :
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
Contre un Windows 7 vulnérable avec NLA activé et des identifiants valides.
$ sudo ./bkscan.sh -t 192.168.119.141 -u user -p password
[+] Targeting 192.168.119.141:3389...
[+] Using provided credentials, will support NLA
[-] Max sends reached, please wait to be sure...
[!] Target is VULNERABLE!!!
Contre un Windows 10 (non vulnérable) ou un Windows 7 corrigé avec NLA activé et des identifiants valides :
$ sudo ./bkscan.sh -t 192.168.119.133 -u user -p password
[+] Targeting 192.168.119.133:3389...
[+] Using provided credentials, will support NLA
[-] Max sends reached, please wait to be sure...
[*] Target appears patched.
Contre un Windows 7 (vulnérable ou corrigé) dont le NLA est activé, mais que nous scannons avec un client sans support NLA :
$ sudo ./bkscan.sh -t 192.168.119.141
[+] Targeting 192.168.119.141:3389...
[+] No credential provided, won't support NLA
[-] Connection reset by peer, NLA likely to be enabled. Detection failed.
Contre un Windows 7 (vulnérable ou corrigé) avec NLA activé et des identifiants valides, mais dont l'utilisateur ne fait pas partie du groupe "Remote Desktop Users" :
$ sudo ./bkscan.sh -t 192.168.119.141 -u test -p password
[+] Targeting 192.168.119.141:3389...
[+] Using provided credentials, will support NLA
[-] NLA enabled, credentials are valid but user has insufficient privileges. Detection failed.
Contre un Windows 7 (vulnérable ou corrigé) avec NLA activé et des identifiants non valides :
$ sudo ./bkscan.sh -t 192.168.119.141 -u user -p badpassword
[+] Targeting 192.168.119.141:3389...
[+] Using provided credentials, will support NLA
[-] NLA enabled and access denied. Detection failed.
Contre un Windows 10 (non vulnérable) avec NLA activé et des identifiants non valides :
$ sudo ./bkscan.sh -t 192.168.119.133 -u user -p badpassword
[+] Targeting 192.168.119.133:3389...
[+] Using provided credentials, will support NLA
[-] NLA enabled and logon failure. Detection failed.
Remarque : la différence de sortie entre Windows 7 et Windows 10 est probablement due aux versions de CredSSP de Windows et votre sortie peut différer.
Contre un Windows XP vulnérable (sans support NLA) :
$ sudo ./bkscan.sh -t 192.168.119.137
[+] Targeting 192.168.119.137:3389...
[+] No credential provided, won't support NLA
[-] Max sends reached, please wait to be sure...
[!] Target is VULNERABLE!!!
Contre un Windows 7 avec RDP désactivé ou port bloqué :
$ sudo ./bkscan.sh -t 192.168.119.142
[+] Targeting 192.168.119.142:3389...
[+] No credential provided, won't support NLA
[-] Can't connect properly, check IP address and port.
Un merci particulier à @JaGoTu et @zerosum0x0 pour avoir publié leur scanner non authentifié CVE-2019-0708 « BlueKeep », voir ici. Le scanner BKScan de ce dépôt fonctionne de manière similaire à leur scanner mais a été porté sur FreeRDP pour prendre en charge NLA.
Merci à mi2428 pour avoir publié un script permettant d'exécuter FreeRDP dans Docker, voir ici.
Merci également aux personnes suivantes pour leur contribution :
Si vous avez un problème avec le scanner BlueKeep, veuillez créer une issue sur ce dépôt github
avec la sortie détaillée obtenue en utilisant ./bkscan.sh --debug.
Certaines versions récentes de Linux (par ex. Ubuntu 18.04 ou Kali 2019.2 Rolling) ne font pas bon ménage avec
les variables d'environnement $DISPLAY et $XAUTHORITY.
$ sudo ./bkscan.sh -t 192.168.119.137
[+] Targeting 192.168.119.137:3389...
[+] No credential provided, won't support NLA
[07:58:35:866] [1:1] [ERROR][com.freerdp.client.x11] - failed to open display: :0
[07:58:35:866] [1:1] [ERROR][com.freerdp.client.x11] - Please check that the $DISPLAY environment variable is properly set.
Cela fonctionne correctement sur une installation fraîche d'Ubuntu 18.04, mais pas sur une installation que j'utilise depuis un certain temps. J'en conclus donc que la cause est un paquet ou une configuration lié à X11 mis à jour.
docker-org documente ce problème et propose une solution, mais je n'ai pas réussi à la faire fonctionner moi-même. Je ne suis donc pas certain qu'ils décrivent le même problème. Si vous rencontrez ce problème au départ et que vous parvenez à le corriger, n'hésitez pas à faire une PR.