DeTT&CT実践1
はじめに
本記事ではDeTT&CTについて実際に使用していく方法について説明します。
DeTT&CT環境を用意する
公式サイトのWikiでは、Dockerで導入する方法とローカルに導入する方法について記載されています。
本記事ではカスタマイズ性を考慮し、Dockerfileを使ってイメージを作成し導入する方法を説明します。
導入の流れは、公式サイトに沿って進めていきますが一部カスタマイズしています。
自身でイメージをビルドする
- GitHubから、DeTTECTリポジトリをクローンします。
git clone https://github.com/rabobank-cdc/DeTTECT
- DeTTECTディレクトリへ移動します。
cd DeTTECT
- Dockerイメージを作成します。
docker build -t dettect .
- イメージが作成されたことを確認します。
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エディタを起動するには、以下の手順を実施します。
- コンテナにアクセスする
$ docker compose exec dettect /bin/bash
- 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コンテナではなくホスト側で実施します。
- deettectinatorリポジトリを
~/dettectinator
にクローンします。
$ cd ~
$ git clone https://github.com/siriussecurity/dettectinator.git
$ cd dettectinator
- dettectinator実行用のPython環境を作ります。
$ python -m venv .venv
- Python仮想環境をActivateします。
$ source .venv/bin/activate # bashの場合
or
$ source .venv/bin/activate.fish # fishの場合
- dettectinatorの動作に必要なpythonライブラリを導入します。
(.venv) $ pip install -r requirements.txt
- Pythonパッケージを表すdettectinatorディレクトリの下に移動します。
(.venv) $ cd dettectinator
クローンしてきたdettectinatorリポジトリ自体も、dettectinatorディレクトリであるため、現在居る位置は dettectinator/dettectinator
となっています。
- 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
- 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関連記事一覧
Discussion