
BlueKeep scanner supporting NLA
Сканер BlueKeep (CVE-2019-0708), работающий как без аутентификации, так и с аутентификацией (т.е. когда включена сетевая аутентификация на уровне сети (NLA)).
Требования:
Он основан на FreeRDP и использует Docker для упрощения компиляции/запуска. Он должен работать в любой UNIX-среде и в основном тестировался в Linux/Ubuntu.
Установите предварительные требования:
sudo apt-get install docker.io
Соберите собственный клиент FreeRDP внутри Docker-контейнера с именем bkscan:
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
Вызовите скрипт bkscan.sh со своей машины. Он запустит собственный клиент FreeRDP внутри
нового Docker-контейнера bkscan:
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
Для уязвимой Windows 7 с включённым NLA и действительными учётными данными.
$ 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!!!
Для Windows 10 (не уязвимой) или пропатченной Windows 7 с включённым NLA и действительными учётными данными:
$ 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.
Для Windows 7 (уязвимой или пропатченной) с включённым NLA, но сканируемой с помощью клиента без поддержки 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.
Для Windows 7 (уязвимой или пропатченной) с включённым NLA и действительными учётными данными, но пользователь не входит в группу "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.
Для Windows 7 (уязвимой или пропатченной) с включённым NLA и недействительными учётными данными:
$ 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.
Для Windows 10 (не уязвимой) с включённым NLA и недействительными учётными данными:
$ 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.
Примечание: разница в выводе между Windows 7 и Windows 10, вероятно, связана с версиями CredSSP в Windows, и ваш вывод может отличаться.
Для уязвимой Windows XP (без поддержки 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!!!
Для Windows 7 с отключённым RDP или заблокированным портом:
$ 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.
Особая благодарность @JaGoTu и @zerosum0x0 за публикацию их сканера CVE-2019-0708 "BlueKeep" без аутентификации, см. здесь. Сканер BKScan в этом репозитории работает аналогично их сканеру, но был портирован на FreeRDP для поддержки NLA.
Спасибо mi2428 за публикацию скрипта для запуска FreeRDP в Docker, см. здесь.
Также спасибо следующим людям за вклад:
Если у вас возникли проблемы со сканером BlueKeep, пожалуйста, создайте issue в этом репозитории GitHub
с подробным выводом, используя ./bkscan.sh --debug.
Некоторые свежие версии Linux (например, Ubuntu 18.04 или Kali 2019.2 Rolling) некорректно работают
с переменными окружения $DISPLAY и $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.
На чистой установке Ubuntu 18.04 всё работает нормально, но на установке, которой я пользовался какое-то время, — нет, поэтому я подозреваю какой-то обновлённый X11-пакет или конфигурацию.
docker-org описывает эту проблему и предлагает решение, но мне самому так и не удалось заставить его работать. Поэтому я не уверен, что они описывают ту же проблему. Если у вас возникла эта проблема с самого начала и вы смогли её исправить, пожалуйста, не стесняйтесь сделать PR.