🐙

DeTT&CT実践1

に公開

はじめに

本記事ではDeTT&CTについて実際に使用していく方法について説明します。

DeTT&CT環境を用意する

公式サイトのWikiでは、Dockerで導入する方法とローカルに導入する方法について記載されています。

本記事ではカスタマイズ性を考慮し、Dockerfileを使ってイメージを作成し導入する方法を説明します。

導入の流れは、公式サイトに沿って進めていきますが一部カスタマイズしています。

https://github.com/rabobank-cdc/DeTTECT/wiki/Installation-and-requirements

自身でイメージをビルドする

  1. GitHubから、DeTTECTリポジトリをクローンします。
git clone https://github.com/rabobank-cdc/DeTTECT
  1. DeTTECTディレクトリへ移動します。
cd DeTTECT
  1. Dockerイメージを作成します。
docker build -t dettect .
  1. イメージが作成されたことを確認します。
docker images
REPOSITORY                   TAG       IMAGE ID       CREATED              SIZE
dettect                      latest    e9b578a33777   About a minute ago   536MB

ローカルにattack-stix-dataを用意する

DeTT&CT動作時にMITRE ATT&CK情報にアクセスする必要がありますが公開されているWebサイト(TAXIIサーバ)に毎回通信を行うのでは無く、ローカルに用意したattack-stix-dataを参照するようにします。

そのために、MITRE ATT&CKによって公開されているattack-stix-dataをローカルにクローンします。

ここでは、 ~/attack-stix-data にデータを格納します。

cd ~
git clone https://github.com/mitre-attack/attack-stix-data

イメージからコンテナを起動する

dettectイメージを起動するために任意の場所に作業用のディレクトリを用意します。
ここではホームディレクトリにdettectディレクトリを用意します。

mkdir ~/dettect
cd ~/dettect

dettectをコンテナで動作させるため、ホストとのインタラクションのためのディレクトリ(input/output)を2つ用意します。

mkdir input
mkdir output

docker-compose.ymlファイルを作成します。

touch docker-compose.yml

docker-compose.yml:

services:
  dettect:
    image: dettect:latest
    ports:
      - 4201:8080
    container_name: dettect
    stdin_open: true
    volumes:
      - ./input:/opt/DeTTECT/input
      - ./output:/opt/DeTTECT/output
      - $HOME/attack-stix-data:/opt/DeTTECT/attack-stix-data:ro
    pull_policy: never
    tty: true

DeTT&CTには、DeTT&CTエディターがWebアプリとして用意されています。ブラウザから接続して使うため、ホストから http://127.0.0.1:4201 でアクセスできるようにします。

ホストの4201ポートにアクセスすると、dettectコンテナの8080ポートに接続されます。

インタラクションのためのディレクトリ(input、output)をコンテナ内の /opt/DeTTECT/input/opt/DeTTECT/output としてマウントします。

attack-stix-dataを、 /opt/DeTTECT/attack-stix-data に読み取り専用としてマウントします。

docker-compose.ymlのあるディレクトリで、dettectコンテナを起動します。

docker compose up -d

コンテナにアクセスする

docker-compose.ymlのあるディレクトリでは、docker composeコマンドを使ってコンテナに対する操作を行うことができます。

コンテナ内に入りシェルを使うには、以下のようにコマンドを実行します。

$ docker compose exec <サービス名> /bin/bash

サービス名は、docker-compose.ymlで指定したサービス名のことです。

次のコマンドで確認できます。SERVICEのところに記載されているのがサービス名となります。

$ docker compose ps -a
NAME      IMAGE            COMMAND     SERVICE   CREATED          STATUS          PORTS
dettect   dettect:latest   "python3"   dettect   25 minutes ago   Up 25 minutes   0.0.0.0:4201->8080/tcp, [::]:4201->8080/tcp

今回の環境では以下のコマンドでコンテナ内に入ることができます。

$ docker compose exec dettect /bin/bash

DeTT&CTエディタを起動する

DeTT&CTエディタを起動するには、以下の手順を実施します。

  1. コンテナにアクセスする
$ docker compose exec dettect /bin/bash
  1. DeTT&CTエディタを起動する
# python dettect.py e &
Editor started at port 8080
You can open the Editor on: http://localhost:8080/

DeTT&CTエディタはフォアグラウンドで動作するため、コマンド末尾に & をつけバックグラウンドで動作させています。

ブラウザで、 http://localhost:4201 にアクセスすると、コンテナの8080ポートに接続され、DeTT&CTエディタを利用することができます。

dettectinatorを用意する

dettectinatorは、CLIとして利用する際dettectinatorリポジトリをそのまま使うことになります。DeTT&CTイメージの中に入れてもいいのですが、サイズや実行環境の複雑さも考慮して、ホスト側に直接用意することにします。

以下の手順は、dettectコンテナではなくホスト側で実施します。

  1. deettectinatorリポジトリを ~/dettectinator にクローンします。
$ cd ~
$ git clone https://github.com/siriussecurity/dettectinator.git
$ cd dettectinator
  1. dettectinator実行用のPython環境を作ります。
$ python -m venv .venv
  1. Python仮想環境をActivateします。
$ source .venv/bin/activate  # bashの場合
or
$ source .venv/bin/activate.fish  # fishの場合
  1. dettectinatorの動作に必要なpythonライブラリを導入します。
(.venv) $ pip install -r requirements.txt
  1. Pythonパッケージを表すdettectinatorディレクトリの下に移動します。
(.venv) $ cd dettectinator

クローンしてきたdettectinatorリポジトリ自体も、dettectinatorディレクトリであるため、現在居る位置は dettectinator/dettectinator となっています。

  1. dettectinatorを以下と連携できるようにします。
  • DeTT&CTコンテナのinput, outputディレクトリ
  • attack-stix-data
(.venv) $ cd ~/dettectinator/dettectinator
(.venv) $ ln -s ~/dettect/input input
(.venv) $ ln -s ~/dettect/output output
(.venv) $ ln -s ~/attack-stix-data attack-stix-data
  1. dettectinatorのヘルプを表示してみます。
(.venv) $ python dettectinator.py -h
Please specify a valid data import plugin using the "-p" argument:
 - DatasourceCsv
 - DatasourceDefenderEndpoints
 - DatasourceExcel
 - DatasourceWindowsSecurityAuditing
 - DatasourceWindowsSysmon
 - GroupExcel
 - GroupPdf
 - GroupWeb
 - TechniqueCsv
 - TechniqueDefenderAlerts
 - TechniqueDefenderIdentityRules
 - TechniqueElasticSecurityRules
 - TechniqueExcel
 - TechniqueSentinelAlertRules
 - TechniqueSigmaRules
 - TechniqueSplunkConfigSearches
 - TechniqueSuricataRules
 - TechniqueSuricataRulesSummarized
 - TechniqueTaniumSignals
 - TechniqueWazuhCsv

まとめ

DeTT&CTの実践として、環境を整えるところまでを説明しました。

次は実際にデータソース管理ファイルの作成や可視化を行っていきます。

関連記事

MITRE ATT&CK関連記事一覧
https://zenn.dev/sesamum/articles/fba079cadba113

Discussion