🐡

脅威レポートATT&CKマッパー TRAM

に公開

TRAMについて

TRAM(脅威レポートATT&CKマッパー: Threat Report ATT&CK Mapper)について紹介します。

https://ctid.mitre.org/projects/threat-report-attck-mapper-tram/

TRAMはサイバー脅威インテリジェンス(CTI)レポート(英語のみ)の内容から、レポートに記載されている攻撃者のTTP(戦術、手法、手順)を自動的に見つけだします。

直接MITRE ATT&CKのTTPが記載されていないサイバー脅威インテリジェンスレポートは多いです。サイバー脅威インテリジェンスのアナリストは、レポートの内容を精査してATT&CKのTTPを特定する作業を行う必要がありましたが、この作業は困難で、エラーが発生しやすく時間がかかります。TRAMはこの課題を解決するために設計されました。

TRAMツールはその後のバージョンアップにより、専用にトレーニングした大規模言語モデル(LLM)を使用するアプローチを取るようになりました。

TRAMプロジェクトウェブサイトへのリンク

TRAMを導入する

導入手順の詳細は以下のサイトを参照してください。

https://github.com/center-for-threat-informed-defense/tram/wiki/Installation

TRAMはWebアプリケーションツールであり、コンテナで提供されます。
ここでは、docker composeを使って導入する手順を記載します。

  1. GitHubのリポジトリから最新のdocker-compose.ymlを入手します。
$ curl -LO https://github.com/center-for-threat-informed-defense/tram/raw/main/docker/docker-compose.yml
  1. docker-compose.ymlの内容を変更します。

https://github.com/center-for-threat-informed-defense/tram/wiki/Installation#environment-variables

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にアクセスできます。

  1. コンテナを起動します。
$ docker compose up -d
  1. ブラウザでUIにアクセスします。

  1. ログインは、docker-compose.ymlで指定したユーザ名とパスワードを入力します。

  2. 初期画面が表示されます。

TRAMを使ってみる

以下のレポート分析ワークフローの内容に従ってTRAMを使ってみます。

レポート分析ワークフロー

  1. サイバー脅威インテリジェンスレポートを入手します。

今回はzeroday initiative.comのサイトからブログの内容をコピーしたテキストを取り込んでみます。

https://www.zerodayinitiative.com/blog/2025/2/24/announcing-pwn2own-berlin-2025

  1. TRAM UIにてUpload Reportボタンを押し、入手したレポートをアップロードします。

  1. アップロードしたレポートの解析が行われます。
    ファイルのアップロードが完了すると、レポートがリストの一番上に「キュー済み」というステータスで表示されます。
    バックグラウンドでは、システムがレポートの処理を開始します。

  1. analyzeから、記載内容とATT&CK ID、信頼度についての情報を確認することができます。

Discussion