エグゼクティブ サマリー
Microsoft 社は、ここ数ヵ月間で重大な Remote Desktop Protocol(RDP)関連のセキュリティ バグに対するセキュリティ更新プログラムをいくつかリリースしました。これらのバグは「ワーマブル(ワームの侵入を許す危険性)」として分類されているため、IT インフラストラクチャに大きな影響があります。「ワーマブル」とは、エクスプロイトされた場合、ユーザが特に操作しなくてもシステム間で感染が拡散し得ることを意味します。これらの脆弱性は、細工したリクエストを RDP 経由で標的システムのリモート デスクトップ サービスに送信する手法により、エクスプロイトされる可能性があります。特に有名な WannaCry などにより、このような攻撃の破壊力はすでにご存じかと思います。そのため、Microsoft 社のパッチをすぐに適用することを強く推奨します。Cisco Talos は、CVE-2019-0708 の検出カバレッジをリリースしました。また、RDP セッションの検査を容易にするためのガイダンスもこちらで詳しく説明しています。Microsoft 社は先月、追加のセキュリティ更新プログラムを公開しました。これは、Microsoft Windows の複数のバージョンに影響を与える、リモートでコードが実行される 2 つの新たな脆弱性(CVE-2019-1181 および CVE-2019-1182)を軽減するためのものです。これらのバグは、BlueKeep と類似しているため「DejaBlue」と呼ばれています。
今回も、Cisco Talos は RCE の脆弱性をリバース エンジニアリングするため、早急に対応を開始しました。現在は、CVE-2019-1181 と CVE-2019-1182 の両方が保護され、システムのセキュリティを維持できるようになっています。SNORTR の SID 51369 が、CVE-2019-1181 および CVE-2019-1182 のエクスプロイトを適切にブロックします。この記事では、「DejaBlue」を利用したエクスプロイトの対策方法の詳細を説明し、環境を保護するための手順を順を追って解説します。
リモート デスクトップ サービスによりリモートでコードが実行される脆弱性(CVE-2019-0708)
この脆弱性は、もともと 2019 年 5 月に公表されたもので、通常「BlueKeep」と呼ばれます。認証前の段階に存在する脆弱性であるため、攻撃者が有効な資格情報を使用して標的システムにログインせずに、エクスプロイトできる可能性があります。Microsoft 社は、この脆弱性に関するセキュリティ アドバイザリをリリースし、対応するセキュリティ更新プログラムをシステムに適用して、攻撃の脅威を軽減するよう繰り返し求めています。
この数ヵ月間で大規模な調査が行われ、多くの研究者がエクスプロイト ペイロードの開発に取り組んできました。リモートでコードを実行するエクスプロイトはすでに開発されましたが、現時点では一般には公開されていません。そのため、この脆弱性の影響を受けないように、できるだけ早くシステムを更新する必要があります。セキュリティ更新プログラムを適用できない場合、Microsoft Windows 内で利用可能なネットワーク レベル認証(NLA)機能を利用し、インターネットからの RDP サーバへのアクセスを制限してリスクを抑制する必要があります。
リモート デスクトップ サービスによりリモートでコードが実行される脆弱性(CVE-2019-1181、CVE-2019-1182)
Microsoft 社は先月、追加のセキュリティ更新プログラムを公開しました。これは、Microsoft Windows の複数のバージョンに影響を与える、リモートでコードが実行される 2 件の新たな脆弱性を軽減するためのものです。CVE-2019-0708 について説明したのと同様に、これらの脆弱性も認証前の段階に存在するものであるため、標的のシステムを侵害するのにユーザによる明示的な操作を必要としません。Microsoft 社は、CVE-2019-1181 および CVE-2019-1182 のガイダンス速報を公開し、システムをできるだけ早く更新するよう勧めています。セキュリティ更新プログラムのインストールに加えて、NLA を有効にすると、攻撃者がエクスプロイトの条件を満たす前に RDP サーバの認証が必要になるため、部分的な緩和策となる可能性についても速報で言及されています。
Firepower を使って暗号化された DejaBlue から防御する
BlueKeep と同様に、DejaBlue に対する保護には RDP 復号が必要です。以下に、Cisco Firepower で RDP 復号を設定する方法を説明します。DejaBlue は新しいバージョンの Windows を対象とするため、このガイドは特に Windows Server 2019 に当てはまります。古いバージョンの Windows については、以前 BlueKeep に関して記載したガイドを参照してください。
注:以下の手順では、SSL 復号をサポートするインライン Firepower デバイスが必要になります。詳細については、シスコ次世代侵入防御システム(NGIPS)を参照してください。
RDP 復号の設定手順:
1. RDP サーバで使用する証明書を決定します。
Windows Server 2019 では、RDP TLS 証明書はサーバ マネージャで構成されます。
[リモート デスクトップ サービス] をクリックし、[コレクション] をクリックします。右上隅にある [タスク] をクリックし、[展開プロパティの編集] を選択します。
[証明書] をクリックします。
[証明書] で、証明書のサブジェクト名の下にある [詳細の表示] をクリックします。
証明書の拇印をメモします。これは、RDP 展開環境で使用する TLS 証明書です。
2. RDP 証明書と秘密キーをエクスポートします。
[実行] を開き、「certlm.msc」と入力します。
ステップ 1 の拇印と一致する証明書を見つけます。
証明書を右クリックします。[すべてのタスク] で [エクスポート…] をクリックします。
エクスポート ウィザードで、[次へ] をクリックします。
[はい、秘密キーをエクスポートします] をクリックします。
「PKCS」が選択されていることを確認します。
[パスワード] をクリックし、秘密キーを暗号化するためのパスワードを入力します。
PFX ファイルのファイル名を入力し、[次へ] をクリックします。
最後に、[完了] をクリックします。
これで、RDP 証明書と秘密キーが正常にエクスポートされました。
3. Firepower 用の Windows CipherSuite を構成します。
[グループ ポリシーの管理] を開きます。
グループ ポリシーを右クリックし、[編集] をクリックします。
[コンピューターの構成] -> [ポリシー] -> [管理用テンプレート] -> [ネットワーク] – > [SSL 構成設定] に移動します。[SSL 暗号の順位] をクリックします。
オプションを [有効] に設定し、静的キーの復号に Firepower がサポートする以下の CipherSuite 一式を貼り付けます。
TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC _SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA
[OK] をクリックします。これで、RDP ホストをセットアップできました。
次に、Firepower アプライアンスの RDP 証明書と秘密キーを準備します。
4. Firepower の RDP 証明書と秘密キーを準備します。
この手順では、OpenSSL ツールと、ステップ 2 でエクスポートした PFX ファイル(この例では rdp.pfx)が必要になります。
PFX ファイルから RDP 証明書を抽出します。
$ openssl pkcs12 -in rdp.pfx -clcerts -nokeys -out cert.pem
Enter Import Password:
このコマンドでは、インポート パスワードの入力を求められます。これは、ステップ 2 で設定したパスワードです。
PFX ファイルから RDP 秘密キーを抽出します。
$ openssl pkcs12 -in rdp.pfx -nocerts -out key.pem
Enter Import Password:
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
上記のコマンドでは、同じインポート パスワードの入力と、PEM パスフレーズの設定を求められます。この秘密キーのパスフレーズを覚えておいてください。これは、RDP 証明書を Firepower に追加するときに必要になります。
5. RDP キーを Firepower にインポートします。
この時点で、RDP 証明書「cert.pem」と、暗号化された RDP 秘密キー「key.pem」が手元にあるはずです。
[オブジェクト(Objects)] -> [オブジェクト管理(Object Management)] に移動します。
右上にある [内部証明書の追加(Add Internal Cert)] を選択します。
証明書の名前(サーバ名など)を指定し、[証明書データ(Certificate Data)] セクションで cert.pem のデータを貼り付けるか、cert.pem ファイルを指定します。[キー(Key)] セクションでも、key.pem について同じ操作を行います。[暗号化(Encrypted)] のボックスをクリックし、ステップ 4 の PEM パスフレーズを入力します。
これで、RDP 証明書と秘密キーが正常にインポートされました。次に、復号用の SSL ポリシーを作成します。
6. SSL ポリシーを作成します。
[ポリシー(Policies)] -> [SSL] に移動します。
[新しいポリシー(New Policy)] を選択します。
ポリシー名と説明を入力し、デフォルトのアクションに [復号しない(Do not decrypt)] を選択します。
ポリシー エディタが表示されたら、[ルールの追加(Add Rule)](右上)を選択します。
ルールの名前を指定し、アクションに [復号(既知のキー)(Decrypt – Known Key)] を選択します。[使用(with)] フィールドをクリックし、前のステップ 5 でインポートした証明書を選択します。
必要に応じて、送信元と送信先のネットワークを選択するか、[すべて(any)] のままにします。
[ポート(Ports)] タブをクリックし、[選択された送信先ポート(Selected Destination Ports)] で TCP ポート 3389(値は環境によって異なる場合があります)を入力し、[追加(Add)] をクリックします。
[ログ(Logging)] タブで、必要に応じて接続の終了時のログ記録を有効にします。
[追加] をクリックし、次に [保存] をクリックしてルールを保存します。
SSL に関する詳細な資料については、こちらを参照してください。
6. DejaBlue に対する侵入防御ルールを有効にします。
[ポリシー] -> [アクセス制御] -> [侵入防御] に移動します。
侵入ポリシーを編集します。
フィルタを使用して Snort ID 51369「OS-WINDOWS Microsoft Windows RDP DecompressUnchopper integer overflow attempt」を表示します。
チェックボックスをクリックして、[ルール状態(Rule State)] -> [ドロップしてイベントを生成(Drop and Generate Events)] を選択します。
[ポリシー情報] をクリックして、変更を確定します。
7. アクセス制御ポリシーを構成する
[ポリシー] -> [アクセス制御] に移動し、該当のアクセス制御ポリシーを編集します。
[詳細設定(Advanced)] タブで、[SSLポリシー設定(SSL Policy Settings)] を編集します。
ステップ 5 で作成した SSL ポリシーを選択し、[OK] をクリックします。
[詳細設定(Advanced)] タブにある [ネットワーク分析ポリシーと侵入ポリシー(Network Analysis and Intrusion Policies)] セクションの [アクセス制御ルールが決定される前に使用される侵入ポリシー(Intrusion Policy used before Access Control rule is determined)] で、侵入防御ポリシーが選択されていることを確認します。
アクセス制御ポリシーの [ルール(Rules)] タブで、[すべて(any)] に対する許可ルールに適切な侵入ポリシーが設定されていることを確認します。
必要に応じて、デフォルトのアクションでも侵入防御ポリシーを有効にします。
変更を保存し、反映します。RDP 接続をして機能を検証します。
Firepower が、暗号化された DejaBlue を利用したエクスプロイトをブロックします。
まとめ
CISO(最高情報セキュリティ責任者)が恐ろしい BlueKeep ワームの到来を待ち構えていたまさにそのとき、DejaBlue が姿を現しました。脆弱性がエクスプロイトされると、攻撃者が DejaBlue を利用して多くのマシンに素早く感染を広げ、マルウェアを拡散するおそれがあります。2017 年から始まった WannaCry ランサムウェア攻撃は、その危険性を表す最も極端な例です。この記事で説明した手順を使用すれば、Cisco Firepower のユーザは DejaBlue と BlueKeep から身を守ることができます。
一層の対策を講じて、明らかに必要な場合以外は RDP や SMB などのサービスが無防備にならないようにする必要があります。しかし、そうした対策を講じたとしても、パッチの適用が不要になるわけではありません。この脆弱性も、情報セキュリティの基本的な中核概念の 1 つとしてなぜパッチの適用が重要視されているのかを示す一例となっています。このような重大な脆弱性はある程度の時間が経つと必ず出現してきます。企業は、さまざまな方法での対応を考え準備をしておく必要があります。パッチの適用には時間がかかります。また、検出や防御の機能の適切な導入には、さまざまな困難が伴うこともあります。
本稿は 2019年9月3日に Talos Group のブログに投稿された「he latest on BlueKeep and DejaBlue vulnerabilities – Using Firepower to defend against encrypted DejaBlue」の抄訳です。