
BlueKeep scanner supporting NLA
BlueKeep(CVE-2019-0708) 스캐너로, 인증 없이(unauthenticated)와 인증(authenticated) 상태 모두에서 작동합니다. 즉, 네트워크 수준 인증(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가 활성화되어 있고 유효한 자격 증명이 있지만 사용자가 "Remote Desktop Users" 그룹에 속하지 않는 Windows 7(취약하거나 패치된)을 대상으로 합니다:
$ 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 스캐너는 그들의 스캐너와 유사하게 작동하지만 NLA를 지원하도록 FreeRDP로 포팅되었습니다.
Docker에서 FreeRDP를 실행하는 스크립트를 공개한 mi2428에게도 감사드립니다. 여기를 참조하세요.
또한 기여해 주신 다음 분들께 감사드립니다:
BlueKeep 스캐너에 문제가 있는 경우, 이 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을 보내 주세요.