脅威レポートATT&CKマッパー TRAM
TRAMについて
TRAM(脅威レポートATT&CKマッパー: Threat Report ATT&CK Mapper)について紹介します。
TRAMはサイバー脅威インテリジェンス(CTI)レポート(英語のみ)の内容から、レポートに記載されている攻撃者のTTP(戦術、手法、手順)を自動的に見つけだします。
直接MITRE ATT&CKのTTPが記載されていないサイバー脅威インテリジェンスレポートは多いです。サイバー脅威インテリジェンスのアナリストは、レポートの内容を精査してATT&CKのTTPを特定する作業を行う必要がありましたが、この作業は困難で、エラーが発生しやすく時間がかかります。TRAMはこの課題を解決するために設計されました。
TRAMツールはその後のバージョンアップにより、専用にトレーニングした大規模言語モデル(LLM)を使用するアプローチを取るようになりました。
TRAMを導入する
導入手順の詳細は以下のサイトを参照してください。
TRAMはWebアプリケーションツールであり、コンテナで提供されます。
ここでは、docker composeを使って導入する手順を記載します。
- GitHubのリポジトリから最新のdocker-compose.ymlを入手します。
$ curl -LO https://github.com/center-for-threat-informed-defense/tram/raw/main/docker/docker-compose.yml
- docker-compose.ymlの内容を変更します。
services:
tram:
image: tram:latest
environment:
- DATA_DIRECTORY=/tram/data
- ALLOWED_HOSTS=["example_host1", "localhost"]
- CSRF_TRUSTED_ORIGINS=["http://example_host1:8000", "http://localhost:8000"]
- DJANGO_SUPERUSER_USERNAME=djangoSuperuser
- DJANGO_SUPERUSER_PASSWORD=LEGITPassword1234 # your password here
- DJANGO_SUPERUSER_EMAIL=test@example.com # your email address here
volumes:
- tram:/tram/data
- tram_static:/tram/src/tram/staticfiles
nginx:
image: tram-nginx
ports:
- "8000:80"
volumes:
- tram:/tram/data:ro
- tram_static:/tram/src/tram/staticfiles:ro
volumes:
tram:
tram_static:
変数名 | 説明 |
---|---|
DATA_DIRECTORY | Django 内部で使用されるアプリ/ML/DB データ保存パス。ボリューム /tram/data にマウントされる。 |
ALLOWED_HOSTS | Django が受け付けるホスト名(例:localhost, 127.0.0.1)。 |
CSRF_TRUSTED_ORIGINS | CSRF保護の例外許可URL(CORSのような役割)。 |
DJANGO_SUPERUSER_* | 起動時に自動作成されるスーパーユーザの認証情報。初回起動時に管理画面ログイン用。 |
SECRET_KEY(オプション) | Djangoの暗号化キー。未指定の場合はランダム生成。固定したい場合はここに設定。 |
また、tramのイメージは、以下のところからの入手に変わっている(?)ようなので、imageの部分も修正します。
ghcr.io/center-for-threat-informed-defense/tram:main
services:
tram:
image: ghcr.io/center-for-threat-informed-defense/tram:latest
platform: linux/amd64
environment:
- DATA_DIRECTORY=/tram/data
- ALLOWED_HOSTS=["localhost", "127.0.0.1"]
- CSRF_TRUSTED_ORIGINS=["http://localhost:4203", "http://127.0.0.1:4203"]
- DJANGO_SUPERUSER_USERNAME=hogehoge
- DJANGO_SUPERUSER_PASSWORD=FUGAFUGAPassword1234 # your password here
- DJANGO_SUPERUSER_EMAIL=test@example.com # your email address here
volumes:
- tram:/tram/data
- tram_static:/tram/src/tram/staticfiles
nginx:
image: ghcr.io/center-for-threat-informed-defense/tram-nginx:latest
platform: linux/amd64
ports:
- "4203:80"
volumes:
- tram:/tram/data:ro
- tram_static:/tram/src/tram/staticfiles:ro
volumes:
tram:
tram_static:
設定のポイントは以下の通りです。
以下のURLでTRAMのUIにアクセスできます。
- コンテナを起動します。
$ docker compose up -d
- ブラウザでUIにアクセスします。
-
ログインは、docker-compose.ymlで指定したユーザ名とパスワードを入力します。
-
初期画面が表示されます。
TRAMを使ってみる
以下のレポート分析ワークフローの内容に従ってTRAMを使ってみます。
- サイバー脅威インテリジェンスレポートを入手します。
今回はzeroday initiative.comのサイトからブログの内容をコピーしたテキストを取り込んでみます。
- TRAM UIにてUpload Reportボタンを押し、入手したレポートをアップロードします。
- アップロードしたレポートの解析が行われます。
ファイルのアップロードが完了すると、レポートがリストの一番上に「キュー済み」というステータスで表示されます。
バックグラウンドでは、システムがレポートの処理を開始します。
- analyzeから、記載内容とATT&CK ID、信頼度についての情報を確認することができます。
Discussion