Elastic Stack、Wazuh、IDSで実践するセキュリティ分析
Elastic Stackのセキュリティ分析機能は、脅威検知や可視化、インシデントレスポンスまで幅広く使用されています。スピードとスケール性に優れたElasticsearchを使ってセキュリティ関連情報をインデックス・検索することで効率的にセキュリティ分析を実施でき、またKibanaダッシュボードが広範な可視化とインタラクティブな脅威ハンティングをサポートします。機械学習エンジンは複雑なデータセットの分析を自動化することができ、他の方法では発見することが難しい侵入活動を検知します。
WazuhやSuricataなど、現在人気の侵入検知システムは、シグネチャーベースの脅威検知アプローチを採用しています。こうしたシステムではファイルやログ、ネットワークトラフィックのパターンをデータベースのパターンと比較し、悪意のあるアクティビティとの関連が知られているものと一致する場合にアラートを発します。データを分析/関連付けするための便利なルールセットをシステム側で提供し、運用環境では1日に数千、あるいは数百万ものアラートを生成します。
広大な網を投げれば、すべての潜在的なセキュリティイベントを捕捉することができます。しかし同時に、毎日数千(あるいは数百万)ものアラートを選別する作業も発生します。Elasticの機械学習オプションを使えば自動で異常な振る舞いを特定でき、ノイズを減らすことができます。つまり、異常ベースのテクノロジーとシグネチャーベースのテクノロジーを相互に補わせ、脅威検知をよりスムーズに、調査をより効率的にするユースケースとして活用することができます。
Elastic Stackと併用してデプロイされることの多いWazuhは、オープンソースのHIDS(ホストベース侵入検知システム)です。Wazuhはログ分析、ファイルの整合性監視、ルートキット、脆弱性検知、設定アセスメント、インシデントレスポンス機能を備えています。Wazuhのソリューションアーキテクチャーは、監視システム上で実行できるマルチプラットフォームの軽量エージェントをベースにしており、データ分析を実施する中央サーバーにレポーティングします。また包括的なKibanaプラグインも提供されており、設定管理やステータス監視、クエリ、アラートデータ可視化に使うことができます。
もう1つ、Suricataは無料かつオープンソースのネットワーク脅威検出エンジンで、リアルタイムなネットワーク侵入検知(NIDS)や、インライン侵入防止(NIPS)、ネットワークセキュリティ監視(NSM)、オフラインpcap処理機能を提供します。Suricataはルールとシグネチャー言語を使用してネットワークトラフィックを点検し、既知の脅威やポリシー違反、悪意のある挙動とマッチを行うほか、複雑な脅威検出のためのスクリプト記述をサポートします。
本ブログ記事ではWazuhやSuricataの統合機能に、調査の優先順位付けを支援するElasticの機械学習ジョブを組み合わせ、侵入を検知する方法をお伝えします。
WazuhとSuricataにElastic Stackを統合する
このブログ記事を作成するにあたり、執筆チームにて実証用のラボ環境をセットアップしました。インターネットに接続された複数のサーバーにWazuhエージェントをデプロイし、システムやアプリケーションのログデータ、フェイル整合性、システムコールを監視させます。
これに加えてSuricataセンサーを実行し、ネットワークトラフィックを監視させます。このセンサーはネットワークタップやミラーリングポート、あるいはSPAN(スイッチトポートアナライザー)ポートを経由してトラフィックを監視する設定でよく使用されますが、直接サーバーにデプロイすることもできます。
2つのツールを最大活用するため、私たちはWazuhのルールを使ってSuricataのアラートを分析し、アラートのフォーマットを統一してから相関付け(たとえば、脅威インテリジェンスソースなど)を行って自動レスポンスをトリガーさせることにしました。
この統合は、WazuhエージェントにSuricataのJSON出力を読み込ませることで実現できました。WazuhエージェントはSuricataのNIDSアラートをWazuhサーバーに転送するコレクターとして振る舞い、アラートはサーバーでWazuhのログ分析ルールによって処理されます。これで新規の、エンリッチされたセキュリティイベントとなります。
この作業過程でNIDSとHIDSの双方のアラートはFilebeat(Wazuhを読み込むよう設定したもの)とLogstash(地理的位置情報によるエンリッチに使用)を経由してElasticsearchに送られ、そこで機械学習ジョブが異常や、普通ではない振る舞いを検知します。
下の図は、ホストベースとネットワークベースのIDSテクノロジーにElastic Stackを統合したデプロイの例です。
機械学習ジョブを使用して異常な行動者を検知する
今回のラボ環境ですべてのルールを有効化したところ、インターネットに接続したWebサーバーの1台で、Wazuhエージェントが1日あたり4,000 - 10,000程のIDSアラートを報告しました。その多くはWeb攻撃、認証失敗や設定の問題(ハードニングチェックを用いて検出)、ファイル整合性の変更、脆弱なソフトウェアに関連したものでした。
セキュリティ分析を行いやすくするため、Wazuh IDSアラートをレベル値またはグループなどのメタデータでエンリッチし、優先度や種類で絞り込みできるようにしました。さらにWazuhのKibanaプラグインで、エージェントのステータスや設定、アラートに関して便利な情報を表示する事前構成済みダッシュボードを作成できます。下のスクリーンショットが、そのダッシュボードです。
Wazuhが提供する情報は便利ですが、異常な振る舞いについて詳しく知ることはできません。ここで役に立つのがElasticの機械学習ジョブです。
Elasticの機械学習では数種類の“ジョブ”を作成することができ、 この“ジョブ”が機械学習分析の基本的な要素となっています。今回は“ポピュレーション分析”として知られるジョブを作成することにしました。すなわち、機械学習エンジンに時間経過によるIPアドレスの典型的な振る舞いのベースラインモデルを構築させることで、他のデータ値と比較して異常に振る舞うものを特定します。
特に今回のケースでは、他のすべてのIPアドレスと比較した場合に、異常に多くの種類のアラートを発生させるIPアドレスを探すことにしました。この検出は、アグリゲーションテーブルを作成するだけでは実現できません。というのも異常はセキュリティ分析者が知りえない特定の時間に発生するものであり、一方でアラートデータは60日分もある(しかも一部の攻撃は2分間未満という短さである)からです。
ポピュレーション分析の結果、私たちはいくつかの異常な振る舞いを見つけることができました(ソースIPアドレスのリストという形で)。そして、さらに調査することにしました。悪意をもった攻撃の可能性のある振る舞いがいつ私たちの環境を攻撃したか把握するため、“Anomaly Explorer”を使いました。
侵入の形跡を調査する
セキュリティ分析の一例として、機械学習ジョブが特定したIPアドレスのうちの1つを調査した結果をご紹介しましょう。この特定のIPアドレスは1分未満のあいだに複数のNIDSおよびHIDSアラートを発生させ、Wazuhの自動アクションがWebサーバーにあるローカルのファイアウォールでブロックしました。
上のスクリーンショットが示すように、SuricataのNIDSは示されたソースIPアドレスから悪意あるトラフィックを検出しています。流入トラフィックで4つのルールに一致し、以下のアラートを生成しました。
- ET DROP Dshield Block Listed Source group 1
- ET CINS Active Threat Intelligence Poor Reputation IP group 77
- SURICATA HTTP URI terminated by non-compliant character
- SURICATA HTTP METHOD terminated by non-compliant character
最初の2つのルールはEmerging Threats(発生しつつある脅威)ルールセットの一部で、DshieldとActive Threat IntelligenceというTI(Threat Intelligence/脅威インテリジェンス)ソースに基づき、このソースIPアドレスに既知の悪い評判があることを示します。
さらにあと2つのシグネチャーは、同じソースIPアドレスから来る異常なHTTPアクティビティを検出しています。多くは攻撃者が潜在的な脆弱性の情報を収集するためのスキャニング段階の一部のようです。
このWazuh HIDSコンポーネントは、Webサーバーのアクセスログの分析基づく複数のアラートもトリガーしています。このアプローチはネットワークパケット検査とは大きく異なり、最終的に次のアラートを発生させました。
- IP address found in AlienVault reputation database
- Host Blocked by firewall-drop.sh Active Response
- Host Unblocked by firewall-drop.sh Active Response
最初のアラートは、このソースIPアドレスが別のTI(脅威インテリジェンス)のAlienVault OTXでも既知であることを示しています。
次の2つのアラートは先行して上がったアラート群を理由にWazuh Active Responseモジュールがトリガーしており、きっかり60秒間で(時間は設定可能)自動的にファイアウォールルールを加えて、この特定のソースIPアドレスからのトラフィックをブロックしています。このアクションは、スキャン活動をブロックし、悪意のある行動者の侵入を止めさせる十分な効果がありました。
まとめ
WazuhとSuricata、そしてElasticの機械学習といったテクノロジーを使えば、シグネチャーベースと異常ベースの侵入検知を併用した脅威検出を手軽に、効率的に実施することができます。
またホストベースのIDS(ホストレベルのシステム監視用)をネットワークベースのIDS(ネットワークトラフィック検査用)に統合すれば、脅威検知とセキュリティ可視化をさらに高度に実施することができます。これはElastic StackにホストとネットワークのIDSシステムを統合できるWazuhを使うことで簡単に実行でき、自動化レスポンスと攻撃のリアルタイムなブロックのメカニズムも提供されます。