
CVE-2019-0708 RDP RCE 脆弱性のためのスキャナー PoC
非認証のCVE-2019-0708 "BlueKeep" スキャナーPoC(@JaGoTu と @zerosum0x0 による)
技術詳細: https://zerosum0x0.blogspot.com/2019/05/avoiding-dos-how-bluekeep-scanners-work.html
Metasploit モジュールは rapid7:master に取り込まれました。
msf5> use auxiliary/scanner/rdp/cve_2019_0708_bluekeep
https://github.com/rapid7/metasploit-framework/pull/11869
C言語版のスキャナーをお探しの場合は、ErrataRob 氏によるこのプロジェクトのフォークをご確認ください。より軽量で、広範囲のスキャンが高速かつ簡単になっています。
https://github.com/robertdavidgraham/rdpscan
rdesktop のスキャナーフォークで、ホストが CVE-2019-0708(Microsoft Windows リモートデスクトップサービスのリモートコード実行の脆弱性)に対して脆弱かどうかを検出します。サービス拒否を引き起こすことはないはずですが、長年にわたる RDP スタックのすべての脆弱なバージョンにおいて100%保証されるわけではありません。非認証であるため、NLA ホスト(確認された緩和策)に対しては信頼性の高い結果は得られません。

リポジトリには事前ビルド済みの rdesktop バイナリがありますが、通常の rdesktop ビルドプロセスでも問題ありません:
git clone https://github.com/zerosum0x0/CVE-2019-0708.git
cd CVE-2019-0708/rdesktop-fork-bd6aa6acddf0ba640a49834807872f4cc0d0a773/
./bootstrap
./configure --disable-credssp --disable-smartcard
make
./rdesktop 192.168.1.7:3389
この rdesktop のフォークは X11 GUI Linux 環境でのみ十分にサポートされています。他のプラットフォームでは結果が異なります。通常の rdesktop コンパイル手順を参照するか、Docker イメージのビルド方法をご確認ください。
Dockerfile を使用してソースからビルドし、そのイメージを使って rdesktop を実行することもできます:
docker build . -t cve-2019-0708:latest
docker run cve-2019-0708:latest 192.168.1.7:3389
サブネットまたは Shodan でインデックスされたホストをスキャンするには、Docker イメージをビルドして scan_with_docker.py を実行します:
./scan_with_docker.py 'asn:ASXXXX port:3389'
Not a valid subnet. Trying to use as Shodan search terms ...
Shodan search returned 498 hosts, press enter to start scan
Vulnerable hosts:
x.x.x.x
x.x.x.x
[...]
./scan_with_docker.py 192.168.1.0/24
Vulnerable hosts:
192.168.1.28
192.168.1.30
[...]
脆弱性の細かい詳細はすでに一般に知られ始めています。このツールは攻撃者に理論上の RCE への容易な道を提供するものではありません。
この PoC を改変してサービス拒否を引き起こすようにすることは参入障壁を下げますが、ある程度の労力も必要です。元々、このスキャナーの動作方法についての説明は提供しておらず、テストにおいて正確であり論理的な道筋に従っていることだけをユーザーに伝えていました。
システム管理者は脆弱なホストを発見するためにこのようなツールを必要としています。このツールは法的目的のみ、およびセキュリティコミュニティのこの脆弱性に対する理解を促進するために提供されています。この PoC は積極的に脆弱性を悪用するため、事前の許可なくターゲットに対して使用しないでください。
rdesktop フォークは GPLv3 でライセンスされています。
Metasploit モジュールは Apache 2.0 でライセンスされています。