Navigating ATT&CK Navigator: Building, Annotating, and Exporting Technique Layers
Objective: Understand how to use MITRE ATT&CK Navigator to build, annotate, combine, and export technique layers — the JSON layer format, per-technique annotation fields, gap analysis via score expressions, programmatic generation, and the operational security controls around layer files for threat-informed defense and adversary emulation.
1. What Is ATT&CK Navigator and Why It Matters
ATT&CK Navigator is a web-based tool for annotating and exploring ATT&CK matrices. It visualizes defensive coverage, supports red/blue team planning, and tracks the frequency of detected techniques. It is a meta-tool: it generates no host telemetry and maps to no single ATT&CK technique. Instead, it is the primary planning surface for structured adversary emulation and threat-informed defense.
The unit of work is the layer — a JSON file scoped to one ATT&CK domain and matrix version, listing techniques with whatever annotations have been applied. Layers can store a default view configuration (sorting, visible platforms) and can be authored interactively in the UI or generated programmatically.
The current release is v5.3.2 (April 21, 2026). The hosted instance lives at mitre-attack.github.io/attack-navigator/.
2. Tool Setup: Hosted Instance vs. Self-Hosted
The hosted instance is the fastest start. Layer files uploaded to it stay client-side — nothing is stored on MITRE’s servers. Despite that, MITRE recommends running your own instance if your layer files contain sensitive content.
Navigator is a dynamic web application that runs on Node.js and Angular CLI, and installs on Linux. A self-hosted instance can be air-gapped and fed local STIX bundles via the customDataURL field or customDataURL query parameter.
git clone https://github.com/mitre-attack/attack-navigator.git
cd attack-navigator/nav-app
npm install
ng serve # serves the Navigator on localhost:4200Self-hosted configuration lives in nav-app/src/assets/config.json. The banner setting (default empty string) displays HTML content at the top of the page. The features array lists togglable features; setting enabled: false on a feature hides all of its control elements.
3. Anatomy of a Layer: The JSON Schema
The current specification is Version 4.5 of the layer file format. Field names are case-sensitive — techniqueID, not techniqueId.
| Field | Description |
|---|---|
name | Human-readable layer name |
versions | Object with attack, navigator, layer sub-fields |
domain | "enterprise-attack" | "mobile-attack" | "ics-attack" |
description | Free-text description of the layer |
techniques | Array of technique annotation objects |
gradient | Scoring gradient object |
legendItems | Array of legend entries |
filters | Platform/stage filter settings |
sorting | Integer 0–3 controlling sort order within tactics |
layout | Controls matrix display layout |
hideDisabled | Boolean — omit or grey-out disabled techniques |
metadata | Layer-level key/value metadata |
links | Layer-level link objects |
customDataURL | URL of a custom STIX bundle or ATT&CK Collection |
A minimal valid layer:
{
"name": "Detection Coverage Baseline",
"versions": {
"attack": "15",
"navigator": "5.3.2",
"layer": "4.5"
},
"domain": "enterprise-attack",
"description": "Blue-team detection posture",
"techniques": []
}The sorting field controls ordering within each tactic: 0 ascending by name, 1 descending by name, 2 ascending by score, 3 descending by score.

4. Building a Layer from Scratch (UI Walkthrough)
Open Navigator and select Create New Layer. Choose a domain (Enterprise, Mobile, or ICS) and an ATT&CK version — these become the domain and versions.attack fields. The matrix renders with every tactic as a column and techniques stacked beneath.
Use search to query by keyword, and multiselect to bulk-select techniques by platform, data source, or tactic. Selecting a technique highlights it; the right-click context menu and the technique controls bar apply annotations to the current selection. Expand a parent technique to reveal and individually annotate its sub-techniques (showSubtechniques: true).
This is the core discipline: select the techniques relevant to your engagement or coverage assessment, then annotate the selection rather than each cell one at a time.
5. Annotating Techniques: Colors, Scores, Comments, Metadata, and Links
Each object in the techniques array supports these fields:
| Field | Description |
|---|---|
techniqueID | Technique ID, e.g. "T1059" or sub-technique "T1059.001" |
tactic | Tactic identifier, e.g. "execution"; if absent, annotation applies under every tactic the technique belongs to |
score | Numeric score; if omitted the technique is “unscored” and gets no gradient color |
color | Explicit hex color — overrides any color implied by the score |
comment | Analyst comment; rendered as a tooltip with an underline indicator |
enabled | Boolean; false disables/hides the technique |
metadata | Array of user-defined key/value objects |
links | Array of label + url objects |
showSubtechniques | Boolean; expands sub-techniques in the view |
"techniques": [
{
"techniqueID": "T1078",
"color": "#fc3b3b"
},
{
"techniqueID": "T1059.001",
"tactic": "execution",
"score": 75,
"comment": "Script Block Logging on; no behavioral alert yet"
},
{
"techniqueID": "T1055",
"enabled": false,
"metadata": [
{ "name": "owner", "value": "detection-eng" },
{ "name": "ticket", "value": "DET-4412" }
]
}
]Scored techniques draw their fill color from the gradient. Define a red→yellow→green scale to read low coverage at a glance:
"gradient": {
"colors": ["#ff6666", "#ffe766", "#8ec843"],
"minValue": 0,
"maxValue": 100
}Make the scale legible to stakeholders with legendItems:
"legendItems": [
{ "label": "No Coverage", "color": "#ff6666" },
{ "label": "Logged Only", "color": "#ffe766" },
{ "label": "Alerted", "color": "#8ec843" }
]Use an explicit color for binary states (in-scope vs. out-of-scope), and score + gradient for graded coverage. Set enabled: false to grey out techniques irrelevant to the assessment so the heat-map stays readable.
6. Working with Pre-Built Threat Group Layers
ATT&CK publishes pre-built Navigator layers for documented threat groups. From any group’s page on attack.mitre.org, use the option to view or export the group’s technique usage as a Navigator layer — stored as a JSON file.
Import these as the baseline for adversary emulation planning: the group layer becomes the what they do, and your detection-coverage layer becomes the what you can see. Loading the group’s JSON via Open Existing Layer instantly highlights every technique attributed to that adversary across the matrix.
7. Combining Layers: Gap Analysis via Score Expressions
Layers compose. Create New Layer → Create Layer from Other Layers lets Navigator produce a calculated layer from arithmetic over loaded layers, which is how you build gap analysis without spreadsheets.
Each open layer is assigned a variable (a, b, c). Entering a score expression of a+b+c combines scores across three threat-group layers, surfacing technique overlap among multiple adversaries.
The high-value workflow for detection engineering: load the adversary group layer (a) and your detection-coverage layer (b), then evaluate b - a. Techniques the adversary uses but you cannot detect render with negative scores — these are your prioritized work items. Set sorting: 3 to float the highest-scored (or, inverted, the worst-gap) techniques to the top of each tactic.
{
"name": "Coverage Gap (b - a)",
"domain": "enterprise-attack",
"sorting": 3,
"gradient": {
"colors": ["#ff6666", "#ffffff", "#8ec843"],
"minValue": -100,
"maxValue": 100
}
}
8. Programmatic Layer Generation with Python
Author layers at scale with mitreattack-python. Query the STIX data for a named intrusion-set, collect the techniques tied to it, and serialize a v4.5 layer dict.
import json
from mitreattack.stixdata import MitreAttackData
mad = MitreAttackData("enterprise-attack.json")
group = mad.get_groups_by_alias("APT29")[0]
techniques = mad.get_techniques_used_by_group(group["id"])
annotations = []
for t in techniques:
attack_id = mad.get_attack_id(t["object"]["id"])
annotations.append({
"techniqueID": attack_id,
"score": 1,
"comment": "Attributed via STIX intrusion-set relationship"
})
layer = {
"name": f"{group['name']} TTPs",
"versions": {"attack": "15", "navigator": "5.3.2", "layer": "4.5"},
"domain": "enterprise-attack",
"description": "Auto-generated group layer",
"techniques": annotations,
"gradient": {"colors": ["#ffffff", "#fc3b3b"], "minValue": 0, "maxValue": 1}
}
with open("apt_layer.json", "w") as f:
json.dump(layer, f, indent=2)Generated JSON round-trips straight back into the UI via Open Existing Layer. Consuming a finished layer is equally simple — ingest it into reporting tooling and emit a Markdown gap table:
import json
with open("coverage_gap.json") as f:
layer = json.load(f)
print("| Technique | Score | Comment |")
print("|---|---|---|")
for t in layer["techniques"]:
print(f"| {t['techniqueID']} | {t.get('score','-')} | {t.get('comment','')} |")9. Exporting Layers: JSON, SVG, Excel, and Multi-Layer Bundles
Search and filter the matrix to the exact view you want, then export it.
| Export | Control | Use |
|---|---|---|
| JSON | “Code Blocks” download | Version control, pipeline ingestion |
| Excel | “Table View” export | Stakeholder spreadsheets |
| SVG | Camera icon | Report and CISO-deck renders |
| Multi-layer bundle | Download all open layers | Share a layer set as one file |
Embed a hosted layer directly in a report or internal portal with the layerURL query parameter:
<iframe
src="https://mitre-attack.github.io/attack-navigator/#layerURL=https://intranet.local/layers/coverage_gap.json"
width="100%" height="900" frameborder="0">
</iframe>10. Layer Versioning and Migration
The sub-techniques update replaced many techniques with sub-techniques carrying new IDs, so layers authored before that release may not render correctly in newer matrices. The official update-layers.py script both upgrades a layer to the latest format and remaps technique IDs to their replacers where possible.
python3 update-layers.py --input old_layer.json --output migrated_layer.jsonThe in-app layer upgrade wizard (added in v5.x alongside STIX 2.1 Collection Index and TAXII 2.1 support) walks changed techniques interactively: it lists each technique’s previous and current state with links to both versions. Enable show annotated techniques only to focus on your annotations, then copy them from the previous version to the current one.
11. Common Attacker Techniques
Navigator is a planning tool — the “techniques” it manipulates are ATT&CK TTPs encoded as techniqueID values. The table below shows representative primitives a red team maps post-engagement and a blue team scores for coverage.
| Technique | Description |
|---|---|
| Valid Accounts | Reuse of legitimate credentials; mapped as T1078 |
| PowerShell Execution | Script-based execution; mapped as T1059.001 |
| Process Injection | Code execution in another process; mapped as T1055 |
| OS Credential Dumping | LSASS access for credential theft; mapped as T1003.001 |
Each cell in Navigator links to the technique’s ATT&CK page, which exposes Data Sources, Detections, and Mitigations — use Navigator as the bridge into those fields, not the endpoint.
12. Defensive Strategies & Detection
The Navigator generates no telemetry; the defensive concern is twofold — layer-file OPSEC and translating scores into real detection.
Layer-file operational security:
– Layer JSON may contain red-team TTPs, engagement timelines, and detection-gap scoring. Do not upload sensitive layers to the public hosted instance.
– Hosted-instance uploads stay client-side, but run a self-hosted, access-controlled instance (auth proxy or VPN-only) for operational data.
– Version-control layers in Git with access controls equal to other sensitive operational documentation.
Translating scores to detection: a technique scored 0 in your coverage layer should map to a missing Sysmon rule, ETW subscription, or audit policy. Cross-reference each low-scored techniqueID against the ATT&CK page’s data sources. For T1059.001 (PowerShell): Sysmon Event ID 1 (Process Create), Event ID 4104 (Script Block Logging via the Microsoft-Windows-PowerShell ETW provider), and audit policy Audit Process Creation.
A Sigma rule sketch for the missing detection identified by a gap layer:
title: Suspicious PowerShell Script Block Execution
logsource:
product: windows
service: powershell
detection:
selection:
EventID: 4104
ScriptBlockText|contains:
- 'IEX'
- 'DownloadString'
- 'FromBase64String'
condition: selection
level: highOverlaying an adversary layer (a) against a coverage layer (b) with the score expression b - a surfaces negative-score techniques — adversary TTPs you cannot detect — as the highest-priority detection-engineering backlog.

13. Tools for Layer Analysis
| Tool | Description | Link |
|---|---|---|
| ATT&CK Navigator | Build/annotate/export technique layers | mitre-attack.github.io |
mitreattack-python | Query STIX data, generate layers programmatically | github.com |
update-layers.py | Migrate layers across ATT&CK versions | github.com |
| attack.mitre.org | Source of pre-built group layers + detection data | attack.mitre.org |
| Sysmon | Host telemetry to back coverage scores | learn.microsoft.com |
| Sigma | Portable detection rules for scored gaps | sigmahq.io |
14. MITRE ATT&CK Mapping
Navigator has no technique ID of its own — it is a blue/purple-team planning tool. Its ATT&CK relevance is the technique IDs you place inside layers and the detection guidance each one links to.
| Technique | MITRE ID | Detection |
|---|---|---|
| Valid Accounts | T1078 | Auth logs, anomalous logon (Event ID 4624) |
| PowerShell | T1059.001 | Sysmon Event ID 1, Event ID 4104 |
| Process Injection | T1055 | Sysmon Event ID 8, Event ID 10 |
| OS Credential Dumping: LSASS | T1003.001 | Sysmon Event ID 10 (lsass.exe access) |
Summary
- ATT&CK Navigator is the standard planning surface for threat-informed defense and adversary emulation — it visualizes coverage, it does not attack.
- Layers are v4.5-format JSON files scoped to one domain; per-technique fields (
techniqueID,score,color,comment,metadata,enabled) drive the heat-map. - Score expressions like
b - aturn adversary and coverage layers into automatic gap analysis, surfacing undetectable TTPs as detection-engineering work. - Generate layers programmatically with
mitreattack-python, migrate them withupdate-layers.py, and export to JSON, SVG, or Excel. - Treat layer files as sensitive: self-host with access control, version them in Git, and cross-reference every low score against real Sysmon/ETW/audit-policy detections.
Related Tutorials
- Mapping CTI Reports to ATT&CK TTPs: A Step-by-Step Methodology
- Introduction to MITRE ATT&CK: Structure, Tactics, Techniques, and Sub-Techniques
- APT Profiling: How to Build a Comprehensive Adversary Profile from Open-Source Intelligence
- Building a Red Team Lab: Infrastructure, VMs, and C2 Setup
- Cyber Threat Intelligence (CTI) Fundamentals: Sources, Types, and the Intelligence Lifecycle
References
- ATT&CK Navigator – Official GitHub Repository (mitre-attack/attack-navigator)
- ATT&CK Navigator USAGE.md – Building, Annotating & Exporting Layers
- ATT&CK Navigator Layer File Format Specification v4.5
- ATT&CK Navigator Layers README – Examples & Programmatic Generation
- MITRE ATT&CK – Adversary Emulation Plans (Official)
- MITRE ATT&CK – Getting Started: Adversary Emulation and Red Teaming
Introduction to MITRE ATT&CK: Structure, Tactics, Techniques, and Sub-Techniques
Objective: Understand what the MITRE ATT&CK knowledge base is, how it is structured — domains, matrices, tactics, techniques, sub-techniques, and procedures — and how defenders, threat hunters, and authorized red teamers use it as a shared operational language for threat-informed defense and adversary emulation.
1. What Is MITRE ATT&CK and Why It Matters
MITRE ATT&CK is a living, open-source knowledge base that documents real-world adversary tactics, techniques, and procedures (TTPs). It was created by the MITRE Corporation and first released in 2013. ATT&CK focuses on how attackers behave — the actions they take inside an environment — rather than on the indicators of compromise (IOCs) they leave behind.
This distinction matters. IOCs (hashes, IPs, domains) are brittle and disposable; an adversary rotates them cheaply. Behaviors — injecting code, dumping credentials, abusing valid accounts — are expensive to change. ATT&CK catalogs the durable behaviors, grounded in empirical evidence from intrusions observed across industries and geographies.
ATT&CK builds on the Lockheed Martin Cyber Kill Chain (Hutchins, Cloppert & Amin, 2011). The Matrix columns are ordered roughly along the chronological flow of an intrusion, but ATT&CK goes deeper, enumerating concrete mechanisms under each phase rather than naming abstract stages.
2. The Three Domains: Enterprise, Mobile, and ICS
ATT&CK is partitioned into three domains, each with its own matrices.
| Domain | Scope |
|---|---|
| Enterprise ATT&CK | Windows, Linux, macOS, and cloud platforms (Azure AD, Office 365, IaaS, SaaS) |
| Mobile ATT&CK | Threats targeting mobile devices and operating systems |
| ICS ATT&CK | Industrial control systems and operational technology |
This site focuses on Enterprise ATT&CK because it covers the Windows, Linux, and cloud surfaces most relevant to blue teams, DFIR, and authorized red teaming.
3. Tactics, Techniques, Sub-Techniques, and Procedures
The ATT&CK data model is a four-level hierarchy. Each level answers a different question.
| Component | Question | ID Format | Meaning |
|---|---|---|---|
| Tactic | Why | TA#### | The adversary’s tactical goal — the reason for an action |
| Technique | How | T#### | How the adversary achieves a tactical goal |
| Sub-technique | How (specific) | T####.### | A lower-level, more specific behavior |
| Procedure | What exactly | (described in text) | Real-world implementation by a named group, tool, or malware |
Tactics represent the “why.” Techniques represent the “how.” Sub-techniques describe a narrower variation. For example, the technique Account Manipulation (T1098) encompasses sub-techniques such as Additional Email Delegate Permissions (T1098.002) and Exchange Email Delegate Permissions (T1098.003), each detailing a distinct method.
Procedures are the real-world implementations — specific tools, malware families, or hands-on-keyboard methods observed in active campaigns. This is what makes ATT&CK actionable: you can study the actual tradecraft, not just the abstraction.

4. Walking the Enterprise Matrix: The 14 Tactics
The Matrix column headings are the tactics, presented in roughly chronological order. The cells under each column are the techniques that achieve that tactical objective. The baseline below reflects ATT&CK v16.1 (14 tactics, 203 techniques, 453 sub-techniques). For reference, v18 lists 14 tactics, 216 techniques, 475 sub-techniques, 44 mitigations, and over 1,700 analytics. Always pin counts to a version.
| # | Tactic | Tactic ID |
|---|---|---|
| 1 | Reconnaissance | TA0043 |
| 2 | Resource Development | TA0042 |
| 3 | Initial Access | TA0001 |
| 4 | Execution | TA0002 |
| 5 | Persistence | TA0003 |
| 6 | Privilege Escalation | TA0004 |
| 7 | Defense Evasion | TA0005 |
| 8 | Credential Access | TA0006 |
| 9 | Discovery | TA0007 |
| 10 | Lateral Movement | TA0008 |
| 11 | Collection | TA0009 |
| 12 | Command and Control | TA0011 |
| 13 | Exfiltration | TA0010 |
| 14 | Impact | TA0040 |
v19 note (April 2026): ATT&CK v19 introduced a major structural change — the Defense Evasion tactic (
TA0005) was split into two new tactics, Stealth and Defense Impairment.TA0005is deprecated in the current release. Retrieve the exact new tactic IDs and transition guidance fromattack.mitre.org/resources/updates/before mapping against v19.
5. Anatomy of a Technique Page
Every technique page is a structured record. Take T1059.001 — PowerShell (a sub-technique of T1059 Command and Scripting Interpreter, under Execution).
| Field | Example Value for T1059.001 |
|---|---|
| ID | T1059.001 (parent T1059) |
| Tactic(s) | Execution (TA0002) |
| Platforms | Windows |
| Permissions Required | User / Administrator (context-dependent) |
| Data Sources | Command, Process, Module, Script |
| Mitigations | Linked M#### objects |
| Procedure Examples | Named Groups and Campaigns observed using PowerShell |
A technique can belong to multiple tactics. The Detection section lists data source / data component pairs, free-text analytic notes, and — since v14 — structured pseudocode analytics from the MITRE Cyber Analytics Repository (CAR). These data-source fields tell you exactly which telemetry to collect.
6. Related Objects: Groups, Software, Campaigns, and Mitigations
ATT&CK is more than a list of behaviors. A graph of related objects ties techniques to threat intelligence.
| Object | Prefix | Description |
|---|---|---|
| Groups | G#### | Named threat actors (APTs, crimeware crews) mapped to techniques they use |
| Software | S#### | Tools, malware, and utilities used by adversaries |
| Campaigns | C#### | Intrusion activity over a time window with common targets; may or may not be attributed |
| Mitigations | M#### | Recommended defensive controls mapped to techniques |
| Data Sources / Components | — | Observable artifacts and telemetry that detect a technique |
This turns the Matrix into an operational tool: not just “T1056.001 exists,” but which group uses it, with what software, in which campaign, and which mitigations apply. The Group pages are the entry point for threat-actor-centric research and emulation planning.

7. Programmatic Access via STIX and the ATT&CK Python Library
ATT&CK is published as STIX 2.1 — the structured threat intelligence format from the OASIS CTI Technical Committee. In STIX, an intrusion-set object (Group) links to attack-pattern objects (techniques/sub-techniques), malware and tool objects (software), and campaign objects. MITRE distributes the bundles on GitHub.
The canonical library is mitreattack-python (github.com/mitre-attack/mitreattack-python). Load a bundle and query the data model directly.
from mitreattack.stix2 import MitreAttackData
mitre = MitreAttackData("enterprise-attack.json")
# List every technique under the Persistence tactic (TA0003)
for t in mitre.get_techniques_by_tactic("persistence", "enterprise-attack"):
print(mitre.get_attack_id(t.id), t.name)Fetch a single technique by its ATT&CK ID and inspect the schema fields:
tech = mitre.get_object_by_attack_id("T1059.001", "attack-pattern")
print(tech.name) # PowerShell
print(tech.x_mitre_platforms) # ['Windows']
for phase in tech.kill_chain_phases:
print(phase.phase_name) # executionWalk the relationship graph to list every Group observed using a technique:
for g in mitre.get_groups_using_technique(tech.id):
grp = g["object"]
print(mitre.get_attack_id(grp.id), grp.name, grp.aliases)The raw attack-pattern object behind that technique looks like this (trimmed and annotated):
{
"type": "attack-pattern",
"id": "attack-pattern--970a3432-3237-47ad-bcca-7d8cbb217736",
"name": "PowerShell",
"x_mitre_platforms": ["Windows"],
"x_mitre_is_subtechnique": true,
"kill_chain_phases": [
{ "kill_chain_name": "mitre-attack", "phase_name": "execution" }
],
"external_references": [
{
"source_name": "mitre-attack",
"external_id": "T1059.001",
"url": "https://attack.mitre.org/techniques/T1059/001"
}
]
}To stay current across releases, diff two STIX bundles to surface added or modified techniques:
# Illustrative: compare two domain bundles and emit a change report
from mitreattack.diffStix.changelog_helper import get_new_changelog_md
get_new_changelog_md(
old="enterprise-attack-16.1.json",
new="enterprise-attack-18.0.json",
domains=["enterprise-attack"],
markdown_file="attack-v16-to-v18-changes.md",
)8. The ATT&CK Navigator and Coverage Layers
The ATT&CK Navigator renders the Matrix as an interactive heat map. You assign scores and colors to techniques to build layers — coverage maps for detection engineering, gap analysis, and emulation scoping. Layers are JSON and version-controllable.
{
"name": "Detection Coverage - Execution & Persistence",
"versions": { "attack": "16", "navigator": "5.1.0", "layer": "4.5" },
"domain": "enterprise-attack",
"techniques": [
{ "techniqueID": "T1059.001", "score": 100, "color": "#31a354",
"comment": "Sysmon EID 1 + Script Block Logging" },
{ "techniqueID": "T1547.001", "score": 50, "color": "#fee08b",
"comment": "Partial registry telemetry" },
{ "techniqueID": "T1055", "score": 0, "color": "#de2d26",
"comment": "No process-injection detection" }
]
}Overlay an adversary’s known techniques (red) against your detection coverage (green) and the white space is your gap list.
9. Applying ATT&CK in Defense and Authorized Emulation
As a defender, map every SIEM alert and detection rule to a technique ID. Build Navigator layers to measure coverage, then prioritize engineering against the techniques most relevant to your threat model — threat-informed defense instead of blanket coverage.
As an authorized red teamer / adversary emulator, pull a Group page (e.g., a relevant APT), extract its technique set, and build a TTP-driven emulation plan. This is fundamentally different from vulnerability-based scoping: you exercise the behaviors the defense must catch. Tools like MITRE CALDERA and Atomic Red Team chain ATT&CK-mapped tests so blue and red teams speak the same IDs.

10. Common Attacker Techniques
The framework catalogs thousands of behaviors. A handful illustrate the model’s range and the important fact that one technique can serve multiple tactics.
| Technique | Description |
|---|---|
T1059.001 — PowerShell | Execute commands and scripts via the PowerShell interpreter |
T1566 — Phishing | Gain initial access through malicious messages |
T1078 — Valid Accounts | Abuse legitimate credentials across persistence, privesc, and evasion |
T1055 — Process Injection | Run code in another process’s address space to evade defenses |
T1003.001 — LSASS Memory | Dump credentials from lsass.exe |
T1547.001 — Registry Run Keys | Persist via autostart registry locations |
T1078 (Valid Accounts) is the teaching case: it appears under four tactics — Initial Access, Persistence, Privilege Escalation, and Defense Evasion — because the same behavior serves different adversary goals depending on context.
11. Defensive Strategies & Detection
Because ATT&CK is structural, the goal here is wiring it into your detection workflow. Each technique page lists Data Sources (e.g., Process, Command, Windows Registry, Network Traffic) and Data Components (e.g., Process Creation, Network Connection Creation). These map directly to telemetry you must collect.
On Windows, Sysmon supplies much of that telemetry.
| Sysmon Event ID | Description | Relevant To |
|---|---|---|
1 | Process Create | Execution (TA0002), Discovery (TA0007) |
3 | Network Connection | C2 (TA0011), Lateral Movement (TA0008) |
7 | Image Loaded (DLL) | Defense Evasion, Persistence |
8 | CreateRemoteThread | Process Injection (T1055.*) |
10 | ProcessAccess | Credential Access (T1003.001) |
11 | FileCreate | Persistence, staging |
12/13/14 | Registry Create/Modify | Registry persistence (T1547.001) |
22 | DNS Query | C2 (T1071.004) |
Sigma is the vendor-neutral detection format that carries ATT&CK IDs in its tags block, letting every rule trace back to a technique and tactic.
title: PowerShell EncodedCommand Execution
logsource:
product: windows
service: sysmon
detection:
selection:
EventID: 1
Image|endswith: '\powershell.exe'
CommandLine|contains:
- '-enc'
- '-EncodedCommand'
condition: selection
tags:
- attack.execution # tactic name (lowercase)
- attack.t1059.001 # sub-technique ID (lowercase)
level: mediumMitigations use M#### IDs (verify against attack.mitre.org/mitigations/enterprise/ before citing in production):
| Mitigation | Description |
|---|---|
M1038 | Execution Prevention (application control) |
M1042 | Disable or Remove Feature or Program |
M1049 | Antivirus / Anti-malware |
M1026 | Privileged Account Management |
12. Tools for ATT&CK Analysis
| Tool | Description | Link |
|---|---|---|
| ATT&CK Navigator | Heat-map and coverage layers | mitre-attack.github.io/attack-navigator |
mitreattack-python | Canonical STIX query library | github.com/mitre-attack |
| ATT&CK Workbench | Self-hosted ATT&CK extension/editing | attack.mitre.org |
| MITRE CALDERA | Automated adversary emulation | caldera.mitre.org |
| Atomic Red Team | Small, ATT&CK-mapped tests | atomicredteam.io |
| Sysmon | Windows telemetry for detection | learn.microsoft.com |
| Sigma | Vendor-neutral detection rules | sigmahq.io |
13. MITRE ATT&CK Mapping
Every other tutorial on this site closes with a mapping table. Read it as technique → tactic → context. This is the worked example.
| Technique ID | Name | Tactic(s) | Notes |
|---|---|---|---|
T1059 | Command and Scripting Interpreter | Execution (TA0002) | Parent technique; multiple sub-techniques |
T1059.001 | PowerShell | Execution (TA0002) | Sub-technique used throughout this tutorial |
T1566 | Phishing | Initial Access (TA0001) | Pre-execution delivery technique |
T1078 | Valid Accounts | Initial Access (TA0001), Persistence (TA0003), Privilege Escalation (TA0004), Defense Evasion (TA0005) | One technique, four tactics |
T1055 | Process Injection | Privilege Escalation (TA0004), Defense Evasion (TA0005) | Parent with many sub-techniques |
14. Summary
- MITRE ATT&CK is a behavior-based, empirically grounded knowledge base of adversary TTPs — not an IOC feed.
- The data model is a hierarchy: tactics (why,
TA####) → techniques (how,T####) → sub-techniques (T####.###) → procedures (real-world instances). - Related objects — Groups (
G####), Software (S####), Campaigns (C####), Mitigations (M####) — turn the Matrix into an operational, intelligence-led tool. - Pin counts and structure to a specific version; v19 (April 2026) split Defense Evasion (
TA0005) into Stealth and Defense Impairment — confirm the new IDs atattack.mitre.org/resources/updates/. - Operationalize ATT&CK by mapping data sources to Sysmon telemetry, tagging Sigma rules with technique IDs, and tracking coverage in Navigator layers for both detection engineering and authorized emulation.
Related Tutorials
- Mapping CTI Reports to ATT&CK TTPs: A Step-by-Step Methodology
- Navigating ATT&CK Navigator: Building, Annotating, and Exporting Technique Layers
- APT Profiling: How to Build a Comprehensive Adversary Profile from Open-Source Intelligence
- Cyber Threat Intelligence (CTI) Fundamentals: Sources, Types, and the Intelligence Lifecycle
- Threat-Informed Defense: Principles, Frameworks, and the Intelligence-Driven Security Cycle
References
- MITRE ATT&CK® – Getting Started (Official Resources Overview)
- Enterprise Tactics – MITRE ATT&CK®
- Enterprise Techniques – MITRE ATT&CK®
- Adversary Emulation Plans – MITRE ATT&CK®
- ATT&CK Adversary Emulation & Red Teaming – MITRE ATT&CK® Get Started
- MITRE ATT&CK: Design and Philosophy (Official PDF – Strom et al.)