ATT&CKTM Navigator Layer File Format Definition

August 13, 2024 · View on GitHub

This document describes Version 3.0 of the MITRE ATT&CK Navigator Layer file format. The ATT&CK Navigator stores layers as JSON, therefore this document defines the JSON properties in a layer file.

Property Table

NameTypeRequired?Default Value (if not present)Description
versionStringYesn/aMust be "3.0"
nameStringYesn/aThe name of the layer
descriptionStringNo""A free-form text field that describes the contents or intent of the layer
domainStringYesn/aTechnology domain that this layer represents. Valid values are: "mitre-enterprise" or "mitre-mobile"
filtersFilter objectNoSee Filter object definition below
sortingNumberNo0Specifies the ordering of the techniques within each tactic category as follows:
0: sort ascending alphabetically by technique name
1: sort descending alphabetically by technique name
2: sort ascending by technique score
3: sort descending by technique score
layoutLayout objectNoSee definition of Layout object below
hideDisabledBooleanNofalseSpecifies whether techniques that have been disabled are still displayed (greyed-out) or omitted from the view as follows:
true: omit techniques marked as disabled from the view
false: include disabled techniques in the view but display as greyed-out
techniquesArray of Technique objectsNoSee definition of Technique object below
gradientGradient objectNoRed to Green, minValue=0, maxValue=100See definition of Gradient object below
legendItemsArray of LegendItem objectsnoSee definition of LegendItem object below
showTacticRowBackgroundbooleannofalseIf true, the tactic row background color will be the value of the tacticRowBackground field
tacticRowBackgroundstringno"#dddddd"The tactic row background color
selectTechniquesAcrossTacticsbooleannotrueIf true, selecting a technique also selects all instances with the same technique ID. See also selectSubtechniquesWithParent
selectSubtechniquesWithParentbooleannotrueIf true, selecting a technique will also select all subtechniques of the technique. See also selectTechniquesAcrossTactics
metadataArray of Metadata objectsNoUser defined metadata for this layer. See definition of Metadata object below

Filter Object Properties

NameTypeRequired?Default Value (if not present)Description
stagesArray of StringNo["act"]Specifies the logical stages of the attack lifecycle to display. Valid choices are: "prepare" and "act". Array must contain at least one of these values
platformsArray of StringNodomain=mitre-enterprise: "Windows", "Linux", "macOS"
domain=mitre-mobile: "Android", "iOS"
Specifies the platforms within the technology domain – only those techniques tagged with these platforms are to be displayed. Valid values are as follows:
domain=mitre-enterprise: "Windows", "Linux", "macOS", "AWS", "GCP", "Azure", "Azure AD", "Office 365", "SaaS"
domain=mitre-mobile: "Android", "iOS"

Technique Object properties

Technique objects are used to store both techniques and subtechniques. The only difference in representation between a technique and a subtechnique is in the techniqueID field, which for subtechniques is the parent technique ID followed by the subtechnique-id suffix.

NameTypeRequired?Default Value (if not present)Description
techniqueIDStringYesn/aUnique identifier of the ATT&CK technique, e.g. "T####". For subtechniques, the format is "T####.###", where the substring to the left of the decimal is the parent technique ID, and the right-side substring is the subtechnique ID suffix.
tacticStringNon/aUnique identifier of the ATT&CK technique's tactic, e.g. "lateral-movement". If the field is not present, the annotations for the technique will appear under every tactic the technique belongs to
commentStringNo""Free-text field
enabledBooleanNotrueSpecifies if the technique is considered enabled or disabled in this layer
scoreNumberNo(unscored)Optional numeric score assigned to this technique in the layer. If omitted, the technique is considered to be "unscored" meaning that it will not be assigned a color from the gradient by the Navigator
colorStringNo""Explicit color value assigned to the technique in this layer. Note that explicitly defined color overrides any color implied by the score – the Navigator will display the technique using the explicitly defined color
metadataArray of Metadata objectsNoUser defined metadata for this technique. See definition of Metadata object below
showSubtechniquesbooleanfalsefalseif true, the subtechniques under this technique will be shown by default. This field is only valid under a technique with subtechniques. Note that subtechniques can still be shown/hidden using the UI controls — this field is simply the default state.

Gradient Object properties

NameTypeRequired?Default Value (if not present)Description
colorsArray of StringYesn/aSpecifies the hexadecimal RGB color values that constitute the color spectrum in use. The array must contain at least two (2) values, corresponding to the minValue and maxValue scores
minValueNumberYesn/aLower bound score of the gradient
maxValueNumberYesn/aUpper bound score of the gradient. Note: maxValue must be > minValue

LegendItem Object properties

NameTypeRequired?Default Value (if not present)Description
labelStringYesn/aThe name of the legend item
colorStringYesn/aThe color of the legend item

Metadata Object properties

NameTypeRequired?Default Value (if not present)Description
nameStringYesn/athe name of the metadata
valueStringYesn/aThe value of the metadata

Layout Object properties

NameTypeRequired?Default Value (if not present)Description
layoutStringNo"side'The layout of the matrix. Either "side", "flat" or "mini"
showIDBooleanNofalseif true, show the ATT&CK ID of techniques and tactics in the matrix
showNameBooleanNotrueif true, show the name of techniques and tactics in the matrix

Example

The following example illustrates the layer file format:

{
    "name": "example layer",
    "version": "3.0",
    "domain": "mitre-enterprise",
    "description": "hello, world",
    "filters": {
        "stages": [
            "act"
        ],
        "platforms": [
            "Windows",
            "macOS"
        ]
    },
    "sorting": 2,
    "layout": {
        "layout": "side",
        "showName": true,
        "showID": false
    },
    "hideDisabled": false,
    "techniques": [
        {
            "techniqueID": "T1110",
            "color": "#fd8d3c",
            "comment": "This is a comment for technique T1110",
            "showSubtechniques": true
        },
        {
            "techniqueID": "T1110.001",
            "comment": "This is a comment for T1110.001 - the first subtechnique of technique T1110.001"
        },
        {
            "techniqueID": "T1134",
            "tactic": "defense-evasion",
            "score": 75,
            "comment": "this is a comment for T1134 which is only applied on the defense-evasion tactic"
        },
        {
            "techniqueID": "T1078",
            "tactic": "discovery",
            "enabled": false
        },
        {
            "techniqueID": "T1053",
            "tactic": "privilege-escalation",
            "metadata": [
                { 
                    "name": "T1053 metadata1", 
                    "value": "T1053 metadata1 value" 
                },
                { 
                    "name": "T1053 metadata2", 
                    "value": "T1053 metadata2 value" 
                }
            ]
        }
    ],
    "gradient": {
        "colors": [
            "#ff6666",
            "#ffe766",
            "#8ec843"
        ],
        "minValue": 0,
        "maxValue": 100
    },
    "legendItems": [
        {
            "label": "Legend Item Label",
            "color": "#FF00FF"
        }
    ],
    "showTacticRowBackground": true,
    "tacticRowBackground": "#dddddd",
    "selectTechniquesAcrossTactics": false,
    "selectSubtechniquesWithParent": false,
    "metadata": [
        { 
            "name": "layer metadata 1", 
            "value": "layer metadata 1 value" 
        },
        { 
            "name": "layer metadata 2", 
            "value": "layer metadata 2 value" 
        }
    ]
}