executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
threat-intelligenceManage threat intelligence feeds, IoC/TTP management, threat hunting, and MITRE ATT&CK mapping. Use when the user asks about threat intelligence, CTI, threat feed, IoC, TTP, MITRE ATT&CK, threat hunting, or intelligence lifecycle.
Independent GitHub snapshot · Automated classification · Original documentation governs
Manage cyber threat intelligence operations including feed management, IoC/TTP handling, threat hunting, and MITRE ATT&CK mapping. Provide actionable intelligence to SIEM detection rules, SOC operations, and risk management decisions.
Threat intelligence reports (strategic/tactical/operational), IoC lists with context, ATT&CK mappings, hunting hypotheses.
## Intelligence Summary
{Relevant threats, actors, campaigns with relevance assessment}
## IoC/TTP Details
{Indicators with context, confidence, MITRE mapping, recommended actions}
## Hunting Recommendations
{Hypotheses, data sources, queries, expected findings}
What is the primary intelligence need?
├── Strategic (long-term trends, threat actor motivations, risk decisions)
│ ├── Industry ISACs (FS-ISAC, Health-ISAC, IT-ISAC)
│ ├── Vendor reports (Mandiant, CrowdStrike, Recorded Future)
│ ├── Government sources (CISA, NCSC, ENISA)
│ └── Open-source intelligence reports (The DFIR Report, VX Underground)
├── Operational (upcoming attacks, campaigns, malware variants)
│ ├── Commercial feeds (Recorded Future, Anomali, ThreatConnect)
│ ├── ISAC threat intelligence feeds
│ ├── MISP sharing communities
│ └── Dark web monitoring (Flashpoint, Digital Shadows)
└── Tactical (IoCs: IPs, domains, hashes, YARA rules)
├── Open-source feeds (AlienVault OTX, URLhaus, PhishTank)
├── Commercial feeds (VirusTotal, Proofpoint ET Intelligence)
├── MISP (self-managed, community shared)
└── Automated feeds via TIP platform
What is the team's CTI maturity?
├── Level 1 (Initial): No dedicated CTI → Use open-source feeds + vendor reports
├── Level 2 (Defined): Part-time CTI → Add ISAC membership + commercial feeds
├── Level 3 (Managed): Dedicated CTI analyst → Full TIP platform + dark web monitoring
├── Level 4 (Measured): CTI team → Custom intelligence production + threat actor tracking
└── Level 5 (Optimized): Intelligence-driven org → Automated intel-to-detection pipeline
Is the intelligence actionable by existing tools?
├── YES → Can it be automated?
│ ├── YES (IP block, domain sinkhole, hash detection) → Feed to SIEM/EDR/firewall
│ └── NO (requires analyst judgment) → Create CTI note, brief SOC team
└── NO → Is it strategic context?
├── YES → Intelligence report for leadership / risk register
└── NO → Archive for reference, no immediate action
What is the confidence level of the intelligence?
├── HIGH (confirmed by 2+ reliable sources) → Immediate action, automated
├── MEDIUM (single reliable source or multiple moderate sources) → Review before action
└── LOW (unverified, social media, single source) → Monitor only, no action
Is the intelligence relevant to your industry/region/tech stack?
├── YES → Prioritize processing
└── NO → Archive for reference
Define Priority Intelligence Requirements (PIRs) aligned to business risk:
priority_intelligence_requirements:
pir_01:
question: "Which threat actors are targeting our industry (financial services) in the current quarter?"
priority: "P1"
source: "ISAC reports, vendor threat briefs, dark web monitoring"
consumer: "CISO, risk management, SOC manager"
update: "Monthly"
pir_02:
question: "What are the latest ransomware variants and TTPs affecting our region?"
priority: "P1"
source: "Ransomware tracking feeds, The DFIR Report, BleepingComputer"
consumer: "SOC, detection engineering, incident response"
update: "Weekly"
pir_03:
question: "Are there active campaigns exploiting vulnerabilities in our technology stack?"
priority: "P2"
source: "CISA KEV, vendor security advisories, exploit monitoring"
consumer: "Vulnerability management, detection engineering, IT operations"
update: "Continuous (feeds) + Weekly summary"
pir_04:
question: "What is the current phishing infrastructure targeting our employees?"
priority: "P2"
source: "PhishTank, URLhaus, email gateway telemetry"
consumer: "SOC Tier 1 triage, email security team"
update: "Continuous (real-time feed)"
pir_05:
question: "What are the emerging TTPs for cloud infrastructure attacks?"
priority: "P3"
source: "Cloud security research, vendor blogs, incident reports"
consumer: "Cloud security team, detection engineering"
update: "Monthly"
OSINT Collection Sources:
osint_sources:
threat_actor_news:
- "The DFIR Report — detailed incident reports with IOCs"
- "Mandiant Advantage — threat actor tracking"
- "CrowdStrike blog — adversary profiles"
- "VX Underground — malware source code and analysis"
- "BleepingComputer — ransomware and breach news"
- "KrebsOnSecurity — investigative security journalism"
- "SANS ISC — internet storm center daily diaries"
ioc_feeds:
- "AlienVault OTX — 100K+ daily IoCs, community curated"
- "URLhaus — malware distribution URLs (real-time)"
- "PhishTank — phishing URLs (verified)"
- "Spamhaus DROP — known malicious IPs"
- "Abuse.ch Feodo Tracker — C2 server tracking"
- "CISA AIS — automated indicator sharing (US gov)"
- "MISP communities — sector-specific sharing"
exploit_monitoring:
- "CISA Known Exploited Vulnerabilities (KEV) — actively exploited CVEs"
- "Exploit-DB — proof of concept exploits"
- "Metasploit — module updates"
- "GitHub monitoring — PoC exploit discovery"
- "Project Zero bug tracker — 90-day disclosure timeline"
dark_web:
- "Flashpoint — dark web forum monitoring (commercial)"
- "Recorded Future — dark web intelligence (commercial)"
- "Digital Shadows — digital risk monitoring (commercial)"
Automated Collection Pipeline:
import requests
import json
from datetime import datetime, timedelta
from typing import List, Dict
class ThreatIntelCollector:
def __init__(self, config: Dict):
self.sources = config['sources']
self.tip_api = config['tip_api_endpoint']
self.tip_token = config['tip_api_token']
def collect_otx(self, api_key: str, days_back: int = 1) -> List[Dict]:
"""Collect pulses from AlienVault OTX."""
pulses = []
since = (datetime.utcnow() - timedelta(days=days_back)).isoformat()
url = f"https://otx.alienvault.com/api/v1/pulses/subscribed"
headers = {"X-OTX-API-KEY": api_key}
response = requests.get(url, headers=headers,
params={"limit": 50, "modified_since": since})
if response.status_code == 200:
data = response.json()
for pulse in data.get("results", []):
pulses.append({
"source": "alienvault_otx",
"id": pulse["id"],
"name": pulse["name"],
"description": pulse["description"],
"tags": pulse.get("tags", []),
"tlp": pulse.get("TLP", "amber"),
"indicators": [
{"type": i["type"], "value": i["indicator"]}
for i in pulse.get("indicators", [])
],
"collected_at": datetime.utcnow().isoformat(),
"reference": pulse.get("reference")
})
return pulses
def collect_cisa_kev(self) -> List[Dict]:
"""Collect Known Exploited Vulnerabilities from CISA."""
url = "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
response = requests.get(url)
vulns = []
if response.status_code == 200:
data = response.json()
for vuln in data.get("vulnerabilities", []):
vulns.append({
"source": "cisa_kev",
"cve_id": vuln["cveID"],
"name": vuln["vulnerabilityName"],
"date_added": vuln["dateAdded"],
"due_date": vuln["dueDate"],
"required_action": vuln["requiredAction"],
"known_to_be_used_in_ransomware": vuln.get("knownRansomwareCampaignUse", "Unknown"),
"collected_at": datetime.utcnow().isoformat()
})
return vulns
def push_to_tip(self, indicators: List[Dict], feed_name: str):
"""Push collected indicators to Threat Intelligence Platform."""
payload = {
"feed": feed_name,
"indicators": indicators,
"collected_at": datetime.utcnow().isoformat()
}
headers = {
"Authorization": f"Bearer {self.tip_token}",
"Content-Type": "application/json"
}
response = requests.post(f"{self.tip_api}/indicators/bulk", json=payload, headers=headers)
return response.status_code == 200
def collect_all(self):
"""Run all collectors."""
results = {"otx": [], "cisa": [], "errors": []}
for source_name, source_config in self.sources.items():
try:
if source_name == "alienvault_otx":
results["otx"] = self.collect_otx(source_config["api_key"])
elif source_name == "cisa_kev":
results["cisa"] = self.collect_cisa_kev()
except Exception as e:
results["errors"].append({"source": source_name, "error": str(e)})
return results
IoC Lifecycle:
Collection → Normalization → Deduplication → Enrichment → Scoring → Distribution → Monitoring → Retirement
IoC Scoring and Prioritization:
def score_indicator(indicator: Dict) -> int:
"""Score an indicator from 0-100 based on confidence and relevance."""
score = 0
# Source reliability
source_scores = {
"cisa": 100, "mandiant": 95, "crowdstrike": 90,
"alienvault_otx_verified": 70, "urlhaus": 65,
"phistank_verified": 60, "misp_trusted": 75,
"alienvault_otx_unverified": 30, "social_media": 10
}
score += source_scores.get(indicator.get("source", ""), 20)
# Age recency (higher for newer)
age_hours = indicator.get("age_hours", 72)
if age_hours < 1: score += 30
elif age_hours < 6: score += 25
elif age_hours < 24: score += 20
elif age_hours < 72: score += 15
else: score += 5
# Indicator type priority
type_scores = {
"C2_domain": 40, "malware_hash": 35, "phishing_url": 30,
"malicious_ip": 25, "email_address": 20, "registry_key": 15
}
score += type_scores.get(indicator.get("type", ""), 10)
# Relevance to industry
if indicator.get("industry_relevant"): score += 20
if indicator.get("tech_stack_relevant"): score += 15
# Corroboration (multiple sources)
if indicator.get("source_count", 1) >= 3: score += 25
elif indicator.get("source_count", 1) >= 2: score += 15
return min(score, 100)
IoC Distribution Rules:
| Score | Action | Automation | Consumer |
|---|---|---|---|
| 80-100 | Block/Isolate immediately | Automated | Firewall, EDR, DNS sinkhole |
| 60-79 | Alert and investigate | Semi-automated (Tier 1 review) | SIEM correlation rule |
| 40-59 | Monitor for activity | Automated monitor (SIEM search) | SIEM watchlist |
| 20-39 | Log for reference | Manual review | Threat intel platform |
| 0-19 | Discard | Automated discard | None |
TTP Mapping Template:
threat_actor_profile:
name: "APT-XX (Fancy Bear variant)"
aliases: ["APT28", "Sofacy", "Fancy Bear", "Strontium"]
motivation: "Political espionage, geopolitical advantage"
target_sectors: ["Government", "Defense", "Think Tanks", "Media"]
target_regions: ["Europe", "North America", "Eastern Europe"]
known_ttps:
initial_access:
- technique: "T1566.001 — Spearphishing Attachment"
observed: "Lure documents with malicious macros"
detection: "Email gateway macro detection, EDR macro execution monitoring"
- technique: "T1190 — Exploit Public-Facing Application"
observed: "CVE-2023-XXXX exploitation in VPN appliances"
detection: "NIDS signatures, vuln scanner, EDR post-exploit"
execution:
- technique: "T1204.002 — User Execution: Malicious File"
observed: "Users double-click weaponized documents"
detection: "EDR process creation events, User Behavior Analytics"
- technique: "T1059.001 — PowerShell"
observed: "PowerShell download cradle for second stage"
detection: "PowerShell logging (ScriptBlock, Module), EDR command-line capture"
persistence:
- technique: "T1547.001 — Registry Run Keys / Startup Folder"
observed: "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
detection: "EDR registry monitoring, Sysmon Event ID 13"
defense_evasion:
- technique: "T1055.001 — Process Injection: DLL Injection"
observed: "Inject into explorer.exe or svchost.exe"
detection: "EDR API call monitoring, memory scanning"
- technique: "T1027 — Obfuscated Files or Information"
observed: "Base64-encoded PowerShell, XOR-encrypted payloads"
detection: "Base64 decode patterns, entropy analysis"
credential_access:
- technique: "T1003.001 — LSASS Memory"
observed: "Mimikatz or comsvcs.dll dump"
detection: "EDR LSASS access monitoring, Windows Defender Credential Guard"
lateral_movement:
- technique: "T1021.006 — Windows Remote Management"
observed: "WinRM for remote command execution"
detection: "Windows Event 91 (WinRM), network log analysis"
command_and_control:
- technique: "T1071.001 — Web Protocols"
observed: "HTTPS to compromised legitimate websites"
detection: "TLS JA3 fingerprinting, domain reputation, beaconing analysis"
- technique: "T1573.001 — Symmetric Cryptography"
observed: "Custom XOR or AES encrypted C2 traffic"
detection: "Traffic entropy analysis, packet timing analysis"
exfiltration:
- technique: "T1048.003 — Exfiltration Over Unencrypted Protocol"
observed: "FTP/SMB exfiltration to staging server"
detection: "Large outbound file transfers, DLP alerts"
Detection Coverage Scoring:
def calculate_coverage_score(mapped_ttps: Dict, active_detections: List[str]) -> Dict:
"""
Calculate detection coverage percentage for mapped TTPs.
Returns coverage stats per tactic.
"""
tactic_coverage = {}
total_techniques = 0
covered_techniques = 0
for tactic, techniques in mapped_ttps.items():
total = len(techniques)
covered = sum(1 for t in techniques if t['technique'] in active_detections)
tactic_coverage[tactic] = {
"total": total,
"covered": covered,
"coverage_pct": round(covered / total * 100, 1) if total > 0 else 0,
"techniques": {
"covered": [t['technique'] for t in techniques if t['technique'] in active_detections],
"gaps": [t['technique'] for t in techniques if t['technique'] not in active_detections]
}
}
total_techniques += total
covered_techniques += covered
return {
"overall_coverage_pct": round(covered_techniques / total_techniques * 100, 1) if total_techniques > 0 else 0,
"tactics": tactic_coverage,
"total_techniques": total_techniques,
"covered_techniques": covered_techniques,
"next_priorities": sorted(
[t for tactics in tactic_coverage.values() for t in tactics['techniques']['gaps']],
key=lambda t: t.get('priority', 99)
)[:5]
}
Hunt Hypothesis Generation:
hunt_hypotheses:
h_01:
hypothesis: "Threat actors may be using PowerShell without -EncodedCommand to avoid detection"
threat_intel_basis: "Recent campaigns observed using splatted parameters and obfuscated string concatenation"
data_sources: ["Windows Event 4104 (PowerShell ScriptBlock)", "EDR process command line"]
query: "index=windows EventCode=4104 ScriptBlockText=* -not ScriptBlockText=*-EncodedCommand* -not ScriptBlockText=*DownloadString* | eval length=len(ScriptBlockText) | where length > 500"
expected_findings: "Obfuscated PowerShell scripts with unusual parameter passing"
ttp_mapping: "T1059.001"
h_02:
hypothesis: "Adversaries may be using living-off-the-land binaries (LOLBins) for lateral movement"
threat_intel_basis: "Increasing use of MSBuild, InstallUtil, and Mshta for bypassing application allowlisting"
data_sources: ["Windows Event 4688 (Process Creation)", "EDR parent-child process tree"]
query: "index=windows EventCode=4688 (Image=*\\msbuild.exe OR Image=*\\installutil.exe OR Image=*\\mshta.exe) | stats count by ParentImage, CommandLine"
expected_findings: "LOLBin execution from unusual parent processes (Office, browser, email client)"
ttp_mapping: "T1218.005, T1218.004, T1218.005"
h_03:
hypothesis: "Attackers may be using DNS tunneling for C2 communication"
threat_intel_basis: "DNS tunneling remains effective and increasingly used by APT groups"
data_sources: ["DNS logs (query volume, entropy)", "Zeek DNS logs"]
query: "index=dns | eval domain_length=len(query) | eval subdomain_count=mvcount(split(query, '.')) | eval entropy=... | where domain_length > 30 AND subdomain_count > 5 | stats count by query, src_ip"
expected_findings: "Unusual DNS query patterns: high frequency, long subdomains, high entropy, TXT queries"
ttp_mapping: "T1572"
h_04:
hypothesis: "Recently disclosed CVE-2026-XXXX may be exploited in our environment"
threat_intel_basis: "CISA KEV added CVE-2026-XXXX with active exploitation reports"
data_sources: ["Application logs for affected software", "EDR for post-exploitation indicators", "IDS/IPS signatures"]
queries:
- "Search for affected software version in inventory (CMDB, vulnerability scanner)"
- "Search for exploit-related process creation patterns post-announcement"
- "Check for new outbound connections from systems running affected software"
expected_findings: "No exploitation found, or exploitation detected with containment needed"
ttp_mapping: "T1190"
Hunt Execution Process:
Reporting Cadence:
| Report Type | Audience | Frequency | Content |
|---|---|---|---|
| Flash Alert | SOC, IR team, system owners | As needed (within 1 hour of critical intel) | Active threat, IoCs, immediate actions |
| Daily Brief | SOC analysts | Daily (shift start) | New IoCs, overnight alerts, trending threats, CVE updates |
| Weekly Threat Summary | SOC manager, detection engineering | Weekly | Campaign analysis, TTP changes, detection coverage gaps |
| Monthly CTI Report | CISO, risk management, IT leadership | Monthly | Industry threat landscape, actor activity, relevance assessment, recommendations |
| Quarterly Threat Assessment | Board, executive team | Quarterly | Strategic threat landscape, risk posture changes, security program effectiveness |
CTI Report Template:
# THREAT INTELLIGENCE BRIEF — MONTHLY SUMMARY
Date: June 2026
Classification: TLP:AMBER
Prepared by: CTI Team
## Executive Summary
{2-3 sentence overview of the month's most significant threats and their relevance to the organization}
## Industry Threat Landscape
- {Threat actor activity relevant to our industry}
- {New TTPs observed in the wild}
- {Attack campaigns targeting similar organizations}
## Relevant Threat Actors
| Actor | Activity This Month | Relevance | Action Required |
|-------|-------------------|------------|-----------------|
| ACTOR-A | New phishing campaign targeting CFOs | HIGH (finance team targeted) | User awareness training |
| ACTOR-B | Ransomware deployment via VPN vuln | MEDIUM (VPN version patched) | Verify patch compliance |
## Critical Vulnerabilities (CISA KEV)
| CVE | Affected Tech | Impact | Status in Our Environment |
|-----|--------------|--------|-------------------------|
| CVE-2026-XXXX | Product Y | RCE | [Patched / Unpatched / Not applicable] |
## New Detection Rules Created
| Rule Name | ATT&CK Technique | Data Source | Status |
|-----------|-----------------|-------------|--------|
| PowerShell Obfuscation | T1059.001 | Windows Event 4104 | Active |
## IoC Statistics
| Indicator Type | Collected | Reviewed | Distributed | Blocked |
|---------------|-----------|----------|-------------|---------|
| IP Addresses | 1,234 | 800 | 450 | 12 |
| Domains | 567 | 400 | 200 | 5 |
| File Hashes | 890 | 600 | 300 | 8 |
| URLs | 2,100 | 1,500 | 750 | 25 |
## Intelligence Gaps
- {What we don't know about current threats}
- {Recommendations for additional intelligence sources}
## Recommendations
1. {Priority action for SOC/detection engineering}
2. {Priority action for vulnerability management}
3. {Priority action for risk management}
TLP Classification:
| TLP Level | Description | Sharing Restriction |
|---|---|---|
| TLP:RED | Not for disclosure | Limited to named recipients only |
| TLP:AMBER | Limited disclosure | Share within organization and clients on need-to-know basis |
| TLP:AMBER+STRICT | Limited disclosure | Share only within organization |
| TLP:GREEN | Limited disclosure | Share with peers and partner organizations |
| TLP:CLEAR | No restrictions | Share freely, subject to copyright |
Sharing Platforms:
| Platform | Type | Use Case |
|---|---|---|
| MISP (Malware Information Sharing Platform) | Self-hosted | Community sharing, automated IoC exchange |
| ISAC Portals | Industry-specific | Sector-specific threat intelligence sharing |
| CISA AIS (Automated Indicator Sharing) | US Government | Bi-directional IoC sharing with CISA |
| TIP Platform (ThreatConnect, Anomali, Recorded Future) | Commercial | Centralized intelligence management |
Intelligence-to-Detection Pipeline:
Raw Intelligence → Analyze & Enrich → Create Detection → Test → Deploy → Measure → Feedback
Example: CISA KEV to Detection Rule:
Input CISA KEV entry:
{
"cveID": "CVE-2026-XXXX",
"vendorProject": "Vendor Y",
"product": "Product Z",
"vulnerabilityName": "Product Z Remote Code Execution",
"dateAdded": "2026-05-28",
"shortDescription": "Product Z contains an RCE vulnerability in the web interface",
"requiredAction": "Apply updates per vendor instructions.",
"knownRansomwareCampaignUse": "Known"
}
Generated detection rules:
# Splunk - Detect exploitation attempts
index=proxy sourcetype=stream:http
| search uri=*ProductZ* AND (uri=*/admin/* OR uri=*/api/*)
| eval threat_actor_cve = "CVE-2026-XXXX"
| eval severity = "critical"
| eval urgency = "high"
| eval recommendation = "Immediately patch Product Z. Investigate for post-exploitation activity."
# Wazuh - Detect vulnerable software version
<rule id="100050" level="10">
<if_sid>500</if_sid>
<field name="win.eventdata.product">Product Z</field>
<field name="win.eventdata.version" type="pcre2">^([0-9]\.|1[0-4]\.)</field>
<description>CVE-2026-XXXX: Product Z RCE - vulnerable version detected</description>
<mitre>
<id>T1190</id>
</mitre>
</rule>
Collecting intelligence from 50+ feeds generates noise and obscures relevant threats. Focus on quality over quantity. Align collection to PIRs. Prune feeds that don't generate actionable intelligence.
Distributing IP addresses without context (malware C2 vs phishing URL vs scanner) wastes analyst time. Always include: indicator type, confidence, source, age, associated threat actor, recommended action.
Focusing only on IoCs misses strategic intelligence. IoCs expire quickly (70% are useful for < 30 days). TTPs provide longer-lasting detection value. Balance tactical (IoCs) with operational (campaigns) and strategic (trends).
Intelligence that never gets validated (was the IoC useful? Did we detect anything?) creates blind trust in feeds. Implement feedback: analyst marks IoC as "detected", "false positive", or "not seen". Use feedback to tune feed quality scoring.
Some intelligence feeds have 30-50% false positive rates. Without validation, FPs erode trust in CTI. Validate high-severity IoCs before distribution. Use verified feeds for automated actions.
CTI team produces reports but intelligence never reaches SIEM, EDR, or firewall. Automated IoC distribution via TIP platform. Strategic intelligence should influence detection rule priorities.
Intelligence collected but never used for proactive hunting. Intelligence without hunting is passive. Use each intelligence report to generate at least one hunt hypothesis.
The same intelligence report does not serve analysts, managers, and executives. Tailor reports: tactical for SOC, operational for detection engineering, strategic for leadership.
Not sharing intelligence with peers, ISACs, or CISA. Intelligence sharing improves collective defense. Implement TLP classification to share appropriately. Participate in ISAC intelligence working groups.
Without purple team validation, you don't know if intelligence has improved detection. Use intelligence to drive purple team scenarios. Validate detection rules against real adversary TTPs.
IoC feeds integrated with siem-engineering for detection rules. TTP mapping informs soc-operations for analyst workflows.