
BlueKeep scanner supporting NLA
Scanner BlueKeep (CVE-2019-0708) che funziona sia in modalità non autenticata che autenticata (cioè quando Network Level Authentication (NLA) è abilitata).
Requisiti:
Si basa su FreeRDP e usa Docker per semplificare compilazione/esecuzione. Dovrebbe funzionare su qualsiasi ambiente UNIX ed è stato testato principalmente su Linux/Ubuntu.
Installa i prerequisiti:
sudo apt-get install docker.io
Compila il client FreeRDP personalizzato all'interno del container Docker chiamato bkscan:
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
Invoca lo script bkscan.sh dalla tua macchina. Esso invocherà il client FreeRDP personalizzato all'interno
del container Docker bkscan appena creato:
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
Contro un Windows 7 vulnerabile con NLA abilitata e credenziali valide.
$ 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!!!
Contro un Windows 10 (non vulnerabile) o Windows 7 aggiornato con NLA abilitata e credenziali valide:
$ 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.
Contro un Windows 7 (vulnerabile o aggiornato) con NLA abilitata, ma che stiamo scansionando con un client senza supporto 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.
Contro un Windows 7 (vulnerabile o aggiornato) con NLA abilitata e credenziali valide, ma l'utente non fa parte del gruppo "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.
Contro un Windows 7 (vulnerabile o aggiornato) con NLA abilitata e credenziali non valide:
$ 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.
Contro un Windows 10 (non vulnerabile) con NLA abilitata e credenziali non valide:
$ 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.
Nota: la differenza nell'output tra Windows 7 e Windows 10 è probabilmente dovuta alle versioni di CredSSP di Windows e il tuo output potrebbe differire.
Contro un Windows 7 con RDP disabilitato o porta bloccata:
$ 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 ringraziamento speciale a @JaGoTu e @zerosum0x0 per aver rilasciato il loro scanner "BlueKeep" CVE-2019-0708 non autenticato, vedi qui. Lo scanner BKScan in questo repository funziona in modo simile al loro scanner ma è stato portato a FreeRDP per supportare NLA.
Grazie a mi2428 per aver rilasciato uno script per eseguire FreeRDP in Docker, vedi qui.
Grazie anche alle seguenti persone per il loro contributo:
Se hai un problema con lo scanner BlueKeep, per favore apri una issue su questo repository GitHub
con l'output dettagliato usando ./bkscan.sh --debug.
Alcune versioni recenti di Linux (es. Ubuntu 18.04 o Kali 2019.2 Rolling) non vanno d'accordo con le
variabili d'ambiente $DISPLAY e $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.
Funziona correttamente su un'installazione pulita di Ubuntu 18.04 ma non su un'installazione che uso da un po', quindi do la colpa ad alcuni pacchetti o configurazioni aggiornati relativi a X11.
docker-org documenta questo e propone una soluzione, ma non sono riuscito a farlo funzionare da solo. Quindi non sono sicuro che stiano descrivendo lo stesso problema. Se incontri questo problema inizialmente e riesci a risolverlo, sentiti libero di fare una PR.