OpenAEVでEDR/SIEMコレクターをセットアップする方法
重要なコンピュータシステムを維持する際、私たちは必然的にそれらを正常に稼働させ、攻撃や侵入から保護するという任務を負います。OpenAEVを使用すると、これらのシステムを危険にさらす可能性のある多数の攻撃シナリオをシミュレートできます。
しかし、単にマルウェアのシミュレーションを実行するだけでは終わりません。最も重要なのは、潜在的なリスクと露出を最新の状態で把握するために、システムが攻撃にどのように対処したかを知ることです。通常、EDRやSIEMなどのセキュリティプラットフォームは、これらの攻撃を検知および/または防御し、何が起こり、どのような措置が取られたかの詳細を含む実行可能なレポートを作成します。
OpenAEVは、コレクターと呼ばれるモジュールを使用してこれらのソリューションとインターフェースし、編成されたシミュレーション攻撃に関連するレポートを収集し、それらをデータベースに統合するように設計されています。これにより、評価されたシステムの保護レベルを明確にするエンドツーエンドの攻撃からレポートまでのシナリオを実施することが容易になります。
OpenAEVは、セキュリティプラットフォームからの攻撃応答を2つの範囲で提示します:
- 検知:疑わしい動作が確認され、追跡された
- 防御:悪意のある動作の実行が防止された
この記事では、OpenAEVがシミュレーション攻撃と外部セキュリティプラットフォームからのレポートの間の接続を確立し、攻撃シナリオの結果を最も包括的に把握できるようにするために必要なコンポーネントをセットアップする方法についてガイダンスを提供します。
要点
- 制御された条件下でコンピュータシステムのリスクと露出を理解する
- EDRとSIEMを活用して、攻撃シナリオの結果レポートを補完する
- OpenAEVコレクターをセットアップして関連するアラートとレポートを監視し、攻撃結果データを統合する方法を学ぶ
- Filigranが保守する公式OpenAEVコレクターエコシステムを発見する - 業界をリードするセキュリティプラットフォームとすでにインターフェースできる既製コンポーネント
用語集
これらの用語と概念は、この記事を十分に活用するために重要です。読み進めながらこれらの言葉の定義を理解するために参照してください。
- コレクター:セキュリティプラットフォームとOpenAEVの両方とインターフェースする、サーバー上で実行される自律プロセス
- 検知:インジェクトの実行結果で、実行がセキュリティプラットフォームをトリガーし、ログに記録されたもの
- 期待値:インジェクト実行の結果を提示するためのプレースホルダー
- インジェクト:セキュリティプラットフォームによって検知または防御される可能性のある、アトミックな攻撃コマンド
- 防御:インジェクトの実行結果で、実行がセキュリティプラットフォームをトリガーし、中断またはタスクの完了が阻止されたもの
- シナリオ:実行順序を定義するインジェクトのコレクション
- セキュリティプラットフォーム:特定のインジェクトの実行結果(検知および/または防御)の痕跡を保持する可能性のあるソリューション(EDR、SIEMなど)をグループ化するための包括的用語
ケーススタディ:ローカル認証情報の窃取に対する保護評価
私たちのシンプルなシナリオは、一般的なLinuxディストリビューションのローカルユーザーデータベース/etc/passwdの窃取を、デプロイされたセキュリティプラットフォームが正常に検知・防御できるかどうかを判断するものです。今のところ、単一のインジェクトを持つシナリオを考えます:

単一の「認証情報窃取」インジェクトを含むシナリオ
シナリオを起動すると、インジェクトがスケジュールされ、実行されます。その後、OpenAEVはコレクター経由で自動的に(この記事の対象)、または手動で適用された(十分な権限を持つオペレーターが期待値の結果を上書きできる)期待値の結果が届くのを待ちます。
UIでこの待機状態を確認できます。右側のパネルに期待値が結果を受け取る準備ができています:

「認証情報窃取」インジェクトの実行待ち
これらの期待値がインジェクトの実行が検知および/または防御されたかどうかを示す結果で埋められるのを見たいと思います。そうすれば、評価対象のターゲットがこの特定の攻撃パターンから保護されているかどうかがわかります。
舞台が整いました。それでは、空白を埋めるコレクターを探ってみましょう。
コレクターデプロイメントの概要
一般的なアーキテクチャ
一般的なOpenAEVアーキテクチャを参照すると、この調査の範囲が強調表示されています:

OpenAEVアーキテクチャ:コレクター領域を強調表示
コレクターが図の独立したボックスを占めていることがわかります。実際、コレクターは独立したプロセスとして意図されており、それぞれのAPIを介してセキュリティプラットフォームとOpenAEVの両方に接続します。OpenAEVはREST APIを使用します。
自律エージェントとして、コレクターは、取得した結果をOpenAEVデータベースにアップロードできるようにするために、OpenAEVに登録する必要があります。現在登録されているコレクターのリストは、任意のOpenAEVインスタンスの次のアドレスで見つけることができます:/admin/assets/security_platforms。
コレクターはOpenAEVの「セキュリティプラットフォーム」リストに登録されることに注意してください。これらは実際に、結果をOpenAEVにフィードバックするために接続する実際のプラットフォームの表現です。したがって、「Crowdstrike」コレクターは、OpenAEVでは「Crowdstrike」セキュリティプラットフォームとして表示されます。このコレクターによってフィードバックされた結果には「Crowdstrike」のスタンプが押されるため、特定のプラットフォームがどの結果に貢献したかが一目でわかります。
コレクターアクションのライフサイクル
コレクターは本質的に、シンプルな取得-処理-保存データパターンをループするプロセスです。
OpenAEVは任意の時刻にインジェクトを実行するようにスケジュールできるため、コレクターは常にセキュリティプラットフォームのデータセット内に表示される関連結果を監視します。
コレクターがセキュリティプラットフォームからの検知または防御をインジェクトの期待値と照合できるたびに、結果と一致する新しい結果が保存されます。
しばらくすると、インジェクトは以前のセットアップ時の画面の状態と比較して、次の情報を提示する可能性があります:

「認証情報窃取」インジェクトが正常に実行され、検知と防御の期待値が成功
両方の期待値は、Crowdstrike Falconコレクターが関連するセキュリティプラットフォーム(実際の Crowdstrike Falconプラットフォーム)内でインジェクトと一致する結果を見つけ、これらの結果が実行が検知と防御の両方されたことを示していると報告しました。素晴らしい!OpenAEVエコシステムを通じて、エンドポイントがCrowdstrike Falcon EDRによってローカル認証情報の盗難から適切に保護されていることを明らかにすることができました。
チュートリアル:実践におけるコレクター
コレクターが結果を前面に持ってくることにどれほど有用かを実証しました。OpenAEVエコシステムは、Filigranが保守するコレクターを提供し、業界をリードするセキュリティプラットフォームの増加する数と接続できるようにしており、今後さらに追加されます。いくつかの実際のデプロイメントシナリオを見てみましょう。
Filigranによる既製コレクター
Filigranが保守する公式サポートのファーストパーティコレクターの中には、Crowdstrike Falcon EDRとMicrosoft Sentinel SIEM用のPython実装があります。最新の完全なリストについては、OpenAEVエコシステムドキュメントを参照してください。
これらのコレクターをデプロイする最も簡単な方法は、それぞれの公式Dockerイメージを実行することです。OpenAEVがすでにDockerでデプロイされている場合、コレクターコンテナをDockerスタックに追加し、コレクターがOpenAEVに登録してセキュリティプラットフォームに接続するために必要ないくつかの設定キーを設定するだけで済みます。
コレクターイメージは、OpenAEVサーバーイメージと一緒に定期的に公開され、Docker Hubで見つけることができます:https://hub.docker.com/u/openaev。
それぞれのコレクタードキュメント、特に設定は、ここで見つけることができます。例:
- Crowdstrike Falcon EDRコレクター:https://github.com/OpenAEV-Platform/collectors/tree/main/crowdstrike
- Microsoft Sentinel SIEMコレクター:https://github.com/OpenAEV-Platform/collectors/tree/main/microsoft-sentinel
例:Dockerを使用してCrowdstrike Falcon EDRコレクターをデプロイする
念のため、コレクターは通常独立したプロセスであり、これはすべてのFiligran保守のコレクターに当てはまります。つまり、特定のコレクターは、REST APIエンドポイントに到達できる限り、OpenAEVインスタンス自体が実行される場所とは無関係にどこでも実行される可能性があります。
これを念頭に置いて、コレクターコンテナのみを実行する独立したDockerスタックを作成できます(参照設定キーについては、https://github.com/OpenAEV-Platform/collectors/tree/main/crowdstrike#configurationを参照してください):
Copied!
1services:2 crowdstrike_edr_collector:3 image: openaev/collector-crowdstrike:1.19.04 environment:5 - OPENAEV_URL=${OPENAEV_URL}6 - OPENAEV_TOKEN=${OPENAEV_TOKEN}7 - COLLECTOR_ID=${COLLECTOR_ID}8 - CROWDSTRIKE_API_BASE_URL=${CROWDSTRIKE_API_BASE_URL}9 - CROWDSTRIKE_CLIENT_ID=${CROWDSTRIKE_CLIENT_ID}10 - CROWDSTRIKE_CLIENT_SECRET=${CROWDSTRIKE_CLIENT_SECRET}
docker-compose.yml
このコレクターは永続ストレージを必要としないため、dockerボリュームをセットアップする必要はありません。
次に、ターゲット環境で設定された新しいコンテナを起動するために必要な情報を収集します。
OPENAEV_URL:コンテナから見えるOpenAEVインスタンスへのHTTP URLOPENAEV_TOKEN:管理者アカウントからの特権(管理者)APIトークン。OpenAEVの管理者アカウントのプロフィールページに移動し、下にスクロールしてAPIキーセクションを見つけることで見つけられます

アカウントのプロフィールページにアクセスするためのボタン

APIキーの例(注:この特定のキーはこの例の目的のみのものです)
COLLECTOR_ID:ランダムに生成されたグローバルに一意な文字列。UUIDv4がこの目的に最適です。CROWDSTRIKE_*:これらのキーは、CrowdStrike Falconへのサブスクリプション内のアクティブなOAuth2認証情報ペアに関連しています。コレクター専用の認証情報を作成することをお勧めします。OAuth2認証情報は、サポートとリソース → APIクライアントとキーの下のCrowdStrike Falcon Web UIで作成されます。
CrowdStrikeコレクターには、ドキュメントに記載されているようにアラート:読み取りと書き込みの権限が必要であることに注意してください。

認証情報作成パネル:特別に選択された権限は「アラート:読み取りと書き込み」のみです。

CrowdStrikeで作成された認証情報の例(注:これらの認証情報はこの例の目的のみのものです)
正しい
.envファイルは次のようになります:
Copied!
1# The publicly facing root URL for the OpenAEV instance2OPENAEV_URL=https://openaev.corporate.example3# An admin-level API token; it can be found under API access at /admin/profile4OPENAEV_TOKEN=aa37558b-a934-4c5c-ab17-cb3940c4403b5# A globally unique string: OpenAEV handles UUIDv4 well for this6COLLECTOR_ID=6fab3a73-1a3e-4791-831c-946274a154077# The URL for the Crowdstrike API. Depending on your subscription,8# it may contain a shard identifier, e.g. "us-2"9CROWDSTRIKE_API_BASE_URL=https://api.us-2.crowdstrike.com10# the following are the ID/secret pair provided with the Crowdstrike contract11CROWDSTRIKE_CLIENT_ID=2dac83cfba964c129c5365ca228e07f412CROWDSTRIKE_CLIENT_SECRET=tpx9M4U5kqDROhVdWo06wG7An182BZTvf3JibeNF
その後、スタックを起動するとコレクターが動作を開始し、結果の監視を開始します:
Copied!
1$ docker compose up2{"timestamp": "2025-06-30T19:00:29.900566Z", "level": "WARNING", "name": "CrowdStrike Endpoint Security", "message": "DEPRECATED: this collector should be migrated to use <class 'pyobas.daemons.collector_daemon.CollectorDaemon'>."}3{"timestamp": "2025-06-30T19:00:30.947613Z", "level": "INFO", "name": "CrowdStrike Endpoint Security", "message": "Starting PingAlive thread"}4{"timestamp": "2025-06-30T19:00:31.738764Z", "level": "INFO", "name": "CrowdStrike Endpoint Security", "message": "No alerts ID found for this specific parameters :{'filter': \"timestamp:>'2025-06-30T18:15:30.947780+00:00'+type:'ldt'\"}"}5{"timestamp": "2025-06-30T19:00:31.738978Z", "level": "INFO", "name": "CrowdStrike Endpoint Security", "message": "Gathering expectations for executed injects"}6{"timestamp": "2025-06-30T19:00:31.752737Z", "level": "INFO", "name": "CrowdStrike Endpoint Security", "message": "Found 0 expectations waiting to be matched"}
カスタムコレクターの実装
目的のセキュリティプラットフォーム用のコレクターがFiligranコレクターのリストに記載されていない場合でも、新しいものを実装することは可能です。
新しいコレクターを実装するために、OpenAEV API用の公式Pythonクライアントであるpyobasを使用することをお勧めします。
コレクターを実装するための高レベルのステップは次のとおりです:
- 必要なセキュリティプラットフォーム固有の設定キーを特定する
- 新しいコレクターのスケルトンコードを作成する
- セキュリティプラットフォームからのアラートとOpenAEVの期待値を照合するためのコアロジックを実装する
OpenAEVドキュメントには、図とコード例を含む新しいコレクターの実装方法に関するセクションがあります:コレクター開発。
結論
OpenAEVでは、コレクターはセキュリティプラットフォームの結果とOpenAEV UI内でのそれらの表現の間のギャップを埋める汎用性の高いコンポーネントです。OpenAEVインスタンスは任意の数のコレクター(目的のセキュリティプラットフォームごと)をデプロイできるため、単一のOpenAEVインスタンスは、目的のセキュリティプラットフォーム用のコレクター実装が存在する以外に制約なく、多様なコンピュータシステムとそれぞれの保護状態のコレクションを監視できます。
次のステップ
コレクターは、OpenAEVの機能を拡張する優れた方法です。インジェクトの検知と防御ステータスについて説明しましたが、例えば人的対応など、他の範囲をカバーすることに障害はありません。
ご意見をお聞かせください
コレクターやOpenAEVのその他の側面について質問がありますか?Slackのコミュニティポータルにアクセスするか、選択したOpenAEVリポジトリにアクセスして質問してください。
さらに学ぶ
続きを読む
関連トピックとインサイトをご覧ください

