APT Profiling: How to Build a Comprehensive Adversary Profile from Open-Source Intelligence

Objective: Learn how to systematically collect, structure, and operationalize open-source intelligence into a complete, ATT&CK-mapped adversary profile — a defensible dossier that drives realistic adversary emulation, detection-gap analysis, and threat-informed defense.


1. What Is an Adversary Profile and Why Build One

An adversary profile is a structured dossier describing who a threat actor is, what they target, how they operate, and which tools and infrastructure they favor — all normalized to a shared taxonomy. It is the durable opposite of an IOC-only feed.

An IOC feed gives you hashes and IP addresses that expire in days. A profile captures the actor’s tactics, techniques, and procedures (TTPs), which change slowly and cost the adversary real effort to alter. A finished profile is the source artifact for three downstream activities:

  • Adversary emulation — sequencing a real group’s TTPs into a test plan.
  • Detection engineering — overlaying the profile against your sensor coverage to find gaps.
  • Risk communication — translating actor capability and intent for leadership.

Threat intelligence comes in four flavors, and a good profile feeds all of them: strategic (executive risk), tactical (SOC TTPs), operational (incident-response context), and technical (machine-readable indicators).


2. The Intelligence Lifecycle Applied to APT Profiling

Cyber threat intelligence is produced through a six-phase lifecycle. Profiling is just this lifecycle scoped to a single actor.

PhaseProfiling Activity
Planning / DirectionDefine the intelligence requirement: “Which APT threatens our sector, and can we detect its TTPs?”
CollectionGather vendor reports, advisories, passive DNS, malware samples
ProcessingNormalize raw reports; extract candidate TTPs and IOCs
AnalysisMap to ATT&CK, assess confidence, resolve naming conflicts
DisseminationPublish as STIX bundle, Navigator layer, and emulation plan
FeedbackRefine the profile as new reporting and red-team results arrive

Start with an explicit Priority Intelligence Requirement (PIR) or Request for Information (RFI). Without a scoped question, collection sprawls and the profile never converges.


3. Analytical Frameworks: Diamond Model, Kill Chain, and ATT&CK

Three frameworks provide complementary lenses. Use all three — they are not interchangeable.

FrameworkRole in APT Profiling
MITRE ATT&CKMaps observed TTPs to a standardized taxonomy for comparison and emulation
Cyber Kill Chain (Lockheed Martin)Sequences behaviors across reconnaissance, weaponization, delivery, exploitation, installation, command and control, and actions on objectives
Diamond ModelRelates the four core intrusion elements: Adversary, Infrastructure, Capability, Victim

The Diamond Model is the pivoting engine. Each intrusion event has four interconnected vertices, and the relationships between them drive investigation. The adversary–infrastructure edge reveals how operators stand up C2; the victim–capability edge exposes which tooling is used against which target. Unlike the sequential Kill Chain, the Diamond Model excels at attribution and visualizing relationships — pivot from a known malware sample to the infrastructure that served it, then to other victims of the same infrastructure.

ATT&CK then supplies the granular vocabulary that makes those pivots comparable across reports and across teams.


Diamond Model vertices (Adversary, Infrastructure, Capability, Victim) interconnected with edges, annotated with Kill Chain sequencing and ATT&CK TTP taxonomy as complementary overlays
The Diamond Model drives adversary-infrastructure pivoting, the Kill Chain orders the attack sequence, and ATT&CK supplies the precise technique vocabulary — all three are required for a complete profile.

4. OSINT Collection: Primary Source Taxonomy

OSINT spans news media, social media, public records, government publications, academic research, commercial data, and the deep/dark web. For APT profiling, prioritize these primary source classes and score each for reliability.

Source TypeDescription
Vendor threat reportsMandiant, CrowdStrike Intelligence, Microsoft MSTIC, Secureworks CTU, Elastic Security Labs, SpecterOps
Government advisoriesCISA advisories (often with embedded ATT&CK mappings), NSA/CISA joint advisories, FBI Flash
MITRE ATT&CK GroupsCurated, attributed group profiles at attack.mitre.org/groups/
Malware repositoriesVirusTotal, MalwareBazaar, Hybrid Analysis for tooling attribution
Infrastructure / passive DNSShodan, Censys, DomainTools, WHOIS/RDAP, certificate transparency logs
Code repositoriesGitHub/GitLab for leaked tooling and infrastructure-as-code patterns

Infrastructure pivoting is largely passive. The example below queries Shodan for hosts matching a documented C2 fingerprint — a benign illustration of the adversary–infrastructure edge.

import shodan

API_KEY = "YOUR_API_KEY"      # placeholder — never commit real keys
api = shodan.Shodan(API_KEY)

# Pivot on a publicly documented C2 framework fingerprint
query = 'product:"Cobalt Strike Beacon" ssl.cert.subject.CN:"example-c2.test"'
results = api.search(query)

for host in results["matches"]:
    print(host["ip_str"], host.get("port"), host.get("org"))

Rate every source with the Admiralty Code: source reliability (A–F) and information credibility (1–6). A single vendor blog is B2 at best; corroboration across two independent vendors plus a government advisory raises confidence.


5. Building the Adversary Dossier

Capture the profile in a fixed schema so that every actor is described the same way and TTP heatmaps are comparable. Use this template as your reference document.

FieldContent
Actor IDCanonical tracker (e.g., ATT&CK G0016)
AliasesAssociated group names and vendor designations
NexusSuspected country of origin / state sponsorship
MotivationEspionage, financial, ideological, destructive
Active SinceFirst reported activity date
TargetingSectors, geographies, victim profile
ToolingMalware families and offensive tools
Infrastructure PatternsRegistrar habits, ASN clusters, cert reuse, C2 conventions
ATT&CK TechniquesNormalized technique-ID list with frequency
IOCsHashes, domains, IPs (with confidence and decay date)
ConfidenceAdmiralty rating per claim
SourcesCited reports with retrieval dates

ATT&CK’s Group object aligns directly with several of these fields, so anchor your dossier to it.

FieldDescription
Group IDUnique identifier (e.g., G0016 for APT29)
Associated GroupsPublicly reported overlapping names (formerly “Aliases”)
DescriptionActivity dates, suspected attribution, targeted industries
Techniques UsedTechniques with a note on how the group used each
SoftwareMalware and tool families attributed to the group
CampaignsNamed, time-bounded intrusion clusters

ATT&CK currently tracks 176 groups, each with attribution, targeted geographies, and targeted sectors.


Hierarchical diagram showing an Adversary Profile root node branching into six structured fields: Identity and Attribution, Targeting, ATT&CK TTP Heatmap, Tools and Malware, Infrastructure Patterns, and Admiralty Confidence Rating
A fixed dossier schema ensures every actor profile shares the same structure, making TTP heatmaps and coverage gap analyses directly comparable across groups.

6. ATT&CK Mapping: Extracting and Normalizing Techniques

Follow CISA’s Best Practices for MITRE ATT&CK Mapping: read the report, find the behavior, then map to the most specific technique the evidence supports. The cardinal sin is over-mapping — claiming a sub-technique when the text only justifies a tactic.

A conceptual keyword-to-technique pass illustrates semi-automated extraction. This is not a production NLP classifier; treat it as a triage aid that an analyst validates.

import json

# Local ATT&CK Enterprise snapshot (STIX bundle) loaded for ID validation
with open("enterprise-attack.json") as f:
    bundle = json.load(f)

# Illustrative keyword -> technique lookup, manually curated
keyword_map = {
    "spearphishing attachment": "T1566.001",
    "powershell":               "T1059.001",
    "wmi":                      "T1047",
    "scheduled task":          "T1053.005",
    "lsass":                   "T1003.001",
}

report = """The actor sent a spearphishing attachment, used PowerShell to
run a loader, registered a scheduled task for persistence, and dumped
credentials from LSASS."""

report_l = report.lower()
hits = sorted({tid for kw, tid in keyword_map.items() if kw in report_l})
print(hits)   # ['T1003.001', 'T1053.005', 'T1059.001', 'T1566.001']

Every machine-suggested ID gets human confirmation against the report sentence before it enters the profile.


7. Querying ATT&CK Group Data Programmatically

MITRE publishes ATT&CK as STIX. Pull a group’s techniques directly with mitreattack-python rather than scraping the website.

from mitreattack.stix20 import MitreAttackData

mitre = MitreAttackData("enterprise-attack.json")

# Resolve the documented group by alias (use real, attributed groups only)
group = mitre.get_groups_by_alias("APT29")[0]   # G0016

techniques = mitre.get_techniques_used_by_group(group.id)
for entry in techniques:
    tech = entry["object"]
    attack_id = mitre.get_attack_id(tech.id)
    print(attack_id, tech.name)

You can also reach the live TAXII 2.1 server and walk the relationship graph yourself — pivoting intrusion-setusesattack-pattern.

from taxii2client.v21 import Server
from stix2 import TAXIICollectionSource, Filter

server = Server("https://attack-taxii.mitre.org/api/v21/")
collection = server.api_roots[0].collections[0]   # Enterprise ATT&CK
src = TAXIICollectionSource(collection)

group = src.query([Filter("type", "=", "intrusion-set"),
                   Filter("name", "=", "APT29")])[0]

for rel in src.relationships(group.id, "uses", source_only=True):
    if rel.target_ref.startswith("attack-pattern"):
        print(src.get(rel.target_ref).name)

8. ATT&CK Navigator Layers and Coverage Gap Analysis

The ATT&CK Navigator renders technique sets as a heatmap. Export a group’s techniques as a layer JSON, score each by observed frequency, and drag the file into the Navigator web app. Below is a v4 layer for a documented group.

{
  "name": "G0016 APT29 - Observed TTPs",
  "versions": { "attack": "14", "navigator": "4.9.1", "layer": "4.5" },
  "domain": "enterprise-attack",
  "techniques": [
    { "techniqueID": "T1566.001", "score": 5, "color": "#fc3b3b",
      "comment": "Spearphishing attachment - multiple campaigns" },
    { "techniqueID": "T1059.001", "score": 4, "color": "#fc6b3b",
      "comment": "PowerShell loaders" },
    { "techniqueID": "T1003.001", "score": 3, "color": "#fc9d3b",
      "comment": "LSASS credential access" }
  ],
  "gradient": {
    "colors": ["#ffffff", "#fc3b3b"], "minValue": 0, "maxValue": 5
  }
}

The power move is layer arithmetic: load the actor layer and your team’s detection coverage layer, then compute their difference. Techniques the actor uses that your sensors do not cover are your prioritized hardening backlog. Overlaying two actor layers instead reveals shared TTPs worth emulating once to cover multiple threats.


9. Structuring the Profile in STIX 2.1

To make the profile machine-readable and shareable over TAXII, serialize it as STIX. Platforms such as MISP, OpenCTI, ThreatConnect, and Anomali ThreatStream ingest this directly.

STIX SDOMaps To
threat-actorActor identity, aliases, motivation, sophistication
intrusion-setNamed activity cluster (e.g., “APT29”)
attack-patternAn ATT&CK technique via external_references
malwareFamily with malware_types, is_family
toolLegitimate software used offensively
campaignA time-bounded activity cluster
indicatorA STIX pattern, e.g. [file:hashes.'SHA-256' = '...']
relationshipLinks SDOs (uses, attributed-to)
{
  "type": "bundle", "id": "bundle--6f3a...",
  "objects": [
    { "type": "intrusion-set", "spec_version": "2.1",
      "id": "intrusion-set--1a2b...", "name": "APT29",
      "aliases": ["Cozy Bear"] },
    { "type": "attack-pattern", "spec_version": "2.1",
      "id": "attack-pattern--3c4d...", "name": "Spearphishing Attachment",
      "external_references": [
        { "source_name": "mitre-attack", "external_id": "T1566.001" } ] },
    { "type": "malware", "spec_version": "2.1",
      "id": "malware--5e6f...", "name": "WELLMESS",
      "is_family": true, "malware_types": ["backdoor"] },
    { "type": "relationship", "spec_version": "2.1",
      "id": "relationship--7a8b...", "relationship_type": "uses",
      "source_ref": "intrusion-set--1a2b...",
      "target_ref": "attack-pattern--3c4d..." }
  ]
}

10. The Pyramid of Pain and Attribution Confidence

David Bianco’s Pyramid of Pain (2013) explains why TTP-based profiling outlasts IOC-based profiling. From the bottom (trivial for the adversary to change) to the top (expensive and painful):

  • Hash values → trivially recompiled
  • IP addresses → rotated in minutes
  • Domain names → re-registered cheaply
  • Network/host artifacts → moderate effort
  • Tools → significant rework
  • TTPs → the adversary must relearn how they operate

Profiling for the top of the pyramid forces the adversary to change behavior, not just infrastructure. That is the entire defensive case for TTP-centric profiles.

Treat attribution skeptically. Multiple vendors track overlapping activity under different names, and their group boundaries may disagree. Record an explicit confidence rating (Admiralty Code or an Assessed/Confirmed scale) per claim, and never collapse two vendor clusters into “the same actor” without corroboration.


Pyramid of Pain hierarchy from Hash Values at the base through IP Addresses, Domain Names, Artifacts, and Tools up to TTPs at the apex, with edge labels indicating the adversary cost to change each indicator type
Profiling for the apex of the Pyramid forces adversaries to change how they operate, not just which infrastructure they use — the core defensive argument for TTP-centric intelligence.

11. From Profile to Emulation Plan

The finished profile drives an emulation plan in the style of the CTID Adversary Emulation Library. Translate the TTP heatmap into a prioritized, sequenced scenario:

  • Sequence techniques along the Kill Chain — initial access, execution, persistence, credential access, exfiltration.
  • Prioritize by impact, current detection coverage (from the Navigator gap analysis), and business relevance.
  • Constrain the plan to documented behaviors; emulate procedures, not improvised tradecraft.

The output is a runnable, scoped test that exercises exactly the techniques your real adversary uses — and validates the detections you built from the same profile.


Left-to-right flow diagram from OSINT Collection through Adversary Dossier and STIX Serialization to Navigator Gap Analysis, then Emulation Plan and Detection Validation
The finished adversary profile feeds two parallel downstream pipelines — machine-readable STIX for TIP ingestion, and a Navigator gap layer that directly sequences the emulation test plan.

12. Common Attacker Techniques

A profile must capture what the adversary does during its own reconnaissance and resource development — the pre-attack behaviors you study and emulate.

TechniqueDescription
Gather identity informationHarvest credentials, emails, employee names (T1589)
Gather network informationEnumerate DNS, IP ranges, topology (T1590)
Gather org informationIdentify roles, business tempo, relationships (T1591)
Gather host informationFingerprint software, hardware, configs (T1592)
Search open websitesSocial media, search engines, code repos (T1593)
Active scanningPort, vulnerability, wordlist scanning (T1595)
Acquire / develop capabilitiesRegister infra, build or buy tooling (T1583, T1587, T1588)

13. Defensive Strategies & Detection

Profiling cuts both ways: detect adversaries profiling you, and validate coverage against a finished profile. Correlate weak recon signals across categories — perimeter scanning (T1595), web fingerprinting (T1592), and email harvesting (T1589) together indicate targeted pre-attack planning.

Detection AreaSpecifics
Web server logsScanner user-agents (Masscan, ZGrab); sequential 404 bursts (T1595.003)
DNS monitoringAXFR zone-transfer attempts; unusual PTR sweeps (T1590.002)
HoneytokensPlanted career-page emails that fire on first contact (T1589.002)
Cert TransparencyAlerts on lookalike-domain issuance (T1583/T1584)
Identity logsEvent ID 4624 correlated with 4662 for LDAP/AD enumeration

Host-based recon once inside is visible to Sysmon: Event ID 1 (Process Create) catches nslookup, nltest, net view; Event ID 3 (Network Connection) surfaces internal scanning; Event ID 22 (DNS Query) enumerates lookups. Enable Audit Directory Service Access and command-line auditing (4688).

title: Domain Trust and Group Reconnaissance via Built-in Tools
logsource:
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 1
    CommandLine|contains:
      - 'nltest /domain_trusts'
      - 'net group "domain admins"'
      - 'net view /domain'
  condition: selection
level: medium

Centralize network, endpoint, identity, and threat-intel telemetry into one analytics platform, and ingest the profile’s STIX into a TIP (MISP/OpenCTI) so IOCs correlate against live data automatically. Reduce your OSINT attack surface: prune public DNS records, enable WHOIS privacy, and strip version banners.


14. Tools for Adversary Profiling

ToolDescriptionLink
MITRE ATT&CK NavigatorTechnique heatmaps and layer arithmeticmitre-attack.github.io
mitreattack-pythonProgrammatic ATT&CK STIX queriesgithub.com
MISPThreat-intel platform, STIX/TAXII ingestionmisp-project.org
OpenCTIKnowledge graph for actors and TTPsopencti.io
Shodan / CensysPassive internet asset discoveryshodan.io
DomainTools / RDAPWHOIS and passive DNS pivotingdomaintools.com
VirusTotal / MalwareBazaarTooling attribution from samplesvirustotal.com

15. MITRE ATT&CK Mapping

TechniqueMITRE IDDetection
Gather Victim Identity InformationT1589Honeytoken email triggers; phishing telemetry
Email AddressesT1589.002Planted-address alerting
Gather Victim Network InformationT1590AXFR / PTR sweep monitoring
DNST1590.002Microsoft-Windows-DNS-Client ETW
Gather Victim Org InformationT1591LinkedIn exposure review
Gather Victim Host InformationT1592Web fingerprinting in server logs
Search Open Websites/DomainsT1593Code-repo secret scanning
Search Victim-Owned WebsitesT1594Anomalous crawl patterns
Active ScanningT1595Perimeter scan / 404 burst detection
Acquire InfrastructureT1583Cert Transparency lookalike alerts
Compromise InfrastructureT1584Passive DNS pivoting
Develop / Obtain CapabilitiesT1587 / T1588Malware-repo attribution

Summary

  • An adversary profile is a structured, ATT&CK-mapped dossier of actor identity, targeting, tooling, and TTPs — the durable artifact IOC feeds cannot replace.
  • Run the six-phase intelligence lifecycle and fuse three frameworks: the Diamond Model for pivoting, the Kill Chain for sequencing, and ATT&CK for the TTP taxonomy.
  • Collect from vendor reports, government advisories, passive DNS, and malware repositories — and score every source with the Admiralty Code.
  • Serialize the result as STIX 2.1 and a Navigator layer so it feeds TIPs, gap analysis, and CTID-style emulation plans.
  • Detect adversaries profiling you with correlated recon signals — Sysmon Event IDs 1/3/22, honeytokens, and Cert Transparency monitoring — and profile for the top of the Pyramid of Pain, where changing TTPs costs the adversary the most.

Related Tutorials

References

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.

DomainScope
Enterprise ATT&CKWindows, Linux, macOS, and cloud platforms (Azure AD, Office 365, IaaS, SaaS)
Mobile ATT&CKThreats targeting mobile devices and operating systems
ICS ATT&CKIndustrial 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.

ComponentQuestionID FormatMeaning
TacticWhyTA####The adversary’s tactical goal — the reason for an action
TechniqueHowT####How the adversary achieves a tactical goal
Sub-techniqueHow (specific)T####.###A lower-level, more specific behavior
ProcedureWhat 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.


Hierarchical diagram showing the four-level ATT&CK data model: Tactic at the top, branching down through Technique and Sub-Technique to Procedure, with T1098 Account Manipulation as a concrete example
The ATT&CK data model flows from abstract tactical goals down to specific real-world procedures, each level answering a progressively narrower question about adversary behavior.

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.

#TacticTactic ID
1ReconnaissanceTA0043
2Resource DevelopmentTA0042
3Initial AccessTA0001
4ExecutionTA0002
5PersistenceTA0003
6Privilege EscalationTA0004
7Defense EvasionTA0005
8Credential AccessTA0006
9DiscoveryTA0007
10Lateral MovementTA0008
11CollectionTA0009
12Command and ControlTA0011
13ExfiltrationTA0010
14ImpactTA0040

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. TA0005 is deprecated in the current release. Retrieve the exact new tactic IDs and transition guidance from attack.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).

FieldExample Value for T1059.001
IDT1059.001 (parent T1059)
Tactic(s)Execution (TA0002)
PlatformsWindows
Permissions RequiredUser / Administrator (context-dependent)
Data SourcesCommand, Process, Module, Script
MitigationsLinked M#### objects
Procedure ExamplesNamed 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.

ObjectPrefixDescription
GroupsG####Named threat actors (APTs, crimeware crews) mapped to techniques they use
SoftwareS####Tools, malware, and utilities used by adversaries
CampaignsC####Intrusion activity over a time window with common targets; may or may not be attributed
MitigationsM####Recommended defensive controls mapped to techniques
Data Sources / ComponentsObservable 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.


Graph diagram showing how ATT&CK related objects — Groups, Campaigns, Software, and Mitigations — interconnect around central Technique nodes, forming an operational threat intelligence web
ATT&CK’s related objects transform isolated technique IDs into an intelligence graph, linking threat actors, their tooling, active campaigns, and applicable defensive controls.

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)      # execution

Walk 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.


Flow diagram illustrating the threat-informed defense workflow: from ATT&CK Group pages through TTP extraction to parallel red-team emulation planning and blue-team detection engineering, converging on a Navigator coverage layer
Both red and blue teams start from the same ATT&CK Group profile, ensuring emulation exercises and detection rules address the same adversary behaviors and share a common technique-ID language.

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.

TechniqueDescription
T1059.001 — PowerShellExecute commands and scripts via the PowerShell interpreter
T1566 — PhishingGain initial access through malicious messages
T1078 — Valid AccountsAbuse legitimate credentials across persistence, privesc, and evasion
T1055Process InjectionRun code in another process’s address space to evade defenses
T1003.001 — LSASS MemoryDump credentials from lsass.exe
T1547.001 — Registry Run KeysPersist 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 IDDescriptionRelevant To
1Process CreateExecution (TA0002), Discovery (TA0007)
3Network ConnectionC2 (TA0011), Lateral Movement (TA0008)
7Image Loaded (DLL)Defense Evasion, Persistence
8CreateRemoteThreadProcess Injection (T1055.*)
10ProcessAccessCredential Access (T1003.001)
11FileCreatePersistence, staging
12/13/14Registry Create/ModifyRegistry persistence (T1547.001)
22DNS QueryC2 (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: medium

Mitigations use M#### IDs (verify against attack.mitre.org/mitigations/enterprise/ before citing in production):

MitigationDescription
M1038Execution Prevention (application control)
M1042Disable or Remove Feature or Program
M1049Antivirus / Anti-malware
M1026Privileged Account Management

12. Tools for ATT&CK Analysis

ToolDescriptionLink
ATT&CK NavigatorHeat-map and coverage layersmitre-attack.github.io/attack-navigator
mitreattack-pythonCanonical STIX query librarygithub.com/mitre-attack
ATT&CK WorkbenchSelf-hosted ATT&CK extension/editingattack.mitre.org
MITRE CALDERAAutomated adversary emulationcaldera.mitre.org
Atomic Red TeamSmall, ATT&CK-mapped testsatomicredteam.io
SysmonWindows telemetry for detectionlearn.microsoft.com
SigmaVendor-neutral detection rulessigmahq.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 IDNameTactic(s)Notes
T1059Command and Scripting InterpreterExecution (TA0002)Parent technique; multiple sub-techniques
T1059.001PowerShellExecution (TA0002)Sub-technique used throughout this tutorial
T1566PhishingInitial Access (TA0001)Pre-execution delivery technique
T1078Valid AccountsInitial Access (TA0001), Persistence (TA0003), Privilege Escalation (TA0004), Defense Evasion (TA0005)One technique, four tactics
T1055Process InjectionPrivilege 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 at attack.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

References