セキュリティチームの97%は、自組織のエクスポージャーが実際に悪用可能かどうかを判断できていません。あなたのチームは大丈夫ですか?レポートを読む
Filigran
侵害・攻撃シミュレーションソフトウェア開発

OpenAEVインストール完全ガイド:徹底解説

10 分で読めます
OpenAEV installation demystified: your ultimate guide

OpenAEV(Open Adversarial Exposure Validation)は、実際のサイバー攻撃をシミュレートすることで、組織のセキュリティポスチャーを評価・強化するように設計された強力なプラットフォームです。モジュラーアーキテクチャを基盤として構築されたOpenAEVは、さまざまなコンポーネントと依存関係をシームレスに統合し、柔軟性とスケーラビリティを提供します。

OpenAEVはeXtended Threat Management(XTM)スイートの一部であり、OpenCTIとの組み込み統合を活用して、高品質なサイバー脅威インテリジェンス(CTI)を使用し、Adversarial Exposure Validationプログラムを強化できます。この統合により、組織は攻撃シミュレーションに脅威インテリジェンスを活用でき、セキュリティテストをより動的かつ実際の脅威に即したものにできます。

この記事は、OpenAEVのインストールを検討している方を対象としています。最低限の技術知識が推奨されます:

  • Docker:コンテナ化を使用した迅速なデプロイメント
  • Java/Spring:手動インストールとOpenAEVの内部コンポーネントのより深い理解

この記事はOpenAEV 1.12.2リリースに基づいています。依存関係のバージョンおよび環境変数/アプリケーションプロパティは、デプロイする予定のバージョンによって異なる場合があります。

OpenAEV技術アーキテクチャ

obas architecture

OpenAEVアーキテクチャ

OpenAEVプラットフォームは、以下の主要コンポーネントで構成されています:

コアプラットフォーム

OpenAEVの中核部分で、ビジネスロジック、Java/SpringベースのAPI、Reactベースのユーザーインターフェースを備えています。また、組み込みのインジェクターとサードパーティエージェントとの統合も含まれています。

OpenAEV Agent & Implant

Rustで開発されたこれらのコンポーネントは、ターゲットアセット上で技術的インジェクターを実行します:

  • Agent:OpenAEVプラットフォームにアセットを登録し、実行するジョブを取得します。Agentはアンチウイルスに対して中立を保ち、攻撃シナリオの継続性を確保するため、直接的な攻撃は実行しません。
  • Implant:Agentから受け取ったジョブを実行します。Implantは直接的な攻撃を実行するため、アンチウイルスソフトウェアに検出され、終了される可能性があります。

インジェクター

攻撃シナリオ、シミュレーション、アトミックテストをカスタマイズするためにさまざまなタイプのインジェクトを追加し、プラットフォームの機能を拡張する外部モジュールです。これらのインジェクターは独立して機能するか、サードパーティサービスと連携できます。

既存のインジェクターをクローンすることで、独自のインジェクターを作成できます。Filigranチームは、開発を加速するためのPythonライブラリを保守しています。

コレクター

さまざまな外部サービスから2つの目的でデータを取得するPythonモジュールです:

  • SIEM、EDR、XDRなどのセキュリティシステムと統合して、技術的インジェクトが検出または防止されたかを検証し、組織のセキュリティポスチャーに関する重要な洞察を提供します。
  • アセット、グループ、ID、ペイロードなどのリストなど、侵害および攻撃シミュレーションのスケジュール設定に役立つデータを収集します。

依存関係

OpenAEVは、いくつかの外部コンポーネントに依存しています:

  • PostgreSQL(17):コアプラットフォームデータを保存するための主要データベースとして機能します。
  • RabbitMQ(4):PythonインジェクターとOpenAEV間のメッセージングを管理し、非同期通信を可能にします。
  • MinIO(>= RELEASE.2024):画像管理を含むオブジェクトストレージを処理します。
  • Elasticsearch(8.x):プラットフォームデータのインデックス化と取得をサポートし、Kibanaと併用して可観測性を強化できます。

デプロイメント & 設定ガイド

Dockerを使用したOpenAEVのデプロイ

前提条件

OpenAEVをインストールする前に、Docker Composeがシステムにインストールされていることを確認してください。インストール方法は次のとおりです:

Linux向け

  1. 公式ドキュメントに基づいてDockerのリポジトリをセットアップします:

Ubuntu 24.04の例

Copied!

1 sudo apt-get update
2 sudo apt-get install docker-compose-plugin

2. インストールを確認します:

Copied!

1docker compose version

Windows & macOS向け

  1. 公式ウェブサイトからDocker Desktopをダウンロードします。
  2. ウェブサイトで提供されているインストール手順に従います

OpenAEVのインストール

  1. OpenAEV Dockerリポジトリをクローンします:

Copied!

2. 環境を設定します:

デフォルトでは、docker-compose.ymlファイルは.env.sampleファイルで指定された環境変数を使用します。.env.sample.envにコピーし、設定を反映するために必要な値を入力できます。

OpenAEVは、こちらで利用可能な公式Dockerイメージを提供しています:OpenAEV Docker Hub

このプラットフォームの主な強みの1つは、そのモジュラーアーキテクチャです。複数のDockerイメージをデプロイして、特定のニーズやユースケースに最適に対応できます。軽量な開発環境をセットアップする場合でも、本格的なプロダクションシステムを構築する場合でも、Dockerの柔軟性によりシームレスな適応性が保証されます。

Docker Composeファイルの詳細

docker-compose.yml.envファイルを一緒に確認し、その構造を理解することで、ニーズに応じて変数を変更できるようにします。

⚠️ 重要:.envファイルは設定例です。セキュリティ上の理由から、デプロイする前に認証情報を必ず更新して、不正アクセスを防いでください。

1. 依存関係

PostgreSQL

Copied!

docker-compose.yml

Copied!

1# PostgreSQL Configuration
2POSTGRES_USER=postgres
3POSTGRES_PASSWORD=admin

.env

MinIO

Copied!

1 minio:
2 image: minio/minio:RELEASE.2024-05-28T17-19-04Z
3 volumes:
4 - s3data:/data
5 ports:
6 - "9000:9000"
7 environment:
8 MINIO_ROOT_USER: ${MINIO_ROOT_USER}
9 MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
10 command: server /data
11 restart: always
12 healthcheck:
13 test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
14 interval: 10s
15 timeout: 5s
16 retries: 5

docker-compose.yml

Copied!

1# MinIO Configuration
2MINIO_ROOT_USER=minioadmin
3MINIO_ROOT_PASSWORD=minioadmin

.env

RabbitMQ

Copied!

1 rabbitmq:
2 image: rabbitmq:3.13-management
3 environment:
4 - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
5 - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
6 - RABBITMQ_NODENAME=rabbit01@localhost
7 volumes:
8 - amqpdata:/var/lib/rabbitmq
9 restart: always
10 healthcheck:
11 test: [ "CMD", "rabbitmq-diagnostics", "-q", "ping" ]
12 interval: 10s
13 timeout: 5s
14 retries: 5

docker-compose.yml

Copied!

1# RabbitMQ Configuration
2RABBITMQ_DEFAULT_USER=rabbitadmin
3RABBITMQ_DEFAULT_PASS=rabbitadmin

.env

Elasticsearch

Copied!

1 elasticsearch:
2 image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4
3 volumes:
4 - esdata:/usr/share/elasticsearch/data
5 environment:
6 # Comment-out the line below for a cluster of multiple nodes
7 - discovery.type=single-node
8 # Uncomment the line below below for a cluster of multiple nodes
9 # - cluster.name=docker-cluster
10 - xpack.ml.enabled=false
11 - xpack.security.enabled=false
12 - thread_pool.search.queue_size=5000
13 - logger.org.elasticsearch.discovery="ERROR"
14 - "ES_JAVA_OPTS=-Xms${ELASTIC_MEMORY_SIZE} -Xmx${ELASTIC_MEMORY_SIZE}"
15 restart: always
16 ulimits:
17 memlock:
18 soft: -1
19 hard: -1
20 nofile:
21 soft: 65536
22 hard: 65536
23 healthcheck:
24 test: curl -s http://elasticsearch:9200 >/dev/null || exit 1
25 interval: 30s
26 timeout: 10s
27 retries: 50

docker-compose.yml

Copied!

1# ElasticSearch Configuration
2ELASTIC_MEMORY_SIZE=4G

.env

2. OpenAEV プラットフォーム

Copied!

docker-compose.yml

Copied!

.env

3. カスタマイズ

使用法に応じていくつかのモジュールを追加できます。利用可能なものはこちらで確認できます → OpenAEV Ecosystem

Copied!

docker-compose.yml

Copied!

1COLLECTOR_MITRE_ATTACK_ID=00000000-0000-0000-0000-000000000000 # Should be a valid UUID

.env

OpenAEVの実行

設定が完了したら、Docker Composeを使用してOpenAEVを起動します:

Copied!

1sudo systemctl start docker.service
2sudo docker compose up -d

OpenAEVへのアクセス

インストールが完了したら、Webブラウザを介してOpenAEVにアクセスできます:

Copied!

1http://localhost:8080

.envファイルで定義された管理者認証情報を使用してログインします。

OpenAEVの手動デプロイ

依存関係

OpenAEVをデプロイする前に、以下の依存関係がインストールされていることを確認してください:

openaev-devディレクトリにあるdocker-compose.ymlファイルを使用できます。

OpenAEVの手動インストール

  1. 最新リリースをダウンロードして展開します:

⚠️ リリース1.12.2の例です。ニーズに基づいてリリースバージョンを変更してください。

Copied!

2. アプリケーションを設定します:

application.propertiesファイル(展開されたリリースアーカイブのルートにあります)を要件に合わせて変更します。

設定可能なパラメータの完全なリストについては、次を参照してください:OpenAEV設定ガイド

application.propertiesファイルの詳細

application.propertiesファイルを一緒に確認し、その構造を理解することで、ニーズに応じて変数を変更できるようにします。

1. 依存関係

PostgreSQL

Copied!

MinIO

Copied!

1# MinIO Configuration
2minio.port=10000
3minio.access-key=minioadmin
4minio.access-secret=minioadmin

RabbitMQ

Copied!

ElasticSearch

Copied!

2. OpenAEV プラットフォーム

Copied!

OpenAEVの実行

すべての依存関係が実行され、正常であることを確認してから、次のコマンドを実行します:

Copied!

OpenAEVへのアクセス

インストールが完了したら、Webブラウザを介してOpenAEVにアクセスできます:

Copied!

1http://localhost:8080

application.propertiesファイルで定義された管理者認証情報を使用してログインします。

OpenAEV Agentのデプロイ

このセクションには、アセットを介した技術的攻撃を実施するための有用な情報が含まれています。卓上シナリオやシミュレーションにOpenAEVを使用している場合は、このセクションをスキップできます。

技術的アセットに対して攻撃シミュレーションを実施するためにOpenAEVを使用している場合は、ターゲットアセットにエージェントをデプロイする必要があります。

OpenAEVは、CrowdStrike、Tanium、Calderaなど、いくつかの既存のエージェントとの統合を提供しています。ただし、独自の社内エージェントも提供しており、そのデプロイプロセスについて説明します。

他のエージェントの詳細については、公式ドキュメントを参照してください。

OSによっては、いくつかのインストール方法が利用可能です。OpenAEVで右上隅の青いアイコンをクリックすることで確認できます:

image 1

OSを選択した後、OpenAEVプラットフォームが提供する手順に従うだけです:

  1. スニペットをコピー
  2. アンチウイルスの除外を追加
agent

エージェントがデプロイされると、専用リストに登録されたエンドポイントを取得し、技術的インジェクトで使用できます。

list

まとめ

OpenAEVは、高度な侵害および攻撃シミュレーションを通じて、組織がサイバーセキュリティの回復力を積極的に評価できるようにします。そのモジュラーアーキテクチャ、多様な統合機能、デプロイの容易さにより、防御戦略を強化することを目指すセキュリティ専門家にとってソリューションとなっています。

Dockerベースのデプロイメントを選択する場合でも、手動セットアップを選択する場合でも、OpenAEVは独自のセキュリティニーズに適応する柔軟性を提供します。

始める準備はできましたか?完全なドキュメントはOpenAEV Docsでご覧いただけます。

OpenAEVのコア機能と、それがContinuous Threat Exposure Management(CTEM)プログラムをどのように強化できるかについてさらに詳しく知りたいですか?この詳細な記事をチェックしてください!

続きを読む

関連トピックとインサイトをご覧ください