
Scanner BlueKeep com suporte a NLA
Scanner BlueKeep (CVE-2019-0708) que funciona tanto sem autenticação como autenticado (ou seja, quando a Autenticação em Nível de Rede (NLA) está ativada).
Requisitos:
Ele é baseado no FreeRDP e usa Docker para facilitar a compilação/execução. Deve funcionar em qualquer ambiente UNIX e foi testado principalmente no Linux/Ubuntu.
Instale os pré-requisitos:
sudo apt-get install docker.io
Compile o cliente FreeRDP personalizado dentro do contêiner Docker chamado bkscan:
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
Invoque o script bkscan.sh a partir da sua máquina. Ele invocará o cliente FreeRDP personalizado dentro
do contêiner Docker bkscan recém-criado:
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
Contra um Windows 7 vulnerável com NLA ativado e credenciais 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 um Windows 10 (não vulnerável) ou Windows 7 corrigido com NLA ativado e credenciais 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 um Windows 7 (vulnerável ou corrigido) com NLA ativado, mas que estamos escaneando com um cliente sem suporte a 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 um Windows 7 (vulnerável ou corrigido) com NLA ativado e credenciais válidas, mas o usuário não faz parte do grupo "Usuários de Área de Trabalho Remota":
$ 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 um Windows 7 (vulnerável ou corrigido) com NLA ativado e credenciais invá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 um Windows 10 (não vulnerável) com NLA ativado e credenciais invá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: a diferença na saída entre Windows 7 e Windows 10 provavelmente se deve às versões do Windows CredSSP e a sua saída pode ser diferente.
Contra um Windows XP vulnerável (sem suporte a 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 um Windows 7 com RDP desativado ou porta bloqueada:
$ 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.
Agradecimentos especiais a @JaGoTu e @zerosum0x0 por lançarem seu Scanner não autenticado para CVE-2019-0708 "BlueKeep", veja aqui. O scanner BKScan neste repositório funciona de forma semelhante ao scanner deles, mas foi portado para o FreeRDP para suportar NLA.
Obrigado ao mi2428 por disponibilizar um script para executar o FreeRDP no Docker, veja aqui.
Agradecemos também às seguintes pessoas por contribuírem:
Se você tiver um problema com o scanner BlueKeep, crie uma issue neste repositório do GitHub
com a saída detalhada usando ./bkscan.sh --debug.
Algumas versões recentes do Linux (por exemplo, Ubuntu 18.04 ou Kali 2019.2 Rolling) não funcionam bem com as
variáveis de 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.
Funciona bem em uma instalação nova do Ubuntu 18.04, mas não em uma instalação que uso há um tempo, então atribuo a culpa a algum pacote ou configuração atualizada relacionada ao X11.
O docker-org documenta isso e propõe uma solução, mas eu mesmo não consegui fazê-la funcionar. Portanto, não tenho certeza se eles estão descrevendo o mesmo problema. Se você tiver esse problema inicialmente e conseguir corrigi-lo, sinta-se à vontade para fazer um PR.