Threat Landscape Analysis
A TRA is only as good as its threat intelligence. This section covers threat actor profiling using the capability-intent-opportunity model, CTI feed integration with STIX/TAXII, systematic MITRE ATT&CK mapping, industry-specific threat catalogs, and structured threat scenario development.
Why Threat Landscape Matters for TRA
Threat Actor Profiling
Profile threat actors using three dimensions: Capability (technical sophistication), Intent (motivation and objectives), and Opportunity (access and attack surface exposure).
| Actor Type | Capability | Intent | Typical TTPs | Dwell Time |
|---|---|---|---|---|
| Nation-State (APT) | Very High — zero-days, custom malware, supply chain | Espionage, IP theft, disruption, pre-positioning | Spear-phishing, living-off-the-land, supply chain compromise | Months to years |
| Organized Crime | High — RaaS, IABs, custom tooling | Financial gain — ransomware, BEC, data theft for sale | Phishing, credential stuffing, ransomware, extortion | Days to weeks |
| Insider Threat | Variable — has legitimate access and system knowledge | Financial, revenge, ideology, coercion, negligence | Data exfiltration, privilege abuse, sabotage, social engineering | Ongoing |
| Hacktivist | Low-Medium — commodity tools, DDoS services | Ideology, reputation damage, political messaging | DDoS, defacement, data leaks, doxing | Hours to days |
| Opportunistic | Low — automated scanners, known exploits, scripts | Easy targets — cryptojacking, spam, bot networks | Mass scanning, default credentials, known CVEs | Minutes to hours |
MITRE ATT&CK Mapping
Map identified threat actors to MITRE ATT&CK techniques to understand specific TTPs your controls must address. Focus on techniques relevant to your architecture and actor profiles.
ATT&CK-Based Threat Mapping for TRA
# ATT&CK Technique Mapping for TRA — Python Helper
# Maps system components to relevant ATT&CK techniques based on actor profiles
import json
from dataclasses import dataclass
@dataclass
class ThreatMapping:
technique_id: str
technique_name: str
tactic: str
component: str
actor_relevance: list[str]
current_control: str
gap_assessment: str
# Example: Cloud-Native SaaS Platform threat mapping
threat_mappings = [
ThreatMapping(
technique_id="T1190",
technique_name="Exploit Public-Facing Application",
tactic="Initial Access",
component="API Gateway / Web Application",
actor_relevance=["Organized Crime", "Nation-State", "Opportunistic"],
current_control="WAF with OWASP CRS, input validation",
gap_assessment="WAF bypass testing not in regular pentest scope"
),
ThreatMapping(
technique_id="T1078.004",
technique_name="Valid Accounts: Cloud Accounts",
tactic="Initial Access / Persistence",
component="Entra ID / IAM",
actor_relevance=["Nation-State", "Organized Crime", "Insider"],
current_control="MFA enforced, Conditional Access policies",
gap_assessment="No impossible travel detection; service principal monitoring gaps"
),
ThreatMapping(
technique_id="T1195.002",
technique_name="Supply Chain Compromise: Compromise Software Supply Chain",
tactic="Initial Access",
component="CI/CD Pipeline / Dependencies",
actor_relevance=["Nation-State"],
current_control="Dependabot, SBOM generation",
gap_assessment="No build provenance verification; no SLSA compliance"
),
ThreatMapping(
technique_id="T1552.001",
technique_name="Unsecured Credentials: Credentials In Files",
tactic="Credential Access",
component="Application Code / Config",
actor_relevance=["Organized Crime", "Insider", "Opportunistic"],
current_control="Key Vault for production; pre-commit secret scanning",
gap_assessment="Historical secrets not rotated after scanning implementation"
),
ThreatMapping(
technique_id="T1530",
technique_name="Data from Cloud Storage",
tactic="Collection",
component="Blob Storage / S3 Buckets",
actor_relevance=["Nation-State", "Organized Crime"],
current_control="Private endpoints, SSE-KMS encryption",
gap_assessment="No DLP monitoring on storage access patterns"
),
]
def generate_gap_report(mappings: list[ThreatMapping]) -> dict:
"""Generate a gap analysis report from ATT&CK mappings."""
gaps_by_tactic = {}
for m in mappings:
if m.tactic not in gaps_by_tactic:
gaps_by_tactic[m.tactic] = []
gaps_by_tactic[m.tactic].append({
"technique": f"{m.technique_id}: {m.technique_name}",
"component": m.component,
"gap": m.gap_assessment,
"actor_count": len(m.actor_relevance)
})
# Sort each tactic's gaps by number of relevant actors (highest priority first)
for tactic in gaps_by_tactic:
gaps_by_tactic[tactic].sort(key=lambda x: x["actor_count"], reverse=True)
return gaps_by_tactic
report = generate_gap_report(threat_mappings)
print(json.dumps(report, indent=2))# ATT&CK Technique Mapping for TRA — Python Helper
# Maps system components to relevant ATT&CK techniques based on actor profiles
import json
from dataclasses import dataclass
@dataclass
class ThreatMapping:
technique_id: str
technique_name: str
tactic: str
component: str
actor_relevance: list[str]
current_control: str
gap_assessment: str
# Example: Cloud-Native SaaS Platform threat mapping
threat_mappings = [
ThreatMapping(
technique_id="T1190",
technique_name="Exploit Public-Facing Application",
tactic="Initial Access",
component="API Gateway / Web Application",
actor_relevance=["Organized Crime", "Nation-State", "Opportunistic"],
current_control="WAF with OWASP CRS, input validation",
gap_assessment="WAF bypass testing not in regular pentest scope"
),
ThreatMapping(
technique_id="T1078.004",
technique_name="Valid Accounts: Cloud Accounts",
tactic="Initial Access / Persistence",
component="Entra ID / IAM",
actor_relevance=["Nation-State", "Organized Crime", "Insider"],
current_control="MFA enforced, Conditional Access policies",
gap_assessment="No impossible travel detection; service principal monitoring gaps"
),
ThreatMapping(
technique_id="T1195.002",
technique_name="Supply Chain Compromise: Compromise Software Supply Chain",
tactic="Initial Access",
component="CI/CD Pipeline / Dependencies",
actor_relevance=["Nation-State"],
current_control="Dependabot, SBOM generation",
gap_assessment="No build provenance verification; no SLSA compliance"
),
ThreatMapping(
technique_id="T1552.001",
technique_name="Unsecured Credentials: Credentials In Files",
tactic="Credential Access",
component="Application Code / Config",
actor_relevance=["Organized Crime", "Insider", "Opportunistic"],
current_control="Key Vault for production; pre-commit secret scanning",
gap_assessment="Historical secrets not rotated after scanning implementation"
),
ThreatMapping(
technique_id="T1530",
technique_name="Data from Cloud Storage",
tactic="Collection",
component="Blob Storage / S3 Buckets",
actor_relevance=["Nation-State", "Organized Crime"],
current_control="Private endpoints, SSE-KMS encryption",
gap_assessment="No DLP monitoring on storage access patterns"
),
]
def generate_gap_report(mappings: list[ThreatMapping]) -> dict:
"""Generate a gap analysis report from ATT&CK mappings."""
gaps_by_tactic = {}
for m in mappings:
if m.tactic not in gaps_by_tactic:
gaps_by_tactic[m.tactic] = []
gaps_by_tactic[m.tactic].append({
"technique": f"{m.technique_id}: {m.technique_name}",
"component": m.component,
"gap": m.gap_assessment,
"actor_count": len(m.actor_relevance)
})
# Sort each tactic's gaps by number of relevant actors (highest priority first)
for tactic in gaps_by_tactic:
gaps_by_tactic[tactic].sort(key=lambda x: x["actor_count"], reverse=True)
return gaps_by_tactic
report = generate_gap_report(threat_mappings)
print(json.dumps(report, indent=2))Industry-Specific Threat Catalogs
Different industries face different primary threats. Use these catalogs as starting points for threat identification, then customize based on your specific system and threat intelligence.
Financial Services
- • Account takeover via credential stuffing / MFA bypass
- • Business email compromise (BEC) for wire fraud
- • Ransomware targeting operational systems
- • Card-not-present fraud via API abuse
- • Insider trading via privileged data access
- • ATM / POS system compromise
- • SWIFT network targeting (nation-state)
Frameworks: PCI DSS 4.0, DORA, NIST CSF
Healthcare
- • Ransomware targeting clinical systems (patient safety)
- • PHI exfiltration for identity fraud
- • Medical device compromise (IoMT)
- • EHR system manipulation (data integrity)
- • Telehealth platform abuse
- • Research data theft (IP, clinical trials)
- • Supply chain attacks on medical software
Frameworks: HIPAA, HITRUST, FDA guidance
Critical Infrastructure / OT
- • IT/OT convergence exploitation
- • SCADA/ICS protocol abuse (Modbus, DNP3)
- • Safety system targeting (SIS)
- • Pre-positioning for future disruption (APT)
- • Remote access compromise (VPN, jump hosts)
- • Firmware manipulation on PLCs/RTUs
- • Supply chain compromise of OT vendors
Frameworks: NIS2, IEC 62443, NERC CIP
SaaS / Technology
- • API abuse for data scraping / extraction
- • Multi-tenant isolation bypass
- • OAuth/OIDC flow manipulation
- • CI/CD pipeline compromise (supply chain)
- • Customer data access via support tools
- • LLM prompt injection / model manipulation
- • Third-party integration abuse (webhooks, APIs)
Frameworks: SOC 2, ISO 27001, OWASP
Threat Scenario Development
Transform actor profiles and technique mappings into structured threat scenarios. Each scenario describes a realistic attack narrative that feeds directly into risk analysis.
Threat Scenario Template
SCENARIO: Ransomware via Compromised CI/CD Pipeline
────────────────────────────────────────────────────
Actor: Organized crime (RaaS affiliate)
Capability: High — access brokers, custom loaders, established C2
Intent: Financial gain via double extortion
Opportunity: Public GitHub repository with Actions workflows
ATTACK NARRATIVE
1. Initial Access: Attacker compromises a developer's GitHub PAT
via phishing (T1566.002) or credential dump from a third-party breach (T1078)
2. Execution: Attacker modifies GitHub Actions workflow to inject
malicious payload during build (T1195.002)
3. Persistence: Backdoored artifact deployed to production via
normal CI/CD pipeline (T1072)
4. Lateral Movement: Compromised service account credentials used
to access adjacent services and data stores (T1021)
5. Impact: Ransomware deployed across production environment,
data exfiltrated for double extortion (T1486, T1567)
AFFECTED COMPONENTS
• CI/CD pipeline (GitHub Actions)
• Build artifacts and container registry
• Production Kubernetes cluster
• Customer database (data exfiltration)
• All services deployed via the compromised pipeline
EXISTING CONTROLS
✓ Branch protection rules requiring PR approval
✓ Container image scanning (Trivy)
✗ No workflow file change alerts
✗ No build provenance verification (SLSA)
✗ No runtime anomaly detection in production
RISK INPUTS (for FAIR analysis)
• Threat Event Frequency: 2-5 attempts per year (based on CTI)
• Vulnerability (probability of success): 30-50% (gaps in pipeline security)
• Primary Loss: $2M-8M (incident response, recovery, customer notification)
• Secondary Loss: $5M-20M (regulatory fines, litigation, reputation)
RECOMMENDED CONTROLS
1. Require signed commits and workflow approvals
2. Implement SLSA Level 3 build provenance
3. Alert on workflow file modifications
4. Deploy runtime behavioral detection (Falco)
5. Implement break-glass CI/CD override with audit trailThreat Scenario Template
SCENARIO: Ransomware via Compromised CI/CD Pipeline
────────────────────────────────────────────────────
Actor: Organized crime (RaaS affiliate)
Capability: High — access brokers, custom loaders, established C2
Intent: Financial gain via double extortion
Opportunity: Public GitHub repository with Actions workflows
ATTACK NARRATIVE
1. Initial Access: Attacker compromises a developer's GitHub PAT
via phishing (T1566.002) or credential dump from a third-party breach (T1078)
2. Execution: Attacker modifies GitHub Actions workflow to inject
malicious payload during build (T1195.002)
3. Persistence: Backdoored artifact deployed to production via
normal CI/CD pipeline (T1072)
4. Lateral Movement: Compromised service account credentials used
to access adjacent services and data stores (T1021)
5. Impact: Ransomware deployed across production environment,
data exfiltrated for double extortion (T1486, T1567)
AFFECTED COMPONENTS
• CI/CD pipeline (GitHub Actions)
• Build artifacts and container registry
• Production Kubernetes cluster
• Customer database (data exfiltration)
• All services deployed via the compromised pipeline
EXISTING CONTROLS
✓ Branch protection rules requiring PR approval
✓ Container image scanning (Trivy)
✗ No workflow file change alerts
✗ No build provenance verification (SLSA)
✗ No runtime anomaly detection in production
RISK INPUTS (for FAIR analysis)
• Threat Event Frequency: 2-5 attempts per year (based on CTI)
• Vulnerability (probability of success): 30-50% (gaps in pipeline security)
• Primary Loss: $2M-8M (incident response, recovery, customer notification)
• Secondary Loss: $5M-20M (regulatory fines, litigation, reputation)
RECOMMENDED CONTROLS
1. Require signed commits and workflow approvals
2. Implement SLSA Level 3 build provenance
3. Alert on workflow file modifications
4. Deploy runtime behavioral detection (Falco)
5. Implement break-glass CI/CD override with audit trailCTI Integration via STIX/TAXII
Integrate structured threat intelligence into your TRA process using STIX (Structured Threat Information eXpression) for data format and TAXII (Trusted Automated eXchange of Intelligence Information) for transport.
CTI Sources for TRA
- • MITRE ATT&CK — technique and group mappings
- • CISA KEV — Known Exploited Vulnerabilities catalog
- • AlienVault OTX — community threat intelligence
- • Industry ISACs — sector-specific threat sharing
- • Vendor threat reports — Mandiant, CrowdStrike, Microsoft
- • OSINT feeds — abuse.ch, VirusTotal, Shodan
Integrating CTI into TRA
- 1. Subscribe to industry-relevant TAXII feeds
- 2. Filter indicators by relevance to your technology stack
- 3. Map threat actor groups to ATT&CK techniques
- 4. Cross-reference with your component inventory
- 5. Update threat scenarios with current campaign data
- 6. Feed updated threat landscape into risk quantification
Emerging Threat Vectors (2025-2026)
Section Summary
Key Takeaways
- • Profile threat actors by capability, intent, and opportunity — not all threats are equal
- • Map actors to MITRE ATT&CK techniques relevant to your system components
- • Use industry-specific threat catalogs as starting points, then customize
- • Develop structured threat scenarios that feed directly into FAIR risk analysis
Next Steps
- • Section 04: Advanced Threat Modeling — apply STRIDE, PASTA, and VAST
- • Section 06: Risk Quantification — quantify threat scenarios with FAIR
- • Threat Intelligence Guide — deep-dive on CTI operations