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

Mapping CTI Reports to ATT&CK TTPs: A Step-by-Step Methodology

Objective: Learn to parse a real-world cyber threat intelligence (CTI) report and systematically translate its narrative behaviors into precise MITRE ATT&CK tactics, techniques, and sub-techniques — producing an accurate, reusable TTP layer that drives detection engineering, threat hunting, and adversary emulation planning.


1. Why TTP Mapping Matters More Than IOCs

Traditional Indicators of Compromise (IOCs) — hashes, IP addresses, domains — are brittle. An adversary rotates infrastructure and recompiles payloads cheaply, so a hash-based detection expires the moment the campaign moves. Tactics, Techniques, and Procedures (TTPs) describe behavior, which is far costlier for an adversary to change. Re-tooling how you dump LSASS or beacon over HTTPS is expensive; swapping a C2 IP is trivial.

MITRE ATT&CK encodes this behavioral layer into a shared vocabulary. When you map a CTI report to ATT&CK, you convert prose (“the actor ran an encoded PowerShell loader”) into a stable, machine-referenceable identifier (T1059.001) that every tool, team, and report understands. That identifier outlives the campaign and feeds detection, hunting, and emulation directly.


2. ATT&CK Architecture: Tactics, Techniques, Sub-techniques, and Procedures

ATT&CK is a knowledge base of adversary behavior built on three structural levels.

LevelDescription
TacticThe adversary’s why — the tactical goal (e.g., TA0001 Initial Access, TA0002 Execution).
TechniqueThe how — a specific behavior used to achieve a tactical goal; one step in a string of activity completing the mission.
Sub-techniqueA more granular description of a technique. T1003 OS Credential Dumping has sub-techniques such as T1003.001 LSASS Memory.

A procedure is the real-world, in-the-wild instance of a technique — the exact way a named group performed it. Procedures appear on each technique page as cited examples.

The 14 Enterprise Tactics

Tactic IDName
TA0043Reconnaissance
TA0042Resource Development
TA0001Initial Access
TA0002Execution
TA0003Persistence
TA0004Privilege Escalation
TA0005Defense Evasion
TA0006Credential Access
TA0007Discovery
TA0008Lateral Movement
TA0009Collection
TA0011Command and Control
TA0010Exfiltration
TA0040Impact

Technique IDs follow the T#### convention; sub-techniques append .### (e.g., T1021, T1059.003). These identifiers standardize communication across detection engineering, intelligence reporting, and red team planning. ATT&CK is versioned — IDs can be deprecated or renumbered across major releases — so always verify against the live matrix at attack.mitre.org.


Hierarchy diagram showing ATT&CK structural levels: Tactic at top, descending through Technique, Sub-technique, and Procedure
ATT&CK’s four structural levels — from the adversary’s strategic goal down to a specific, cited real-world behavior.

3. Sourcing and Preparing a CTI Report for Analysis

CTI arrives at three altitudes. Strategic intelligence describes who and why at a board level. Operational intelligence describes campaign-level capability and intent. Tactical intelligence — vendor incident reports, CISA advisories, ISAC bulletins, OSINT write-ups — describes the granular actions you can actually map.

A report is mappable when it describes what the adversary did, not just what it was. Strip attribution bias: the goal is behavior, not a flag. Before mapping, read the full report once end-to-end, then segment the narrative into discrete adversary actions. Each action is a candidate for one or more ATT&CK techniques.


4. The Four-Step Mapping Methodology

CISA’s Best Practices for MITRE ATT&CK Mapping defines a canonical four-step loop. Run it once per behavior.

  1. Identify the behavior — extract what the adversary did from the narrative, quoting the source verbatim.
  2. Research the behavior — understand the technical action being described; resolve vendor jargon to a concrete mechanism.
  3. Translate the behavior into a tactic — identify the adversary’s goal (the why).
  4. Identify the technique and sub-technique — match the how against the matrix.

Worked example. Take the narrative: “The actor delivered a spearphishing attachment, then executed an obfuscated PowerShell loader and accessed LSASS memory with a renamed procdump binary.”

BehaviorTacticTechnique
Spearphishing attachmentTA0001 Initial AccessT1566.001
Obfuscated PowerShell loaderTA0002 Execution + TA0005 Defense EvasionT1059.001, T1027
LSASS access via procdumpTA0006 Credential AccessT1003.001

Automation helps the first pass. The script below surfaces candidate tactics from raw text — a triage aid, never a final answer.

# First-pass triage only — surfaces CANDIDATE tactics for manual review.
TACTIC_KEYWORDS = {
    "TA0001": ["phishing", "spearphishing", "supply chain", "exploited public"],
    "TA0002": ["powershell", "executed", "ran script", "command interpreter"],
    "TA0005": ["obfuscated", "base64", "encoded", "disabled logging"],
    "TA0006": ["lsass", "credential", "dumped", "mimikatz"],
    "TA0011": ["beacon", "c2", "https post", "command and control"],
}

def candidate_tactics(report_text: str):
    text = report_text.lower()
    return {ta: [w for w in words if w in text]
            for ta, words in TACTIC_KEYWORDS.items()
            if any(w in text for w in words)}

excerpt = ("The actor used a spearphishing attachment, then ran an "
           "obfuscated PowerShell loader and dumped LSASS memory.")
for ta, words in candidate_tactics(excerpt).items():
    print(ta, "->", words)

If a sub-technique is not easily identifiable — and there may not be one in every case — review the procedure examples on the technique page. They link the source CTI reports behind the original mapping and may affirm your choice or suggest an alternative. There is always a possibility a behavior is a new technique not yet covered in ATT&CK.


Flow diagram of the four-step CTI-to-ATT&CK mapping loop: Identify, Research, Translate to Tactic, Match Technique, feeding into a worksheet and looping to the next behavior
The CISA-recommended mapping loop runs once per discrete adversary behavior, producing an auditable worksheet entry each cycle.

5. Disambiguation: Choosing the Right Technique When Multiple Apply

Ambiguity is the hard part. One behavior frequently maps to several tactics. T1078 Valid Accounts spans Initial Access (TA0001), Persistence (TA0003), Privilege Escalation (TA0004), and Defense Evasion (TA0005) — the correct tactic depends on what the account was used for in that step, not the account itself.

Rules of thumb:

  • Map to the tactic that matches the adversary’s goal at that moment, not every goal the technique can serve.
  • Prefer the technique level when the report lacks the detail to justify a sub-technique. Forcing T1003.001 when the report only says “stole credentials” is over-mapping.
  • Use the procedure examples to calibrate. If your behavior reads nothing like the cited procedures, re-investigate.
  • T1218 System Binary Proxy Execution and T1027 Obfuscated Files or Information often co-occur with execution techniques — record them as distinct Defense Evasion entries rather than collapsing them.

6. The Analyst Mapping Worksheet

The core analyst deliverable is a worksheet that preserves the audit trail from quote to ID. Confidence and rationale columns make the mapping reviewable.

Raw Behavior QuoteTacticTechniqueSub-techniqueConfidenceRationale
“delivered a spearphishing attachment”TA0001T1566T1566.001HExplicit attachment delivery
“ran an obfuscated PowerShell loader”TA0002T1059T1059.001HInterpreter named explicitly
“loader was Base64-encoded”TA0005T1027MObfuscation implied, method unstated
“accessed LSASS with renamed procdump”TA0006T1003T1003.001HTarget process named
“injected into svchost.exe”TA0005T1055T1055.001MInjection cited; DLL method inferred
“beaconed over HTTPS”TA0011T1071T1071.001HWeb protocol C2 explicit

This worksheet becomes the source of truth that all downstream artifacts — Navigator layers, Sigma rules, emulation plans — derive from.


7. Tooling: ATT&CK Navigator, Decider, and the STIX/TAXII API

ATT&CK Navigator is MITRE’s web tool for visually annotating the matrix. You represent a mapped TTP set as a versioned layer JSON — a portable, diff-able artifact you commit to version control.

{
  "name": "APT-Sample CTI Mapping",
  "versions": { "attack": "16", "navigator": "5.1.0", "layer": "4.5" },
  "domain": "enterprise-attack",
  "description": "TTPs extracted from CTI report; scored by confidence.",
  "techniques": [
    { "techniqueID": "T1566.001", "score": 100, "color": "#e60d0d",
      "comment": "Spearphishing attachment delivered loader (High)" },
    { "techniqueID": "T1059.001", "score": 100, "color": "#e60d0d",
      "comment": "Obfuscated PowerShell stager (High)" },
    { "techniqueID": "T1003.001", "score": 75, "color": "#e68a0d",
      "comment": "LSASS access via renamed procdump (Medium)" }
  ]
}

CISA Decider eases disambiguation by asking a series of guided questions about adversary activity, walking you to the correct tactic, technique, or sub-technique — invaluable when an analyst is uncertain.

For programmatic work, query the public read-only TAXII 2.1 endpoint (https://attack-taxii.mitre.org/, Enterprise collection x-mitre-collection--1f5f1533-f617-4ca8-9ab4-6a02367fa019). The ATT&CK dataset is STIX 2.1 JSON: techniques are attack-pattern objects, groups are intrusion-set, software is malware / tool. Pull techniques attributed to a group to cross-check your mapping against MITRE’s own group profile.

from mitreattack.stix20 import MitreAttackData

# Load the Enterprise STIX 2.1 bundle (download once from attack-stix-data)
attack = MitreAttackData("enterprise-attack.json")

# Resolve a threat group alias to its intrusion-set object
group = attack.get_groups_by_alias("APT29")[0]

# Enumerate every technique attributed to the group
for t in attack.get_techniques_used_by_group(group["id"]):
    obj = t["object"]
    print(attack.get_attack_id(obj["id"]), "\t", obj["name"])

8. From TTP Map to Adversary Profile

Aggregate worksheets across an entire campaign to build an adversary profile. Correlate your mapped techniques against the relevant ATT&CK Groups page to validate consistency and surface techniques the actor is known to use but the report omitted. Score the aggregated layer by frequency or confidence to produce a TTP heat map, then prioritize against your priority intelligence requirements (PIRs). The heat map feeds directly into detection gap analysis.

import csv, json

# Load the mapped TTP layer and the internal detection inventory
layer = json.load(open("cti_layer.json"))
covered = set()
with open("detection_coverage.csv") as fh:            # cols: technique_id, rule_name
    for row in csv.DictReader(fh):
        covered.add(row["technique_id"])

print("TechniqueID\tCovered")
for t in layer["techniques"]:
    tid = t["techniqueID"]
    print(f"{tid}\t{tid in covered}")

Flow diagram showing how analyst mapping worksheets aggregate into an adversary profile and TTP heat map, which then drive detection gap analysis, emulation planning, and DeTT&CT coverage scoring
Aggregated TTP worksheets flow into an adversary profile and heat map, directly feeding detection engineering, red team emulation, and coverage analysis.

9. Quality Assurance: Peer Review and Common Mapping Errors

A formal peer review of an annotated report shares perspectives, promotes learning, and improves accuracy. A second analyst routinely catches TTPs missed in the first pass and enforces mapping consistency across the team.

Watch for these recurring errors:

  • Over-mapping — assigning techniques the report does not support.
  • Under-mapping — missing key behaviors buried in the narrative.
  • Conflating technique with tactic — recording a goal where a behavior belongs.
  • Misidentifying sub-techniques — forcing .### granularity the source lacks.
  • Mapping to deprecated techniques — always validate against the current ATT&CK version.

10. Common Attacker Techniques in CTI Reports

These behaviors dominate tactical CTI and should be in every analyst’s recognition vocabulary.

TechniqueDescription
T1566.001 Spearphishing AttachmentMalicious attachment delivers initial loader
T1195 Supply Chain CompromiseTrusted software/update channel weaponized
T1059.001 PowerShellScripted execution, often encoded
T1569.002 Service ExecutionCode run via a Windows service
T1078 Valid AccountsLegitimate credentials reused across tactics
T1027 Obfuscated Files or InformationEncoding/packing to evade detection
T1218 System Binary Proxy ExecutionSigned LOLBins proxy malicious execution
T1055.001 DLL InjectionCode injected into a remote process
T1003.001 LSASS MemoryCredential material dumped from lsass.exe
T1071.001 Web ProtocolsHTTP/S used for command and control

11. Defensive Strategies & Detection

The output of mapping is a prioritized list of behaviors to detect. Each ATT&CK technique page lists Data Sources (e.g., DS0009 Process, DS0011 Module, DS0017 Command, DS0022 File, DS0028 Logon Session, DS0029 Network Traffic) and Mitigations (e.g., M1038 Execution Prevention, M1026 Privileged Account Management). Pull these per technique to convert the map into telemetry requirements and hardening tasks.

Sysmon Events Tied to Mapped Behaviors

Sysmon Event IDDescriptionExample Technique
Event ID 1Process CreateT1059.001, T1218
Event ID 3Network ConnectionT1071.001
Event ID 7Image Loaded (DLL)T1055.001
Event ID 8CreateRemoteThreadT1055
Event ID 10Process AccessT1003.001
Event ID 11File CreateT1027
Event ID 13Registry Value SetT1547.001
Event ID 22DNS QueryT1071.001

Enable the supporting Windows audit policies: Audit Process Creation (Event ID 4688 with command line), Audit Logon Events (4624/4625/4648 for T1078), Audit Object Access → SAM (4661 for T1003), and PowerShell Script Block Logging (4104 for T1059.001).

A Sigma rule operationalizes one mapped technique. Tags follow attack.t1003_001 (lowercase, underscore for the sub-technique separator) and attack.ta0006 for the tactic.

title: Cross-Process Access to LSASS Memory
logsource:
  product: windows
  service: sysmon
detection:
  selection:
    EventID: 10
    TargetImage|endswith: '\lsass.exe'
    GrantedAccess: '0x1410'
  condition: selection
tags:
  - attack.t1003_001
  - attack.ta0006
level: high

Feed the completed layer into DeTT&CT (Detect Tactics, Techniques & Combat Threats) to align mapped TTPs against your data source visibility and detection coverage — the natural follow-on to mapping. The same layer drives the red team emulation plan, ensuring offensive testing exercises the exact behaviors the CTI reported.


12. Tools for CTI Mapping Analysis

ToolDescriptionLink
ATT&CK NavigatorVisual matrix annotation and layer exportmitre-attack.github.io
CISA DeciderGuided Q&A to reach the correct techniquecisa.gov
mitreattack-pythonProgrammatic STIX query of the ATT&CK datasetgithub.com
ATT&CK TAXII 2.1Public read-only API for STIX collectionsattack-taxii.mitre.org
DeTT&CTMaps data source visibility to detection coveragegithub.com
SigmaVendor-agnostic detection rules with ATT&CK tagssigmahq.io
SysmonEndpoint telemetry feeding mapped detectionssysinternals.com

13. MITRE ATT&CK Mapping Reference

TechniqueMITRE IDDetection
Spearphishing AttachmentT1566.001Mail gateway logs, Event ID 11 on attachment write
PowerShellT1059.001Script block logging 4104, Event ID 1
Obfuscated Files or InformationT1027Event ID 1/11, entropy/decoder heuristics
Valid AccountsT1078Logon auditing 4624/4648, anomalous session
LSASS MemoryT1003.001Event ID 10 GrantedAccess to lsass.exe, 4661
DLL InjectionT1055.001Event ID 7/8 remote thread + image load
System Binary Proxy ExecutionT1218Event ID 1 LOLBin parent/child anomalies
Web Protocols (C2)T1071.001Event ID 3/22, JA3/TLS and DNS analytics
Supply Chain CompromiseT1195Software integrity, unexpected update behavior

Summary

  • CTI-to-ATT&CK mapping converts perishable IOCs into durable, behavioral TTPs that survive across campaigns and standardize defensive communication.
  • ATT&CK is structured as tactics (the why), techniques (the how), and sub-techniques (granular methods), each with stable TA#### / T####.### identifiers.
  • The CISA four-step loop — identify, research, translate to tactic, identify technique — produces an auditable mapping worksheet that anchors every downstream artifact.
  • Navigator layers, CISA Decider, and the public TAXII 2.1 STIX endpoint operationalize and version-control the mapping; peer review guards against over-mapping, under-mapping, and tactic/technique confusion.
  • The finished TTP map drives detection engineering directly — pulling ATT&CK Data Sources, Sysmon Event IDs, audit policies, and Sigma rules per technique, and feeding DeTT&CT coverage analysis and emulation plans.

Related Tutorials

References