Threat Intelligence: TTPs, IOCs, Threat Hunting & TIP Platforms - Cybersecurity Hub

← Back to Home Threat Intelligence: TTPs, IOCs, Threat Hunting & TIP Platforms Table of Contents Introduction: Intelligence-Driven Defense Intelligence Levels: Tactical, Operational, Strategic STIX & TAXII: Standards for Sharing MITRE ATT&CK for Intelligence Threat Hunting Methodologies Intelligence Sharing (ISACs) Threat Intelligence Platforms (TIP) Conclusion Introduction: Intelligence-Driven Defense Cyber Threat Intelligence (CTI) is evidence-based knowledge about adversaries—their motivations, intents, capabilities, and tradecraft—used to inform defensive decisions. Without intelligence, defenders operate blind against adversaries who have unlimited time to study the target. The pyramid of pain captures the principle: low on the pyramid, indicators like IPs and hashes are abundant but trivial for adversaries to change. Top of the pyramid, TTPs (Tactics, Techniques, Procedures) are rare, behavior-based, and costly for adversaries to change. Intelligence-driven defense aims to detect based on TTPs, not just IOCs. Intelligence Levels: Tactical, Operational, Strategic Intelligence Pyramid Level Audience Content Use Case Strategic Executives, CISO, Board Trends, campaigns, geopolitical context, business risk Investment, planning, risk acceptance Operational Security Managers, Architects Campaign details, actor profiles, TTPs Defense planning, detection coverage Tactical SOC Analysts, Hunters IOCs, malicious hashes, IPs, domains, URLs, YARA rules Detection, blocking, hunting Pyramid of Pain (Detection Efficacy) # Pyramid of Pain (David J. Bianco) # Adversary pain increases as you climb # # /\ # / \ TTPs - Hardest to change (behaviors) # /____\ # / \ Tools - Need new tooling #/________\ #/ \ Network - Infrastructure changes #/____________\ Host - Rebuild artifacts #/ \ Hash - Trivial change # Top: TTPs (Tactics, Techniques, Procedures) # - "Process injection by манипulating LSASS" # - Very rare, very valuable # - Example: "Adversary X uses WMI for persistence" # # Middle: Tools # - Custom malware families # - Specific RAT variants # - Known exploit scripts # # Bottom: Hash, IP, Domain # - Commodity indicators # - Short lifespan (hours-days) # - Lowest friction for adversary to change STIX & TAXII: Standards for Sharing STIX (Structured Threat Information Expression) and TAXII (Trusted Automated Exchange of Intelligence Information) are OASIS standards for representing and exchanging threat intelligence. STIX 2.1 Objects # STIX 2.1 is JSON-based with these top-level object types: # - Indicator (atomic indicator: IP, hash, URL) # - Malware (malware family/description) # - Threat Actor (person/group) # - Intrusion Set (campaign/group of activities) # - Attack Pattern (MITRE ATT&CK technique) # - Tool (software used by adversaries) # - Vulnerability (CVE, weakness) # - Course of Action (mitigation) # - Relationship (links between objects) # - Report (narrative intelligence report) # - Identity (who) # - Location (where) # - Observed Data (what was seen, when) # Example STIX 2.1 Bundle { "type": "bundle", "id": "bundle--12345", "objects": [ { "type": "indicator", "id": "indicator--abc123", "created": "2026-01-01T00:00:00Z", "modified": "2026-01-01T00:00:00Z", "name": "Malicious IP - C2", "description": "Known C2 for APT-X", "pattern": "[ipv4-addr:value = '192.0.2.1']", "pattern_type": "stix", "valid_from": "2026-01-01T00:00:00Z", "labels": ["malicious-activity", "c2"] }, { "type": "intrusion-set", "id": "intrusion-set--xyz789", "created": "2026-01-01T00:00:00Z", "modified": "2026-01-01T00:00:00Z", "name": "APT-X", "description": "State-sponsored group targeting finance", "aliases": ["Group ABC"], "first_seen": "2020-01-01T00:00:00Z" }, { "type": "relationship", "id": "relationship--rel1", "source_ref": "indicator--abc123", "target_ref": "intrusion-set--xyz789", "relationship_type": "indicates" } ] } TAXII 2.1 API # TAXII 2.1 is REST API for exchanging STIX content # Endpoints: # GET /api-root/discovery (server info) # GET /api-root/collections (list collections) # POST /api-root/collections/{id}/objects/ (publish objects) # GET /api-root/collections/{id}/objects/ (read objects) # GET /api-root/manifest/ (object metadata) # Example: Subscribe to threat intel feed import requests from taxii2client.v21 import Server server = Server('https://taxii.example.com/', user='consumer', password='pass') api_root = server.api_roots[0] collection = api_root.collections[0] # Pull recent IOCs manifest = collection.get_manifest() for entry in manifest: obj = collection.get_object(entry['id']) print(f"{obj['type']}: {obj.get('name', 'unnamed')}") OpenCTI (Open Source TIP) # OpenCTI is a popular open-source threat intelligence platform # Supports STIX 2.1 natively, integrates with MITRE ATT&CK # GraphQL API example: Search for indicators mutation { indicatorAdd(input: { name: "Suspicious PS command" pattern_type: "stix" pattern: "[process:command_line MATCHES '*FromBase64*']" x_opencti_main_observable_type: "Process" valid_from: "2026-01-01T00:00:00Z" }) { id } } # Visualize relationships in graph view # Enrich with threat intel feeds: AlienVault OTX, MISP, MITRE ATT&CK MITRE ATT&CK for Intelligence ATT&CK 内容 Types Content Type Example Detection Level Tactic Initial Access (TA0001) Strategic: Why adversary acts Technique Phishing (T1566) Operational: General tactic Sub-technique Spearphishing Attachment (T1566.001) Operational: Specific method Procedure "APT29 sends macro-laced doc" Tactical: Specific actor's behavior Using ATT&CK for Intelligence # Adversary Profiling # 1. Identify adversary (intrusion set) # 2. Catalog observed TTPs from incidents, reports # 3. Map TTPs to ATT&CK IDs # 4. Build "attack flow" - sequence of ATT&CK IDs # 5. Identify defense gaps (what we can't detect) # 6. Create detections for gaps # 7. Update adversary profile with new TTPs from intel # Example: APT29 Attack Flow # T1566.001 (Spearphishing Attachment) # -> T1204.002 (User Execution: File) # -> T1059.001 (PowerShell) # -> T1027 (Obfuscated Files) # -> T1547.001 (Registry Run Keys) # -> T1071.001 (C2 over DNS/Web) # -> T1003.001 (LSASS Memory dump) # -> T1041 (Exfiltration over C2) # Detection coverage map: # T1566.001: 30% (mail sandbox) # T1204.002: 60% (EDR) # T1059.001: 85% (PowerShell logging) # T1027: 40% (AV signatures) # T1547.001: 70% (registry monitoring) # T1071.001: 20% (limited DNS logging) # T1003.001: 90% (EDR alerts on LSASS) # T1041: 50% (DLP + network) STIX for ATT&CK # MITRE ATT&CK is published as STIX 2.1 bundles # https://github.com/mitre/cti # Use ATT&CK STIX directly in tools import stix2 # Load ATT&CK STIX bundle with open('enterprise-attack.json') as f: bundle = stix2.parse(f.read(), allow_custom=True) # Find technique by external ID for obj in bundle.objects: if obj.get('external_references'): for ref in obj['external_references']: if ref['source_name'] == 'mitre-attack': if ref['external_id'] == 'T1059.001': print(f"Found: {obj.name}") print(f"Description: {obj.description}") print(f"Tactics: {[r['phase_name'] for r in obj['kill_chain_phases']]}") Threat Hunting Methodologies Threat hunting assumes the adversary is already inside. Hunters proactively search for indicators of compromise that defenses missed. Hunt Hypothesis Formulation # A good hunt starts with a falsifiable hypothesis # Structure: "If adversary did X, then Y should exist in data source Z" # Example hypotheses: # H1: "Adversaries using process hollowing will have a parent # process that is unexpected for the child" # Data: EDR process tree logs (parent-child mismatch) # H2: "Adversaries using Kerberoasting will request TGS for # SPN-enabled service accounts" # Data: DC 4769 events (Kerberos TGS request) # H3: "Adversaries maintaining persistence via WMI will create # permanent event subscriptions" # Data: WMI repository, EDR WMI events # Hypothesis evaluation: # - True: confirm detection works, document procedure # - False: hypothesis refuted (good outcome, no compromise here) # - Inconclusive: data gap, fix logging Hunt Lifecycle Trigger: External (intel report, new TTP) or internal (anomaly, gut feel) Hypothesis: Formulate a falsifiable claim Investigation: Search data, analyze anomalies Outcome: True / False / Inconclusive Output: New detection rule OR refined hunting query OR logging gap identified Hunt Techniques 1. Stack-Based Outlier Hunting # Find rare events by stacking (group + count) # Look for outliers in the stack # Splunk: Find rare process executions index=edr event=process_started | stats count by process_name, parent_process | where count < 5 | sort count # Sentinel KQL: Rare logon locations SigninLogs | where TimeGenerated > ago(7d) | summarize locations = make_set(LocationDetails), count() by userPrincipalName | where array_length(locations) > 1 | sort by array_length(locations) desc 2. Time-Based Anomaly # Detect activity outside normal hours # Sentinel KQL SigninLogs | where TimeGenerated > ago(30d) | extend hour = datetime_part("hour", TimeGenerated) | summarize avg_hour = avg(hour), stdev_hour = stdev(hour), count = count() by userPrincipalName | where count > 50 // Enough data for meaningful stats | extend normal_range_start = avg_hour - 2 * stdev_hour | extend normal_range_end = avg_hour + 2 * stdev_hour # Now find logons outside normal_range SigninLogs | where TimeGenerated > ago(7d) | extend hour = datetime_part("hour", TimeGenerated) | join kind=inner ( // normal_range query above ) on userPrincipalName | where hour < normal_range_start or hour > normal_range_end 3. Behavior-Based: Beacon Analysis # Detect C2 beaconing patterns # Splunk: Look for periodic outbound connections index=firewall action=allowed | stats count, min(_time) as first_seen, max(_time) as last_seen, stdev(_time) as time_stddev by src_ip, dest_ip, dest_port | eval time_range = last_seen - first_seen | eval beacon_score = (count / time_range) / (time_stddev + 1) | where beacon_score > 0.8 and count > 10 | sort -beacon_score # Zeek DNS: Detect DNS tunneling # DNS query lengths > 50 chars are suspicious # Many subdomain levels (more than 5) suspicious # Entropy of subdomain > 3 (random looking) Documenting Hunts # Hunt Report Template # # Title: Hunt for APT persistence via WMI subscriptions # Analyst: [name] # Date: YYYY-MM-DD # # Hypothesis: # Adversaries maintaining persistence via WMI event subscriptions # will create permanent event consumers in the WMI repository. # # Data Sources: # - EDR WMI event logs (T1085) # - PowerShell Module logging (4103) # - WMI repository (CIM) # # Query: # # # Findings: # - Number of anomalies found: X # - Confirmed malicious: Y/N # - Detection rule created: Y/N (link to rule) # - IOC added to blocklist: Y/N (link) # # Conclusion: # Hunt confirmed/refuted hypothesis # Recommendations: # - Improve logging on Z # - Detection rule needed for Y Intelligence Sharing (ISACs) Information Sharing and Analysis Centers (ISACs) enable sector-specific intelligence sharing. Major ISACs ISAC Sector Sharing Channels FS-ISAC Financial Services Fusion Center, SOPs E-ISAC Energy (Electric) 24/7 watch desk H-ISAC Healthcare HINN, weekly calls R-CISC Retail R-CISC portal MS-ISAC State/local gov CIS, 24/7 SOC Sharing Models # Traffic Light Protocol (TLP) - www.first.org/tlp # TLP:RED - Recipient only, do not share # TLP:AMBER - Limited sharing within organization # TLP:GREEN - Community sharing (sector) # TLP:CLEAR - Public, no restriction # Sharing channels: # 1. STIX/TAXII automated feeds # 2. Email distribution lists (with TLP) # 3. Secure portals (FS-ISAC CI, MS-ISAC Portal) # 4. Encrypted chat (Slack shared channels) # 5. Phone bridge during incidents # Insider sharing rules: # - Tag with TLP # - Strip customer/data owner PII unless explicit consent # - Provide context (why this is useful) # - Cite source intelligence report MISP (Malware Information Sharing Platform) # MISP - Open source threat intelligence sharing platform # github.com/MISP/MISP # Events and attributes: # Event: container for IOCs related to one incident/campaign # Attribute: individual IOC (IP, hash, domain, email) # Galaxy: meta-catalog (MITRE ATT&CK, malware, threat actors) # Taxonomy: tagging (TLP, PAP, type, sector) # API upload curl -k -H "Authorization: $API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ --data @event.json \ "$MISP_URL/events/add" # Pull events modified in last 24h curl -k -H "Authorization: $API_KEY" \ "$MISP_URL/events/index/searchtimestamp:$(date -d 'yesterday' +%s)" # Sync with peers - built-in MISP sync # Configure sync servers in MISP UI, then auto-pull / push events Threat Intelligence Platforms (TIP) TIPs aggregate, enrich, and operationalize threat intel feeds, making raw intelligence actionable. TIP Evaluation Criteria Criteria Description Ingestion How many feed formats/sources supported (STIX, MISP, CSV, JSON) Enrichment Built-in enrichment (VT, WHOIS, GeoIP, reputation) Correlation Link IOCs to MITRE ATT&CK, threat actors, campaigns Output Export to SIEM, firewall, EDR; API access Collaboration Sharing with peers, comments, workflows TLP/PAP support Data classification, sharing restrictions Hosting Cloud vs on-prem TIP Landscape TIP Type Strengths MISP Open source Community, free, flexible, MISP galaxies OpenCTI Open source STIX native, GraphQL API, great UI ThreatConnect Commercial SOAR built-in, playbooks ThreatQuotient Commercial Strong ecosystem, FOCUS taxonomy Anomali ThreatStream Commercial Big data integrations, intel marketplace Recorded Future Commercial Tons of sources, AI enrichment TIP Integration Pattern # Intelligence flow in a mature CTI program: # # Feeds -----> TIP (Aggregation, Enrichment, Correlation) # | # +---> SIEM (Detection: watchlists, IOCs) # +---> Firewalls (Block IOCs) # +---> EDR (Hunt queries) # +---> Email Security (Block IOCs) # +---> SOAR (Playbook enrichment) # +---> Reports/Dashboards (Strategic) # # Two-way flow: # SIEM alerts -----> TIP (add new findings) # IR incidents ----> TIP (TTP observations, new IOCs) # Hunting findings --> TIP (refine intel) # # Final delivery: # - Daily/weekly threat brief for SOC # - Ad-hoc to IR during incidents # - Monthly strategic brief for CISO/execs Conclusion Threat intelligence transforms defense from a reactive posture to an evidence-informed program.

Comments

Popular posts from this blog

Firmware Testing Strategies: Hardware-in-the-Loop, Simulation, and CI/CD Pipelines | Embedded Systems Hub

IoT Protocols Compared: MQTT, CoAP, HTTP/2, WebSocket - Performance, Overhead, and Use Cases | Embedded Systems Hub

Embedded Security: Secure Boot, ARM TrustZone, and OTA Update Integrity | Embedded Systems Hub