
BlueGate Exploit 検証ツール - OpenSSL DTLS over UDP/3391 を使用した、CVE-2020-0609 および CVE-2020-0610 (BlueGate) 向け RD Gateway 検証ツール。
Microsoft リモート デスクトップ ゲートウェイの脆弱性に関連するパッチ適用状況をリモートで検証するための、チェック専用の小さな Python ユーティリティです。
これらの脆弱性は、一般に BlueGate 研究として知られており、Microsoft リモート デスクトップ ゲートウェイ (RD Gateway) に影響を及ぼし、パッチ未適用のサーバー上で認証されていないリモート攻撃者による任意のコード実行を許す可能性があります。
このユーティリティは、リモート コード実行、サービス拒否、永続化、ペイロード配信を実装しません。
単一のプロトコルレベルの検証リクエストを実行し、RD Gateway の応答を評価します。
| プロパティ | 詳細 |
|---|
| CVE | CVE-2020-0609、CVE-2020-0610 |
| コンポーネント | Microsoft リモート デスクトップ ゲートウェイ |
| 脆弱性の種類 | リモート コード実行 |
| 認証の必要性 | 不要 |
| ユーザー操作 | 不要 |
| 攻撃ベクトル | ネットワーク |
| 深刻度 | 緊急 |
| CVSS v3.1 | 9.8 |
| CVSS ベクター | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 主なプロトコル | RD Gateway UDP トランスポート |
| デフォルト UDP ポート | 3391/UDP |
| 公開名 | BlueGate |
影響を受ける Windows Server ファミリには以下が含まれます:
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Windows Server 2019
Microsoft の 2020 年 1 月のセキュリティ更新プログラム以降の累積更新プログラムをインストールしたシステムには、関連する修正プログラムが含まれているはずです。
RD Gateway の展開では、複数の関連サービスが公開される可能性があります。
例:
Microsoft RD Gateway
|
+------------+------------+
| |
TCP/443 UDP/3391
| |
HTTPS / RDWeb RD Gateway UDP
RPC-over-HTTPS DTLS トランスポート
RDWeb ポータルは、ブラウザで次の場所から表示できる場合があります:
https://gateway.example/RDWeb/
また、RD Gateway 機能は TCP/443 経由でも公開される場合があります。
ただし、この BlueGate スタイルのバリデータでテストされる攻撃対象領域は、通常次の場所で待ち受ける RD Gateway UDP トランスポートです:
UDP/3391
したがって、スキャナは TCP/443 上の HTTPS ではなく、UDP/3391 上の DTLS を使用します。
スクリプトをポート 443 に変更すると、次のテストを意味します:
UDP/443
これは、次のものと同じではありません:
TCP/443
脆弱性バリデータを実行する前に、UDP/3391 を Nmap で確認できます:
nmap -Pn -sU -p3391 --reason <TARGET>
例:
PORT STATE SERVICE
3391/udp open savant
savant サービスラベルは、単に Nmap のポート名マッピングであり、実際のサービスを特定するものではありません。
RD Gateway DTLS サービスは、OpenSSL を使用してより確実に確認できます。
openssl s_client \
-dtls1 \
-connect <TARGET>:3391 \
-state
openssl s_client \
-dtls1_2 \
-connect <TARGET>:3391 \
-state
ハンドシェイクが成功すると、DTLS サービスが UDP/3391 で応答していることが確認されます。
典型的な成功出力には以下が含まれます:
SSL handshake has read ...
New, SSLv3, Cipher is ...
Protocol: DTLSv1
または:
Protocol: DTLSv1.2
バリデータは次の処理を実行します:
検証に認証情報は必要ありません。
このユーティリティには意図的に以下が含まれています:
リバースシェルなし
コマンド実行なし
エクスプロイトペイロードなし
サービス拒否ループなし
不正なパケットの繰り返し送信なし
以下でテスト済み:
Python 3
OpenSSL コマンドラインクライアント
Linux
OpenSSL の確認:
openssl version
Python の確認:
python3 --version
Python OpenSSL モジュールは不要です。スクリプトはシステムの openssl s_client 実装を起動するためです。
これにより、非推奨の Python/OpenSSL API (例: DTLSv1_client_method) に依存していた古い BlueGate 実装で発生した互換性の問題を回避します。
基本的なスキャン:
python3 BlueGate.py <TARGET>
例:
python3 BlueGate.py 192.0.2.10
デフォルトの宛先は次のとおりです:
UDP/3391
python3 BlueGate.py \
-P 3391 \
192.0.2.10
python3 BlueGate.py \
--dtls 1 \
192.0.2.10
python3 BlueGate.py \
--dtls 1.2 \
192.0.2.10
両方をテストすると便利な場合があります:
python3 BlueGate.py --dtls 1 192.0.2.10
python3 BlueGate.py --dtls 1.2 192.0.2.10
パッチ適用済み RD Gateway からの結果例:
[*] Target: 192.0.2.10:3391/udp
[*] DTLS mode: 1.2
[*] Starting OpenSSL DTLS client...
[+] DTLS handshake completed.
[*] Probe (11 bytes): 0500070000004100010041
[*] Sending one validation packet...
[*] Response length: 16
[*] Response hex: 02000c0000000000ffffffffffff0080
[*] Status: 0x8000ffff
[+] PATCHED SIGNATURE RECEIVED
Server returned 0x8000ffff, which is
the rejection value used by the public
CVE detector to identify a patched host.
同じパッチ適用済みの応答が DTLS 1.0 経由でも返される場合があります:
Response length: 16
Response hex: 02000c0000000000ffffffffffff0080
Status: 0x8000ffff
0x8000ffff次の値で終わる応答:
0x8000ffff
は、公開されている BlueGate/RD Gateway スキャナが不正な断片化状態の拒否を識別するために使用する拒否値です。
したがって、このツールは次のように報告します:
PATCHED SIGNATURE RECEIVED
これは、CVE-2020-0609/CVE-2020-0610 に対してテストされた特定の状態が、既知の公開検出技術を使用して悪用可能ではないという強力なプロトコルレベルの証拠を提供します。
16 バイトの RD Gateway 応答を受信したが、最終 DWORD が次の値以外の場合:
0x8000ffff
ツールは次のように報告します:
DETECTOR POSITIVE
これは次のように扱う必要があります:
潜在的に脆弱
リモート コード実行の成功の即時的な証明としてではなく。
この結果は、できれば次のものを使用して裏付けを取る必要があります:
Windows ビルド情報
インストール済み KB 情報
Microsoft パッチ インベントリ
資格情報を使用した脆弱性スキャン
脆弱性を決定的に悪用可能として報告する前に。
アプリケーションの応答を受信しない場合:
INCONCLUSIVE
このツールは意図的にタイムアウトを脆弱として分類しません。
タイムアウトは次の原因で発生する可能性があります:
したがって:
応答なし != 脆弱
公開されている BlueGate/RDG 検出アプローチは、異常なフラグメント数を含む RD Gateway 断片化パケットを使用します。
概念的には:
DTLS 接続
|
v
+-----------------------+
| RD Gateway UDP パーサー |
+-----------------------+
|
| 断片化検証パケット
v
+-----------------------+
| フラグメント検証 |
+-----------------------+
|
+---- パッチ適用済み ----> 拒否
| 0x8000ffff
|
+---- 予期しない ----> 調査が必要
このユーティリティが使用する検証パケットは、1 回だけ送信されます。
このプロジェクトは、以下の目的にのみ使用することを意図しています:
明示的な許可を得たシステムのみをテストしてください。
著者は、本ソフトウェアの使用または変更に起因する誤用、不正アクセス、サービス中断、データ損失、その他の結果について一切の責任を負いません。
検出方法論は、BlueGate および RD Gateway セキュリティ研究コミュニティによって行われた作業を含む、Microsoft RD Gateway の脆弱性 CVE-2020-0609 および CVE-2020-0610 に関する公開文書化された研究に基づいています。
このプロジェクトは主に、非推奨の pyOpenSSL DTLS 内部ではなく、システムの OpenSSL DTLS 実装を使用して検証ワークフローを近代化します。