Cisco Japan Blog

BlueKeep および DejaBlue の脆弱性に関する最新情報:暗号化された DejaBlue を Firepower で防御する

1 min read




BlueKeep」と呼ばれる CVE-2019-0708popup_icon のアクティブなエクスプロイトに関するレポートpopup_iconがいくつか公開されています。暫定レポートpopup_iconでは、攻撃者がこの脆弱性をエクスプロイトし、侵害したシステムに対するアクセス権を利用して暗号通貨マイニングマルウェアをインストールしていることが示されています。現時点ではこのエクスプロイトが新たなワームの出現によるものであることを示す証拠はなく、大量のエクスプロイトキャンペーンの以前のインスタンスpopup_iconで確認されたものと同様の可能性があります。BlueKeep の既存のカバレッジは、引き続きエクスプロイトの可能性を軽減する効果的な方法です。BlueKeep を利用した攻撃に対する防御の詳細については、こちらpopup_iconのブログ記事を参照してください。

エグゼクティブサマリー

Microsoft 社は、ここ数ヵ月間で重大な Remote Desktop Protocol(RDP)関連のセキュリティバグに対するセキュリティ更新プログラムをいくつかリリースしました。これらのバグは「ワーマブル」として分類されているため、IT インフラストラクチャに大きな影響があります。「ワーマブル」とは、エクスプロイトされた場合、ユーザが特に操作しなくてもシステム間で感染が拡散し得ることを意味します。これらの脆弱性は、標的システムのリモート デスクトップ サービスに、細工したリクエストを RDP 経由で送信する手法により、エクスプロイトされる可能性があります。特に有名な WannaCry などにより、このような攻撃の破壊力はすでにご存じかと思います。そのため、Microsoft 社のパッチをすぐに適用することを強く推奨します。Cisco Talos は、CVE-2019-0708 の検出カバレッジをリリースしました。また、RDP セッションの検査を容易にするためのガイダンスもこちらpopup_iconで詳しく説明しています。Microsoft 社は先月、追加のセキュリティ更新プログラムを公開しました。これは、Microsoft Windows の複数のバージョンに影響を与える、リモートからコードが実行される 2 つの新たな脆弱性(CVE-2019-1181 および CVE-2019-1182)を軽減するためのものです。これらのバグは、BlueKeep と類似しているため「DejaBlue」と呼ばれています。

今回も Cisco Talos は、RCE の脆弱性をリバースエンジニアリングするため、早急に対応を開始しました。現在は、CVE-2019-1181 と CVE-2019-1182 の両方から保護され、システムのセキュリティを確保できるようになっています。SNORT® の SID 51369 が、CVE-2019-1181 および CVE-2019-1182 のエクスプロイトを適切にブロックします。この記事では、「DejaBlue」を利用したエクスプロイトの対策方法の詳細を説明し、環境を保護するための手順を解説します。

リモート デスクトップ サービスによりリモートからコードが実行される脆弱性(CVE-2019-0708)

この脆弱性は、もともと 2019 年 5 月に公表されたもので、通常「BlueKeep」と呼ばれます。認証前の段階に存在する脆弱性であるため、攻撃者が有効なクレデンシャルを使用して標的システムにログインせずに、エクスプロイトできる可能性があります。Microsoft 社は、この脆弱性に関するセキュリティアドバイザリpopup_iconをリリースし、対応するセキュリティ更新プログラムをシステムに適用して、攻撃の脅威を軽減するよう繰り返し求めています。

この数ヵ月間で大規模な調査が行われ、多くの研究者がエクスプロイトペイロードの開発に取り組んできました。リモートからコードを実行するエクスプロイトはすでに開発されましたが、現時点では一般には公開されていません。そのため、この脆弱性の影響を受けないように、できるだけ早くシステムを更新する必要があります。セキュリティ更新プログラムを適用できない場合、Microsoft Windows 内で利用可能なネットワークレベル認証(NLA)機能を利用し、インターネットからの RDP サーバへのアクセスを制限してリスクを抑制する必要があります。

リモート デスクトップ サービスによりリモートからコードが実行される脆弱性(CVE-2019-1181、CVE-2019-1182)

Microsoft 社は先月、追加のセキュリティ更新プログラムを公開しました。これは、Microsoft Windows の複数のバージョンに影響を与える、リモートからコードが実行される 2 件の新たな脆弱性を軽減するためのものです。CVE-2019-0708 について説明したのと同様に、これらの脆弱性も認証前の段階に存在するものであるため、標的のシステムを侵害するために、ユーザによる明示的な操作を必要としません。Microsoft 社は、CVE-2019-1181popup_icon および CVE-2019-1182popup_icon のガイダンス速報を公開し、システムをできるだけ早く更新するよう勧めています。セキュリティ更新プログラムのインストールに加えて、NLA を有効にすると、攻撃者がエクスプロイトの条件を満たす前に RDP サーバの認証が必要になるため、部分的な緩和策となる可能性についても速報で言及されています。

暗号化された DejaBlue を Firepower で防御する

BlueKeep と同様に、DejaBlue に対する保護には RDP 復号が必要です。以下に、Cisco Firepower で RDP 復号を設定する方法を説明します。DejaBlue は、新しいバージョンの Windows を対象とするため、このガイドは特に Windows Server 2019 に当てはまります。古いバージョンの Windows については、以前 BlueKeeppopup_icon に関して記載したガイドを参照してください。

注:以下の手順では、SSL 復号をサポートするインライン Firepower デバイスが必要になります。詳細については、シスコ次世代侵入防御システム(NGIPS)popup_iconを参照してください。

RDP 復号の設定手順:

1. RDP サーバで使用する証明書を決定します。

Windows Server 2019 では、RDP TLS 証明書は、サーバ マネージャで設定します。

[リモートデスクトップサービス(Remote Desktop Services)] をクリック後、[コレクション(Collections)] をクリックします。右上隅にある [タスク(Tasks)] をクリックし、[導入プロパティの編集(Edit Deployment Properties)] を選択します。

 

[証明書(Certificates)] をクリックします。

[証明書(Certificates)] で、証明書のサブジェクト名の下にある [詳細の表示(View Details)] をクリックします。

証明書のサムプリントをメモします。これは、RDP 導入環境で使用する TLS 証明書です。

2. RDP 証明書と秘密キーをエクスポートします。

[実行(Run)] を開き、「certlm.msc」と入力します。

ステップ 1 のサムプリントと一致する証明書を見つけます。

証明書を右クリックします。[すべてのタスク(All Tasks)] で [エクスポート…(Export…)] をクリックします。

エクスポートウィザードで、[次へ(Next)] をクリックします。

[はい、秘密キーをエクスポートします(Yes, export the private key)] をクリックします。

「PKCS」が選択されていることを確認します。

[パスワード(Password)] をクリックし、秘密キーを暗号化するためのパスワードを入力します。

PFX ファイルの名前を入力し、[次へ(Next)] をクリックします。

最後に、[完了(Finish)] をクリックします。

これで、RDP 証明書と秘密キーが正常にエクスポートされました。

3. Firepower 用の Windows CipherSuite を設定します。

popup_icon

[ループポリシーの管理(Group Policy Management)] を開きます。

グループポリシーを右クリックし、[編集(Edit)] をクリックします。

[コンピュータの設定(Computer Configuration)] -> [ポリシー(Policies)] -> [管理用テンプレート(Administrative Templates)] -> [ネットワーク(Network)] – > [SSL設定(SSL Configuration Settings)] に移動します。[SSL Cipher Suiteの順位(SSL Cipher Suite Order)] をクリックします。

オプションを [有効(Enabled)] に設定し、静的キーの復号に 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)] を選択します。

ポリシー名と説明を入力し、[デフォルトのアクション(Default Action)] で [復号しない(Do not decrypt)] を選択します。

 

ポリシーエディタが表示されたら、[ルールの追加(Add Rule)](右上)を選択します。

ルールの名前を指定し、[アクション(Action)] で [復号(既知のキー)(Decrypt – Known Key)] を選択します。[使用(with)] フィールドをクリックし、前のステップ 5 でインポートした証明書を選択します。

必要に応じて送信元と宛先のネットワークを選択するか、[すべて(any)] のままにします。

[ポート(Ports)] タブをクリックし、[選択された宛先ポート(Selected Destination Ports)] で TCP ポート 3389(値は環境によって異なる場合があります)を入力し、[追加(Add)] をクリックします。

[ログ(Logging)] タブで、必要に応じて接続の終了時のログ記録を有効にします。

 

[追加(Add)] をクリック後、[保存(Save)] をクリックしてルールを保存します。

SSL に関する詳細な資料については、こちらpopup_iconを参照してください。

7. DejaBlue に対する侵入防御ルールを有効にします。

[ポリシー(Policies)] -> [アクセス制御(Access Control)] -> [侵入防御(Intrusion Prevention)] に移動します。

 

侵入ポリシーを編集します。

フィルタを使用して Snort ID 51369「OS-WINDOWS Microsoft Windows RDP DecompressUnchopper integer overflow attempt」を表示します。

チェックボックスをクリックして、[ルール状態(Rule State)] -> [ドロップしてイベントを生成(Drop and Generate Events)] を選択します。

[ポリシー情報(Policy Information)] をクリックして、変更を確定します。

8. アクセス制御ポリシーを設定します。

[ポリシー(Policies)] -> [アクセス制御(Access Control)] に移動し、該当のアクセス制御ポリシーを編集します。

[詳細設定(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)] に対する [許可(Allow)] ルールに適切な侵入ポリシーが設定されていることを確認します。

必要に応じて、デフォルトのアクションでも侵入防御ポリシーを有効にします。

変更を保存し、反映します。RDP 接続をして機能を検証します。


Firepower が、暗号化された DejaBlue を利用したエクスプロイトをブロックします。

まとめ

CISO(最高情報セキュリティ責任者)が恐ろしい BlueKeep ワームの到来を待ち構えていたまさにそのとき、DejaBlue が姿を現しました。脆弱性がエクスプロイトされると、攻撃者が DejaBlue を利用して多くのマシンに素早く感染を広げ、マルウェアを拡散させるおそれがあります。2017 年から始まった WannaCry ランサムウェア攻撃は、その危険性を表す最も極端な例です。この記事で説明した手順を使用すれば、Cisco Firepower のユーザは、DejaBlue と BlueKeep から身を守ることができます。

一層の対策を講じて、明らかに必要な場合以外は RDP や SMB などのサービスが無防備にならないようにする必要があります。しかし、そうした対策を講じたとしても、パッチの適用が不要になるわけではありません。この脆弱性も、情報セキュリティの基本的な中核概念の 1 つとしてなぜパッチの適用が重要視されているのかを示す一例となっています。このような重大な脆弱性は、ある程度の時間が経つと必ず出現してきます。企業は、さまざまな方法での対応を考え、準備しておく必要があります。パッチの適用には時間がかかります。また、検出や防御の機能の適切な導入には、さまざまな困難が伴うこともあります。

 

本稿は 2019年11月4日に Talos Grouppopup_iconpopup_icon のブログに投稿された「The latest on BlueKeep and DejaBlue vulnerabilities — Using Firepower to defend against encrypted DejaBluepopup_icon」の抄訳です。

コメントを書く