
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が有効で有効な資格情報を持つが、ユーザーが「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のバージョンによる可能性が高く、出力が異なる場合があります。
脆弱な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!!!
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スキャナーに問題がある場合は、./bkscan.sh --debugを使用した詳細な出力を添えて、このGitHubリポジトリにissueを作成してください。
一部の最近の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を送ってください。