
BlueKeep scanner supporting NLA
BlueKeep (CVE-2019-0708) 扫描器,支持未认证和认证两种模式(即当启用网络级别身份验证(NLA)时)。
要求:
它基于 FreeRDP,并使用 Docker 来简化编译/执行。它应可在任何 UNIX 环境下运行,并且主要在 Linux/Ubuntu 上测试过。
安装前置依赖:
sudo apt-get install docker.io
在名为 bkscan 的 Docker 容器内构建自定义 FreeRDP 客户端:
$ git clone https://github.com/nccgroup/BKScan.git
$ cd BKScan
$ sudo docker build -t bkscan .
[...]
Successfully built f7666aeb3259
Successfully tagged bkscan:latest
从您的机器上调用 bkscan.sh 脚本。它将调用新建的 bkscan Docker 容器内的自定义 FreeRDP 客户端:
$ sudo ./bkscan.sh -h
Usage:
./bkscan.sh -t <target_ip> [-P <target_port>] [-u <user>] [-p <password>] [--debug]
针对启用了 NLA 且具有有效凭据的易受攻击 Windows 7:
$ 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!!!
针对启用了 NLA 且具有有效凭据的 Windows 10(无漏洞)或已修补的 Windows 7:
$ 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.
针对启用了 NLA 的 Windows 7(存在漏洞或已修补),但我们使用不支持 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.
针对启用了 NLA 且具有有效凭据的 Windows 7(存在漏洞或已修补),但用户不属于“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.
针对启用了 NLA 且凭据无效的 Windows 7(存在漏洞或已修补):
$ 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.
针对启用了 NLA 且凭据无效的 Windows 10(无漏洞):
$ 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 之间的输出差异很可能取决于 Windows CredSSP 版本,您的输出可能会有所不同。
针对存在漏洞且不支持 NLA 的 Windows XP:
$ 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!!!
针对禁用 RDP 或端口被屏蔽的 Windows 7:
$ 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 发布了一个在 Docker 中运行 FreeRDP 的脚本,参见此处。
还要感谢以下人员的贡献:
如果您在使用 BlueKeep 扫描器时遇到问题,请在此 GitHub 仓库中创建一个 issue,并使用 ./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。