
BlueKeep scanner supporting NLA
Escáner de BlueKeep (CVE-2019-0708) que funciona tanto sin autenticación como con autenticación (es decir, cuando la Autenticación a nivel de red (NLA) está habilitada).
Requisitos:
Está basado en FreeRDP y utiliza Docker para facilitar la compilación/ejecución. Debería funcionar en cualquier entorno UNIX y ha sido probado principalmente en Linux/Ubuntu.
Instalar los requisitos previos:
sudo apt-get install docker.io
Compilar el cliente FreeRDP personalizado dentro del contenedor Docker llamado bkscan:
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
Invoque el script bkscan.sh desde su máquina. Este invocará el cliente FreeRDP personalizado dentro del contenedor Docker bkscan recién creado:
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
Contra un Windows 7 vulnerable con NLA habilitada y credenciales válidas.
$ 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!!!
Contra un Windows 10 (no vulnerable) o un Windows 7 parcheado con NLA habilitada y credenciales válidas:
$ 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.
Contra un Windows 7 (vulnerable o parcheado) con NLA habilitada pero que estamos escaneando con un cliente sin soporte para 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.
Contra un Windows 7 (vulnerable o parcheado) con NLA habilitada y credenciales válidas, pero el usuario no forma parte del grupo «Usuarios de Escritorio remoto»:
$ 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.
Contra un Windows 7 (vulnerable o parcheado) con NLA habilitada y credenciales no válidas:
$ 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.
Contra un Windows 10 (no vulnerable) con NLA habilitada y credenciales no válidas:
$ 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 diferencia en la salida entre Windows 7 y Windows 10 probablemente se deba a las versiones de Windows CredSSP y su salida puede diferir.
Contra un Windows XP vulnerable (sin soporte para 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!!!
Contra un Windows 7 con RDP deshabilitado o puerto bloqueado:
$ 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 agradecimiento especial a @JaGoTu y @zerosum0x0 por publicar su escáner no autenticado de CVE-2019-0708 «BlueKeep», ver aquí. El escáner BKScan de este repositorio funciona de manera similar a su escáner pero ha sido portado a FreeRDP para dar soporte a NLA.
Gracias a mi2428 por publicar un script para ejecutar FreeRDP en Docker, ver aquí.
También gracias a las siguientes personas por contribuir:
Si tiene un problema con el escáner BlueKeep, por favor cree un issue en este repositorio de GitHub con la salida detallada usando ./bkscan.sh --debug.
Algunas versiones recientes de Linux (p. ej., Ubuntu 18.04 o Kali 2019.2 Rolling) no funcionan bien con las variables de entorno $DISPLAY y $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.
Funciona bien en una instalación nueva de Ubuntu 18.04, pero no en una instalación que he usado durante un tiempo, así que culpo a algún paquete o configuración relacionada con X11 que se haya actualizado.
docker-org documenta esto y propone una solución, pero no he sido capaz de hacerla funcionar por mí mismo. Así que no estoy seguro de que estén describiendo el mismo problema. Si tiene este problema al principio y es capaz de solucionarlo, no dude en hacer un PR.