🧭

MITRE ATT&CK Navigatorレイヤーファイル入門

に公開

MITRE ATT&CK を可視化・共有するための便利ツール「ATT&CK Navigator」。その中心的な機能のひとつが「レイヤーファイル」です。

この記事では、Navigatorのレイヤーファイルについて説明します。

MITRE ATT&CK Navigator とは?

MITRE ATT&CK Navigator は、戦術(Tactic)と技術(Technique)をマトリクス形式で可視化できる Web ツールです。

過去記事(MITRE ATT&CK Navigatorをコンテナで用意する)
https://zenn.dev/sesamum/articles/1f06dcdf8b3757

Navigator 上では、色やスコア、説明などを使って技法を強調表示できます。これを保存・共有するための形式が「レイヤーファイル(.json)」です。

レイヤーファイルのフォーマット仕様は以下のサイトで公開されています。

https://github.com/mitre-attack/attack-navigator/blob/master/layers/spec/v4.5/layerformat.md

レイヤーファイルのフォーマット仕様にはバージョンがあります。
現時点2025年8月においての最新バージョンは、4.5となります。


レイヤーファイルの基本構造

レイヤーファイルは JSON 形式で、プロパティに適切な値を入れて作成します。

プロパティには数値や文字列以外にもリストやオブジェクト(他言語で言うところの辞書)も格納することができます。プロパティ・値・意味づけについて定義しているのが、レイヤーファイルのフォーマット仕様となります。

プロパティ

レイヤーファイルのプロパティについて説明します。

完全な仕様については、次のURLを参照してください。

https://github.com/mitre-attack/attack-navigator/blob/master/layers/spec/v4.5/layerformat.md#property-table

主なプロパティは以下の通りです。

プロパティ名 値のタイプ 意味
versions Versionオブジェクト バージョン情報を表すオブジェクト
name String レイヤーの名前
description String レイヤーの内容や意図
domain String enterprise-attack, mobile-attack, ics-attack。このレイヤーが表現するテクノロジードメイン
filters Filterオブジェクト 対象を指定し表示を絞り込むためのフィルタ
sorting Number 各戦術カテゴリ内のテクニックの順番を指定する。
0: テクニック名のアルファベット順で昇順
1: テクニック名のアルファベット順で降順
2: テクニックスコアの昇順
3: テクニックスコアの降順
layout Layoutオブジェクト レイアウトを指定する
hideDisabled Boolean 無効状態として設定されたテクニックをグレーアウトして表示するか、隠すか
techniques Techniqueオブジェクトのリスト テクニックを表すオブジェクトをリストで指定する
gradient Gradientオブジェクト スコア値に基づいて色を段階的に変化させたい場合の色定義および段階情報
legendItems LegendItemオブジェクトのリスト 凡例用の色と説明ラベル
SelectTechniquesAcrossTactics boolean テクニックを選択した際、同じテクニック ID を持つすべてのインスタンスも選択した状態にするか
SelectSubtechniquesWIthParent boolean テクニックを選択した際、すべてのサブテクニックも選択するか
selectVisibleTechniques boolean テクニックを選択した際、隠されたテクニックも選択するか

JSONにて、各プロパティと値を設定していくことでレイヤーファイルを作成することができます。値には、文字列や数値、特定のオブジェクト(他言語で言う辞書に相当)を指定します。

オブジェクトにもプロパティ(他言語で言うとキーに相当)に関する仕様が決まっているので、各オブジェクトについての仕様を説明します。

オブジェクト

Filterオブジェクト

対象を指定し表示を絞り込むためのフィルタ用オブジェクトです。

プロパティ名 値のタイプ 意味
platforms 文字列のリスト 指定しない場合は全プラットフォーム。レイヤーのプロパティで指定したドメインによって、指定可能な値が決まっている。

enterprise-attackの場合、"Windows"、"Linux"、"macOS"、"Office 365" などを指定することができます。
"Windows"を指定すると、MITRE ATT&CK のテクニックのうち、対象がWindowsとなっているものだけがNavigatorのレイヤーに表示されます。

Versionオブジェクト

このレイヤーファイルが、以下のそれぞれに対するどのバージョンに対応したものなのかを表現します。

  • MITRE ATT&CK フレームワーク
  • MITRE ATT&CK Navigatorのバージョン
  • レイヤーファイルのバージョン
プロパティ名 値のタイプ 説明
attack String このレイヤーの MITRE ATT&CK バージョン
navigator String Navigator のバージョン。少なくとも 4.9.0 が必要
layer String レイヤーファイル仕様のバージョン。4.5仕様の話をしているので、4.5を指定すること

MITRE ATT&CK フレームワークのバージョンは、MITRE ATT&CKのサイトで確認できます。

https://attack.mitre.org/resources/versions/


MITRE ATT&CK フレームワークのバージョン

MITRE ATT&CK Navigator のバージョンは、MITRE ATT&CK Navigator の画面で確認できます。GitHubで公開されているWeb版のNavigatorは、以下のURLでアクセスできます。自身で用意する MITRE ATT&CK Navigatorで表示させる場合は、それぞれの環境の Navigator 画面でバージョンを確認してください。

画面上、左下にバージョン情報が記載されています。以下の例では、v5.1.1が Navigator のバージョンとなります。

https://mitre-attack.github.io/attack-navigator/


MITRE ATT&CK Navigator のバージョン

レイヤーファイルのバージョンは、レイヤーファイルの仕様のバージョンとなります。

この記事では、現時点の最新バージョンである 4.5 の仕様を参照しているため、4.5を指定します。

https://github.com/mitre-attack/attack-navigator/blob/master/layers/spec/v4.5/layerformat.md

Techniqueオブジェクト

テクニックあるいはサブテクニックを表現するオブジェクトです。テクニックに対するスコア値や、色、紐付いている戦術、テクニックに付けるコメントなどを指定できます。

プロパティ名 値のタイプ 説明
techniqueID String MITRE ATT&CK のテクニックID、あるいはサブテクニックID
tactic String MITRE ATT&CK の戦術名。例) lateral-movement
comment String テクニックに対するコメント。自由に書ける
enabled Boolean このテクニックがこのレイヤーにおいて有効か、無効か。hideDisabledが有効の場合に影響する
score Number このテクニックに割り当てる任意のスコア。省略するとunscored扱いになる。gradientに影響する
color String このテクニックの背景に指定した色を付ける。gradientによる色づけよりも優先される

Gradientオブジェクト

テクニックのスコア値に基づいて色を段階的に変える際に使われる、色とスコアの範囲を指定したオブジェクト。
スコアの範囲は、minValue、maxValue、指定した色の数によって計算して求められる。

プロパティ名 値のタイプ 説明
colors 文字列のリスト 16進数のRGBカラー色で指定する。色は少なくとも2色以上指定する必要がある
minValue Number スコアがこの値の時の色が、この値よりも低いスコアの場合にも使われる。下限の色
maxValue Number スコアがこの値の時の色が、この値よりも高いスコアの場合にも使われる。上限の色

スコアは minValue から maxValue の間で正規化され、その値に応じて colors の間を補間して色が決まります。
たとえば、スコアが minValue と maxValue の中間値なら、中央の色(またはその中間色)になります。

スコアがminValue, maxValueの範囲外(たとえば -100 や 200)の場合は、次のように扱われます:

minValue 未満 → 最初の色
maxValue より大 → 最後の色
この minValue / maxValue は「スコアの取り得る範囲」ではなく、「色の割り当て範囲(クリップ値)」として使われる点に注意してください。

クリップとは、簡単に言うとある値が「はみ出した」ときに、無理やり端っこに「とどめておく」ことを「クリップ(clipping)」といいます。

たとえば:

「0〜100の範囲で扱いたい」と決めたのに、
入ってきた値が 120 や -10 だったら、
そのまま使うとおかしくなるので…
120 は 100 に変える、-10 は 0 に変える

これが「クリップ(clip)」です。はみ出しを防ぐ処理です。

Layoutオブジェクト

Navigator画面のレイアウトを指定するオブジェクトです。
MITRE ATT&CK の ATT&CK ID(テクニックIDや戦術IDなど)や紐付いた名前を画面上に表示するかを制御したりすることができます。

プロパティ名 値のタイプ 説明
layout String 表のレイアウトを選べる。 "side", "flat", "mini"
showID Boolean テクニックや戦術などのIDを表示するか
showName Boolean テクニックや戦術などの名前を表示するか
showAggregateScores Boolean 計算で集約したスコアを表示するか
countUnscored Boolean スコアが割あたってないテクニックを集約スコアに含めて計算するか
aggregateFunction String 集約スコアの計算に使う関数。 "average", "min", "max", "sum"
expandedSubtechniques String サブテクニックの表示方法。 "none", "all", "annotated"

レイヤーファイルの例

例として、MITRE ATT&CK テクニックID(T1134) に関して作成したレイヤーファイルを記載します。

t1134.json
{
  "name": "example",
  "domain": "enterprise-attack",
  "description": "THis is a demonstration layer",
  "versions": {
    "layer": "4.5",
    "attack": "17.1",
    "navigator": "5.1.1"
  },
  "filters": {
    "platforms": [
      "Windows"
    ]
  },
  "layout": {
    "layout": "side",
    "showID": true,
    "showName": true,
    "showAggregateScores": true,
    "countUnscored": true,
    "aggregateFunction": "sum",
    "expandSubtechniques": "annotated"
  },
  "hideDisabled": true,
  "techniques": [
    {
      "techniqueID": "T1134",
      "tactic": "defense-evasion",
      "comment": "Demo",
      "score": 1,
      "color": "#AABBCC",
      "name": "Access Token Manipulation"
    },
    {
      "techniqueID": "T1134",
      "tactic": "privilege-escalation",
      "score": -80,
      "name": "Access Token Manipulation"
    }
  ],
  "gradient": {
    "colors": [
      "#DAF7A6",
      "#FFC300",
      "#FF5733",
      "#C70039",
      "#900C3F",
      "#581845"
    ],
    "minValue": -100,
    "maxValue": 100
  },
  "legendItems": [
    {
      "label": "a",
      "color": "#DAF7A6"
    },
    {
      "label": "B",
      "color": "581845"
    }
  ],
  "metadata": [
    {
      "name": "example metadata",
      "value": "This is an example"
    }
  ]
}


T1134.json を Navigatorに読み込んだ結果

関連記事

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

Discussion