Categories: セキュリティ

Cisco Secure Analytics を使用して Apache Log4j に対応する方法

この記事は、Security Business Group の Principal Engineer である Matthew Robertson によるブログ「How to Respond to Apache Log4j using Cisco Secure Analytics」(2021/12/17)の抄訳です。

Apache Log4j の脆弱性(CVE-2021-44228)の影響について、現段階では、世界中の IT やセキュリティの専門家による特定作業や対策が続いています。以下のガイドは、Secure Network Analytics と Secure Cloud Analytics をご利用中のお客様を対象としており、各製品を活用して脆弱性を検知し、対応するための推奨方法をご覧いただけます。シスコの対応の詳細、専門家の意見、他の Cisco Secure 製品の使用方法については、Apache Log4j に関する Cisco Secure Alert の該当ページをご覧ください。

上記製品のお客様は、Cisco Talos インテリジェンスグループが追跡・特定した IP アドレスなどを含む既知の兆候を利用して、アクセス履歴を調査できます。また特定済みの不正ホストとの今後の通信については、カスタム セキュリティ イベントとウォッチリストを作成して監視する必要があります。脆弱性がエクスプロイトされた場合、それに続くアクティビティはケースごとに大きく異なる可能性があります。そのため攻撃に関する既知の兆候が検出された場合、細心の注意が必要です。考えられるアクティビティとしては、疑わしい暗号通貨アクティビティ、ウォッチリスト対象との通信の検出、通常とは異なる場所からのアクセス、異常な水平移動やデータ蓄積などがあります。

脆弱性の説明

Apache Log4j は Java ベースのロギング フレームワーク ライブラリです。今回の脆弱性は、Apache Log4j バージョン 2.0-beta9 〜 2.14.1 までの JNDI(Java ネーミング・ディレクトリ インターフェイス)コンポーネントにおける、ログメッセージの不適切な処理に起因しています。特定のユーザー指定のログメッセージが、ログファイルに書き込まれる前に不適切に実行される可能性があります。細工された LDAP ログメッセージを認証されていないリモート攻撃者が悪用することで、昇格権限により任意コードをダウンロードして実行できる危険性があります。問題の Log4j ライブラリは広く使用されているため、実装によっては LDAP 以外にも攻撃ベクトルが生じる可能性があります。ご注意ください。

エクスプロイト

本脆弱性は 2021 年 12 月 9 日に初めて検出されました。コンセプト実証用の公開コードも複数のソースから入手できるほか、簡単に攻撃に転用可能です。

侵害の兆候を監視する

Cisco Talos は、危険なペイロードのホスト先の IP アドレスを含む一連の侵害の兆候(IOC)を以下の関連ブログで公開しています。https://blog.talosintelligence.com/2021/12/apache-log4j-rce-vulnerability.html

最新情報は Talos ブログで随時お伝えします。

Secure Analytics はいくつかの方法により、環境内でエクスプロイトの証拠を検出できます。まず Secure Network Analytics を使った方法、次に Secure Cloud Analytics を使った方法についてご説明します。

Secure Network Analytics

Secure Network Analytics の以下のスクリーンショットは、最新のソフトウェアリリースであるバージョン 7.4.0 です。新しい機能が絶えず追加されているため、旧バージョンのソフトウェアでは外観や機能が若干異なる場合があります。ただしスクリーンショットの画面が異なる場合でも、概念と手順は旧バージョンと共通です。

Secure Network Analytics により、エクスプロイトの証拠を過去にさかのぼって検索する:方法 1

Talos が提供する IP リストについては、フロー検索を少なくとも過去 7 日間分は実行することが推奨されます。最初のエクスプロイトが確認されたのは 2021 年 12 月 9 日のことですが、それ以前からエクスプロイトが起きている可能性は拭えません。過去 7 日分を超えて検索することを検討してください。

  1. Manager の Web UI で [分析(Analyze)] メニューをクリックし、[フロー検索(Flow Search)] を選択します。
  2. [時間範囲(Time Range)] で [過去7日間(Last 7 Days)] を選択します。
  3. [内部ホスト(Inside Hosts)] を [サブジェクトホストグループ(Subject host group)] として選択します。
  4. ピアホスト IP アドレスとして Talos の IP を入力します。
  5. [検索(Search)] をクリックすると、内部ホストと Talos 提供の IP アドレスとの間で通信が発生していないか検索できます。

フロー検索の条件は次のようになります。

Secure Network Analytics により、エクスプロイトの証拠を過去にさかのぼって検索する:方法 2

Talos が提供する IP リストについては、ホスト検索を実行することが推奨されます。ホスト検索では、Secure Network Analytics により問題の IP アドレスが検出されたかどうか、(検出された場合は)最初と最後に検出された日時、合計バイト数、およびフローコレクタを確認できます。

  1. Manager の Web UI で [分析(Analyze)] メニューをクリックし、[ホスト検索(Host Search)] を選択します。
  2. 「IP アドレス」フィールドに Talos 提供の IP アドレスを入力します。
  3. [検索(Search)] をクリックしてホスト検索を実行し、結果を表示します。問題がなければ、[最初の送信日時(First Sent)] 列と [最後の送信日時(Last Sent)] 列で、各 IP の横に [該当なし(Never)] と表示され、[合計バイト数(Total Bytes)] 列に [なし(None)] と表示されます。

ホスト検索の条件は次のようになります。

Secure Network Analytics により、今後の不正な通信を検出する方法

まず Talos 提供の IP を含む外部ホストグループを作成する必要があります。この外部ホストグループへのトラフィックは、カスタム セキュリティ イベント(CSE)を作成することで検索できます。問題の IP アドレスとの通信が今後発生した場合、この CSE が起動することになります。

  1. Manager の Web UI で [設定(Configure)] をクリックし、[ホストグループ管理(Host Group Management)] を選択します。
  2. [外部ホスト(Outside Hosts)] ホストグループの右側にあるその他メニュー(…)をクリックし、[ホストグループの追加(Add Host Group)] を選択します(ホストグループ構造に応じて、新しいホストグループを別の親の下にネストできます)。
  3. [ホストグループ名(Host Group Name)] フィールドに「Log4j Talos IP ウォッチリスト」などのように入力します。
  4. [IPアドレスと範囲(IP Addresses And Ranges)] フィールドに Talos 提供の IP アドレスを入力します。
  5. [保存(Save)] をクリックして、新しいホストグループを作成します。

新しいホストグループの条件は次のようになります。

  1. CSE を作成するには、[設定(Configure)] メニューをクリックし、[ポリシー管理(Policy Management)] を選択します。
  2. ページの右上で [新しいポリシーの作成(Create New Policy)] をクリックし、[カスタムセキュリティイベント(Custom Security Event)] を選択します。
  3. [名前(Name)] フィールドに「.CSE:Log4j Talos IP ウォッチリスト トラフィック」などのように入力します。
  4. [検索(Find)] フィールドの下のプラス記号(+)をクリックして、以下の条件を作成します。
    1. Subject Host Groups: Inside Hosts
    2. Peer Host Groups: Log4j Talos IP ウォッチリスト
  5. [ステータス(Status)] を [オン(On)] に切り替えます。
  6. [保存(Save)] をクリックして CSE を作成します。CSE は、内部ホストと Talos 提供の IP アドレス(ウォッチリスト ホスト グループ内)の間でトラフィックが検出されるたびに起動します。起動時に関する、CSE 内の次の記述に注意してください。内部ホスト内に記載のホストが「Log4j Talos IP ウォッチリスト」内のホストと通信すると、アラームが発生します(When any host within Inside Hosts communicates with any host within Log4j Talos IP Watchlist, an alarm is raised.)」

CSE の条件は次のようになります。

Secure Network Analytics により、Flow Sensor ペイロードデータに基づいて検出する方法

Flow Sensor をお使いの場合、フロー検索で少なくとも 7 日間さかのぼり、「ldap://」の条件でペイロードデータを検索できます。最初のエクスプロイトが確認されたのは 2021 年 12 月 9 日のことですが、それ以前からエクスプロイトが起きている可能性は拭えません。過去 7 日分を超えて検索することを検討してください。

  1. Manager の Web UI で [分析(Analyze)] メニューをクリックし、[フロー検索(Flow Search)] を選択します。
  2. [時間範囲(Time Range)] で [過去7日間(Last 7 Days)] を選択します。
  3. [内部ホスト(Inside Hosts)] を [サブジェクトホストグループ(Subject host group)] として選択します。
  4. [外部ホスト(Outside Hosts)] を [ピアホストグループ(Peer host group)] として選択します。
  5. フロー検索条件の中央下部で、[詳細接続オプション(Advanced Connection Options)] を展開します。
  6. [詳細接続オプション(Advanced Connection Options)] の [ペイロード(Payload)]フィールドに、「ldap://」と入力します。
  7. [検索(Search)] をクリックすると、一致するペイロードを検索できます。環境の実装によっては、問題のない LDAP クエリが含まれる場合もあります。ドメインコントローラまたは LDAP サーバ以外のサーバーに対して異常な要求が発生していないか確認します。最新のフロー検索機能では、必要に応じてこれらのホストを除外できます。または、[サブジェクト(Subject)] と [ピア(Peer)] の両方のホストグループを [内部ホスト(Inside Hosts)] に設定して、内部エクスプロイトを検索することもできます。

フロー検索の条件は次のようになります。

Secure Network Analytics により、異常に大きな LDAP クエリを検索する方法

影響を受けるサーバーと外部ホストとの間で異常に大きな LDAP クエリが発生していないか、少なくとも 7 日間さかのぼってフロー検索を実行することが推奨されます。最初のエクスプロイトが確認されたのは 2021 年 12 月 9 日のことですが、それ以前からエクスプロイトが起きている可能性は拭えません。問題の脆弱性はライブラリ内に存在するため、攻撃ベクトルは実装によって大きく異なる可能性があります。フロー検索では条件を調整することで、ポート、プロトコル、およびアプリケーションを実装に一致させる必要があります。また、既知の侵害されたサーバーについて [内部ホスト(Inside Hosts)] のホストグループを作成し、そのホストグループに絞り込むこともできます。

  1. Manager の Web UI で [分析(Analyze)] メニューをクリックし、[フロー検索(Flow Search)] を選択します。
  2. [時間範囲(Time Range)] で [過去7日間(Last 7 Days)] を選択します。
  3. [内部ホスト(Inside Hosts)] を [サブジェクトホストグループ(Subject host group)] として選択します。
  4. [外部ホスト(Outside Hosts)] を [ピアホストグループ(Peer host group)] として選択します。
  5. 中央の [接続(Connections)] ボックスで、[アプリケーション(Applications)] の下の [選択(Select)] をクリックします。アプリケーションセレクタがページの左側に表示されます。
  6. デフォルトの [含める(Include)] タブでは、次のアプリケーションを検索するか、下にスクロールして選択します。
    1. LDAP
    2. LDAP (unclassified)
    3. LDAPS
    4. LDAPS (unclassified)

[アプリケーションセレクタ(Applications Selector)] では、選択内容が次のように表示されます。

  1. [アプリケーションセレクタ(Applications Selector)] の右下隅にある [適用(Apply)] をクリックして、フロー検索に戻ります。
  2. フロー検索条件の左下で、[詳細なサブジェクトオプション(Advanced Subject Options)] を展開します。
  3. [詳細なサブジェクトオプション(Advanced Subject Options)] の [サブジェクトバイト(Subject Bytes)] フィールドに次のように入力します。
  4. [詳細なサブジェクトオプション(Advanced Subject Options)] の下部にある [オリエンテーション(Orientation)] で、[クライアント(Client)] のラジオボタンにチェックを入れます。
  5. [検索(Search)] をクリックすると、異常に大きな LDAP クエリ(侵害されたサーバーからの、不正ペイロードのダウンロード)が検出された場合は表示されます。環境によっては、特定のホストに対する、大規模で問題のない LDAP クエリが見つかる場合もあります。最新のフロー検索機能では、必要に応じてこれらのホストを除外できます。または、[サブジェクト(Subject)] と [ピア(Peer)] の両方のホストグループを [内部ホスト(Inside Hosts)] に設定して、内部エクスプロイトを検索することもできます。

フロー検索の条件は次のようになります。

Secure Network Analytics により、今後の異常に大きな LDAP クエリを検出する方法

カスタム セキュリティ イベント(CSE)を作成することで、異常に大きな LDAP クエリが発生した場合に、それを自動的に検出できます。問題の脆弱性はライブラリ内に存在するため、攻撃ベクトルは実装によって大きく異なる可能性があります。フロー検索では条件を調整することで、ポート、プロトコル、およびアプリケーションを実装に一致させる必要があります。検索条件は、以前のフロー検索で使用・修正されたものをベースとして使い、CSE に一致させる必要があります。たとえば大量のノイズを回避するため、定期的に大規模で問題のない LDAP クエリを実行するサーバーは除外します。また、既知の侵害されたサーバーについて [内部ホスト(Inside Hosts)] のホストグループを作成し、そのホストグループに絞り込むこともできます。

  1. Manager の Web UI で [設定(Configure)] > [ポリシー管理(Policy Management)] を選択します。
  2. ページの右上で [新しいポリシーの作成(Create New Policy)] をクリックし、[カスタムセキュリティイベント(Custom Security Event)] を選択します。
  3. [名前(Name)] フィールドに「.CSE: Log4j 異常に大きな LDAP クエリ」などのように入力します。
  4. [検索(Find)] フィールドの下のプラス記号(+)をクリックして、以下の条件を作成します。
    1. Subject Host Groups: Inside Hosts
    2. Peer Host Groups: Outside Hosts
    3. Subject Applications to Include: LDAP, LDAP (unclassified), LDAPS, LDAPS (unclassified)
    4. Subject Bytes: >100
    5. Subject Orientation: Client
  5. [ステータス(Status)] を [オン(On)] に切り替えます。
  6. [保存(Save)] をクリックして CSE を作成します。CSE は、侵害されたサーバーから不正ペイロードをダウンロードするために、異常に大きな LDAP 要求が送信されたときに起動します。起動時に関する、CSE 内の記述に注意してください。「内部ホストに指定のホストがクライアントとして動作している場合 & 許可されていないアプリケーションを使用している場合 & 外部ホストに指定のホストと通信するペイロードの合計が 100 バイトを超える場合、アラームが発生します(When any host within Inside Hosts, acting as a client; using any disallowed application; with a total payload of >100 bytes communicates with any host within Outside Hosts, an alarm is raised.)」

CSE の条件は次のようになります。

グローバル脅威アラート

グローバル脅威アラートを使用した Log4j エクスプロイトのスキャンとマルウェアインストールの検出

グローバル脅威アラート(GTA、旧称 Cognitive Intelligence)を使用している Secure Network Analytics のお客様は、2 種類の新しい Log4j アラートを利用できます。いずれのアラートでも、グローバル脅威アラート機能を有効にする必要があります。この機能は Secure Network Analytics に含まれており、追加料金なしでご利用いただけます。グローバル脅威アラートの統合手順については、https://www.cisco.com/c/dam/en/us/td/docs/security/stealthwatch/cta/configuration/7_4_Global_Threat_Alerts_Configuration_Guide_DV_1_0.pdf [英語] を参照してください。

以下のいずれかのリンクをクリックすると GTA コンソールが表示されます。コンソールでは、検出が実行されたかどうか、および Log4J エクスプロイトがネットワーク内で検出されたかどうかを一目で確認できます。

Log4Shell 脆弱性スキャン:アウトバウンドスキャンが実行された場合のアラートです。脆弱性スキャンや侵入テストが実施されたか、またはエクスプロイトされたデバイスが新たな攻撃対象(脆弱なホスト)を探している可能性があります。アラートは https://cognitive.cisco.com/ui/threats/3e494958-8fad-4aea-b540-2d6002886bf6 から直接ご確認いただけます。

Log4Shell エクスプロイトによるマルウェアのインストール:Log4j のエクスプロイトが成功したことを示す発信応答をモニタします。アラートは https://cognitive.cisco.com/ui/threats/69ad2359-dc2b-415a-9a0e-d57b4b7aae79 から直接ご確認いただけます。

Cisco Secure Cloud Analytics

Secure Cloud Analytics により、エクスプロイトの証拠を過去にさかのぼって検索する方法

Talos が提供する IP リストについては、Event Viewer で少なくとも過去 7 日間分は実行することが推奨されます。最初のエクスプロイトが確認されたのは 2021 年 12 月 9 日のことですが、それ以前からエクスプロイトが起きている可能性は拭えません。過去 7 日分を超えて検索することを検討してください。

  1. Secure Cloud Analytics のポータルにて [調査(Investigate)] メニューをクリックし、[イベントビューア(Event Viewer)] を選択します。
  2. 画面右上のトグルをインラインに設定して、イベントビューアがインラインモードであることを確認します。
  3. [開始日(Start Date)] を 1 週間前に変更します。
  4. [Connected_IP] フィールドで、青色のアイコンをクリックしてフィルタ条件を表示します。3 番目のオプションとなる [リスト内(In list)] を選択します。
  5. [Connected_IP] フィールドに Talos 提供の IP アドレスを貼り付け、フィールド以外の場所をクリックしてリストを確定させます。クエリの実行がすぐに開始されます。

イベントビューアの条件は次のようになります。

Cisco Secure Cloud Analytics により、今後の不正な通信を検出する方法

Talos が提供する IP アドレスは、脅威インテリジェンスフィードで定期的に更新されています。アラートが有効になっていることを確認します。

  1. Secure Cloud Analytics ポータルで [設定(Settings)] をクリックし、[アラート(Alerts)] を選択します。
  2. [アラートの優先順位(Alert Priorities)] ページの [アラートタイプ(Alert Type)] フィールドで「Talos」を検索します。
  3. 検索結果の「Talos Intelligence Watchlist Hit」について優先度を [高(High)] に設定し、アラートが [有効(Enabled)] であることを確認します。

アラートリストは次のようになります。

  1. すべてのアラートタイプと優先順位を確認したうえで、検出機能をすべて有効にして利用することをお勧めします。エクスプロイト後のアクティビティはケースごとに大きく異なる可能性があるため、アラートの優先度と感度を高めて、幅広い戦術や手法を検出できるようにしておくことが強く推奨されます。検索フィールドから「Talos」のキーワードを削除し、検出機能の一覧に戻って全体を確認します。

使用可能な検出機能のリストは次のようになります。

「ウォッチリスト記載IPの監視結果(Watchlist Observations)」を確認し、Talos が提供する IP アドレスへのトラフィックが Secure Cloud Analytics により監視されていることを確認する方法

上記の「Talos Intelligence Watchlist Hit」アラートは、該当の IP アドレスとの間で大量のトラフィックが発生した場合にのみトリガーされます。Talos 提供の IP アドレスとのトラフィックについては、「ウォッチリスト記載 IP との通信(Watchlist Interaction)」で確認することをお勧めします。

  1. Secure Cloud Analytics ポータルで [モニタリング(Monitor)] をクリックし、[監視(Observations)] を選択します。
  2. 左側のパネルから [選択された監視(Selected Observation)] を選択します。
  3. [監視タイプ(Observation Type)] フィールドから [ウォッチリスト記載IPとの通信(Watchlist Interaction)] を選択します。
  4. 時間範囲を設定して、問題の IP アドレスが最初に Talos ウォッチリストに追加された 12 月 10 日を開始日にします。

監視リストは次のようになります。

  1. 内部デバイスを調査するには、デバイス ID の横にある下向き矢印をクリックして、[デバイス(Device)] > [デバイスに関連付けられているアラート(Alerts associated with the device)] > [デバイスに関連付けられている監視(Observations associated with the device)] の順に開きます。
  2. 外部 IP を調べるには、IP アドレスの横にある下向き矢印をクリックし、各種のインテリジェンス リソースに移動します。

Security Analytics を使用して疑わしい Log4j 関連アクティビティを検出し、Secure Cloud Analytics でロギングする方法

Security Analytics and Logging(SAL)を統合した Secure Cloud Analytics のお客様は、[確認済み脅威インジケータの一致 – ホスト名(Confirmed Threat Indicator Match – Hostname)] 監視結果にて、疑わしい Log4j 関連アクティビティを確認できます。この機能では、ファイアウォールログデータを SAL に送信する必要があります。

これらの監視結果を確認するには、次の手順を実行します。

  1. https://<tenant-id>.obsrvbl.com/v2/#/observations/selected/type/cts_indicator_match_hostname_v1 を開きます。
  2. [確認済み脅威インジケータの一致 – ホスト名(Confirmed Threat Indicator Match – Hostname)] 監視結果の一覧が表示されます。
  3. 検索フィールドで「log4j」と入力して検索し、[適用(Apply)] をクリックします。2021 年 11 月 15 日(脅威が最初に確認された 15 日前)から、疑わしい Log4j 関連アクティビティが確認された場合は、監視結果に表示されると考えられます。

影響

本脆弱性の影響を受ける製品では、侵害されたサーバー上から攻撃者がペイロードを読み込むことで、任意コードを実行される危険性があります。エクスプロイトが成功した場合でも、Secure Network Analytics と Secure Cloud Analytics は、異常または悪意のあるアクティビティがないか、引き続きネットワークを監視します。両製品より、攻撃者の操作を可視化できます。そのため、影響を受けたサーバーからの疑わしいトラフィックが増えていないか、常に注意してください。たとえば Cisco Talos では、攻撃者がこの脆弱性を悪用してクリプトマイナーを展開しているのをすでに確認しています。

CVSS スコアリング

ソリューション

更新版の Log4j と、本脆弱性に対処する回避策が Apache から公開されています。影響を受ける Log4j のユーザーは、バージョン 2.16.0 にアップグレードするか、Apache のアドバイザリ(https://logging.apache.org/log4j/2.x/security.html)に記載されている対策を実施すべきです。

Apache Log4j バージョン 2.15.0 では、CVE-2021-44228 の修正が不完全であることが判明しています。それを受けてバージョン 2.16.0 がリリースされました(詳細は CVE-2021-45046 を参照)。

参考資料

ぜひお客様のご意見をお聞かせください。以下から質問やコメントを投稿し、ソーシャルネットワークで Cisco Secure の最新情報を入手してください。

Cisco Secure ソーシャルメディア

Instagram
Facebook
Twitter
LinkedIn

Share
遠藤 直之

静岡県出身。某IT外資系企業を数社経験し、ほぼ一貫してネットワーク、セキュリティ関連のビジネスに携わり、営業やBDM(Business Development Manager)、マーケティング等を歴任。現在はセキュリティ事業にてStealthwatch製品BDMを担当。最近のテーマは筋肥大。週5回のジム通いを継続中。