Skip to content
Back to skills

Ioc Hunter

ASecurity

Threat-intel IOC workflow — feed curation (MISP/OpenCTI/vendor/ENISA/CISA), deduplication, confidence scoring (TLP, source reputation, age, sightings), enrichment pipeline to SIEM/EDR, retro-hunt over an N-day window, and lifecycle (expiry + retirement).

  • 4 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 28, 2026
securityrustgoexpressgitapisecuritydocumentation

Works with

  • api

Security analysis

A100/100

Scanned May 28, 2026

npx -y skills add roodlicht/accans-sec-skills --skill ioc-hunter --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ioc Hunter?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ioc Hunter
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/roodlicht-ioc-hunter/badge)](https://www.skillsdirectory.com/skills/roodlicht-ioc-hunter)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ioc-hunter
description: Threat-intel IOC workflow — feed curation (MISP/OpenCTI/vendor/ENISA/CISA), deduplication, confidence scoring (TLP, source reputation, age, sightings), enrichment pipeline to SIEM/EDR, retro-hunt over an N-day window, and lifecycle (expiry + retirement).
---

# IOC Hunter

> **Source discipline and TLP respect**: IOCs come with a share policy (TLP-RED/AMBER/GREEN/CLEAR). Forwarding to parties the feed contract does not allow is a breach of trust and, in some contracts, of license. Sharing where permitted (intra-industry ISAC, CSIRT-NL, sector PAC) is a net-positive habit.

## When to use

IOCs (Indicators of Compromise) are the tactical layer of threat intel: hashes, IPs, domains, URLs, mutexes, certificate fingerprints, JA3/JA4 strings. This skill helps manage feeds, dedup and confidence-score them, plug them into SIEM/EDR, and retro-hunt.

Triggers on:

- A question like "add this IOC feed to our stack", "is this hash known", "retro-hunt the last 30 days against these IOCs", "how do we score IOC confidence", "set up a MISP instance".
- A handoff from `detection-engineer` (rule needs IOC input), `log-triage` or the `threat-hunt` command (enrichment of findings), `malware-triage` (extracted IOCs to be integrated).
- A new APT-campaign publication whose IOCs need processing.
- A periodic (quarterly) feed-hygiene review: which feeds deliver value, which do not.

### When NOT (handoff)

- Writing a detection rule that consumes the IOC → `detection-engineer`. This skill provides the IOC input.
- Triage of the alert that fires from an IOC match → `log-triage`.
- A threat-hunt session itself → the `threat-hunt` command.
- Malware-sample analysis that produces IOCs → `malware-triage`.
- Forensic confirmation of IOC impact → `forensics-assist`.
- Strategic CTI (actor profiles, geopolitical context) is out of scope here — that is separate CTI work, not in this skill.
- Vulnerability feed (CVEs) → `cve-triage`.

## Approach

Six phases. Phase 2 (confidence scoring) and phase 5 (retro-hunt) are where IOC work delivers operational value.

### 1. Feed curation

Which feeds deserve your SIEM bandwidth? Not all of them.

**Source categories**:

- **Government / national CERT**: CISA AIS, NCSC-NL, ENISA feeds, BSI (DE), ANSSI (FR). High-trust, sometimes delayed.
- **ISAC / sector PAC**: FI-ISAC NL for financial, MS-ISAC for government. Sector-specific relevance.
- **Commercial CTI**: Mandiant, Recorded Future, CrowdStrike Intelligence, Mandiant Advantage, IntSights/Rapid7, Group-IB. High quality, high price.
- **Open-source/community**: AlienVault OTX, abuse.ch (URLhaus, MalwareBazaar, ThreatFox), Spamhaus, Emerging Threats. Mixed quality, free or low-cost.
- **Vendor-specific threat intel**: Microsoft Security Graph, Cisco Talos, Palo Alto Unit 42 — often baked into the product license.
- **Internal sources**: your own incidents produce the highest-trust IOCs for your organization. Categorize as "internal" with a separate TTL.

**Curation criteria**:

- Coverage: does the feed cover sectors/regions that touch you?
- Freshness: how quickly after an incident does an IOC appear in the feed?
- Validity: what % of IOCs are still true-positive after 30/60/90 days?
- False-positive history: known noisy feeds (e.g. NRD feeds that flag every newly registered domain) need a separate cadence.
- Format: STIX 2.1 / OpenIOC / MISP event format / CSV. STIX is the de facto standard.

A feed that is not used for matching or retro-hunt does not deserve its ingest slot. Periodically downscale.

### 2. Deduplication and confidence scoring

One IP can show up in 5 feeds. A hash with 12 sources is not 12× more valuable than one with 1 source — but somewhat more. Confidence model:

- **Source-reputation score** per feed (kept internally based on TP-rate history). High-trust source = higher weight.
- **Age**: the older an IOC, the less relevant. Default decay: confidence halves after 30 days; after 90 days it is a retirement candidate unless there is APT context. Some IOC types age faster (IPs > domains > hashes for sustained malware).
- **Sightings**: number of times reported by different sources. Boosts confidence positively, not linearly.
- **TLP**: not so much confidence as a sharing restriction. TLP-RED = specific audience only, TLP-AMBER = limited external, TLP-GREEN = community, TLP-CLEAR = open. Sharing discipline: never upgrade TLP without source consent.
- **Type-specific**:
  - **Hashes** (SHA-256 preferred): highest precision, long life provided the hash does not change. Low false-positive risk.
  - **IPs**: short-lived in cloud context (CDN-shared, ephemeral cloud resources). Drop confidence quickly, retire after 14–30 days unless confirmed APT infrastructure.
  - **Domains**: medium life; sinkholing and takedowns accelerate retirement. Watch out for wildcard-feed noise.
  - **URLs**: short-lived, exploit-kit rotation. Retire fast.
  - **JA3/JA4 fingerprints**: TLS-handshake fingerprint, sustained as long as the malware author keeps the same TLS stack.
  - **Email addresses / sender domains**: medium life, BEC context.
  - **Mutexes**: implementation detail, sustained.
  - **Yara rules**: a pattern, not an IOC, but a functionally related layer — see `malware-triage`.

**Dedup** implementation: MISP/OpenCTI do this natively when events are merged on the same attribute. A custom stack needs its own normalization (canonical form of IPs, lowercased domains, hash-format normalization).

### 3. Storage and sharing layer

- **MISP** (open-source) — the de facto standard for threat-sharing platforms in the EU. Event-based, multi-tenant, sharing policy per event/attribute. Strong in the NL/EU community via FI-ISAC and CSIRT-NL.
- **OpenCTI** (open-source) — more modern, knowledge-graph oriented, better visualization. Imports STIX 2.1 natively.
- **Anomali ThreatStream**, **EclecticIQ**, **Recorded Future** — commercial alternatives.
- **Commercial-platform choice** is usually contractual with a CTI feed vendor. Open-source self-hosted (MISP) is feasible for medium-size orgs.

**Sharing direction**:

- **Inbound**: integrate feeds via MISP-sync, STIX/TAXII feeds, OpenCTI connectors, or API pulls.
- **Outbound**: what do you generate yourself and share back? Internal IOCs from incidents, thinly confirmed detections. NL FI-ISAC and CSIRT-NL accept contributions. Anonymize where TLP policy requires.

### 4. Enrichment pipeline to SIEM and EDR

An IOC that does not match anywhere is dead weight. Pipeline to make them active:

- **SIEM ingestion**: feeds into lookup tables (Splunk lookup files, Sentinel watchlists, Elastic enrich policies). Fresh feed = fresh lookup. Default refresh cadence hourly to daily depending on feed update tempo.
- **EDR ingestion**: native IOC modules in Microsoft Defender, CrowdStrike Falcon, SentinelOne, Carbon Black accept IOCs as a blocklist or detection trigger. Differentiate detect-only vs. auto-block per type.
- **Network tooling**: firewall blocklists (IP/domain), DNS-RPZ (recursive policy zone) for domain blocking, proxy/SWG categorization.
- **Email gateway**: sender domains, hashes for attachments. Microsoft 365 Defender, Proofpoint, Mimecast.

Enrichment discipline: not every feed in every layer. High-confidence actor feeds → block action; lower-confidence feeds → detect-only with a SIEM alert. Aggressive blocking on weak feeds is operational disruption.

### 5. Retro-hunt and lifecycle

- **Retro-hunt on new IOCs**: with each new high-confidence feed update, sweep the last N days of logs (typically 30–90 days, depending on retention and compute budget). With `siem-query` as the building block.
- **Hits triage**: a retro-hit is not a confirmed compromise — it can be benign historical traffic. Path to confirmation via `log-triage` (was the actor suspicious?) and `forensics-assist` (was there a follow-on action?).
- **IOC lifecycle**:
  - **Active**: in scoring, in lookup tables.
  - **Aging**: confidence falling, in detect-only mode.
  - **Retired**: out of active detection. Keep in archive for later retro-hunt.
  - **Re-promote**: an old IOC reappears in a new feed or incident → re-activated with fresh confidence.
- **Expiry discipline**: feed IOCs have a default TTL from the feed policy. Internal IOCs use a manual expiry (default 90 days, revisable).

### 6. Verification-loop

Layer 1: scope (feed curation up to date, no feeds nobody reads anymore?), assumptions (IOC source-reputation scoring based on data, not gut feel?), gaps (TLP policy respected on sharing-out, retro-hunt cadence on new high-conf feeds?). Layer 2: feed sources alive (multiple CTI vendors merge or shut down — verify URLs and API status), TLP classification correct (TLP 2.0 since 2022, the old TLP-AMBER+STRICT no longer exists as such), STIX version consistent (STIX 2.1 default in 2024+).

## Output

Two modes: feed management (in advance, living) and a hunt report (after a retro-hunt or investigation).

**Feed-management mode**:

```
IOC feed inventory
Date: YYYY-MM-DD | Reviewer: <name>

Active feeds:
  Name | Category | Format | Update cadence | Source reputation | TLP policy

Per feed:
  Coverage:           <regions, sectors>
  Freshness:          <average delay between incident and publication>
  Validity rate:      <% TPs after 30/60/90 days>
  TP-rate trend:      <stable / falling / rising>
  Decision:           <retain / downgrade / replace / drop>

Sharing-out:
  Internal IOCs generated: <N>
  Shared via: <FI-ISAC NL / MISP-sync / CSIRT-NL>
  TLP classification: <per IOC>

Coverage gaps:
  <which threat clusters not covered by current feeds>
```

**Hunt report** (after retro-hunt on a new IOC set):

```
IOC retro-hunt — <feed update / campaign name>
Window: last N days | Date: YYYY-MM-DD

Input IOCs:
  Hashes: N | IPs: N | Domains: N | URLs: N | JA3/JA4: N

Hits per type:
  Hash:    N (true-positive: M, false-positive: K, pending triage: L)
  IP:      N (...)
  Domain:  N (...)
  URL:     N (...)

Confirmed sightings:
  - <IOC + match context + system + timestamp + handoff>

Pending triage:
  - <IOC + reason for uncertainty + next step>

Handoffs:
  ir-runbook:         <if confirmed compromise>
  log-triage:         <pending-triage depth>
  detection-engineer: <if IOCs basis for a new rule>
  forensics-assist:   <if post-incident investigation needed>

Verification-loop: ...
```

## References

- **MISP** — [https://www.misp-project.org/](https://www.misp-project.org/). De facto threat-sharing platform, open-source, widely used in EU/NL.
- **OpenCTI** — [https://www.opencti.io/](https://www.opencti.io/). Modern threat-intel platform with a knowledge graph.
- **STIX 2.1** — [https://oasis-open.github.io/cti-documentation/](https://oasis-open.github.io/cti-documentation/). Structured Threat Information Expression standard.
- **TAXII 2.1** — [https://oasis-open.github.io/cti-documentation/taxii/intro](https://oasis-open.github.io/cti-documentation/taxii/intro). Transport mechanism for STIX.
- **TLP 2.0** — [https://www.first.org/tlp/](https://www.first.org/tlp/). Traffic Light Protocol, FIRST-maintained.
- **abuse.ch** (URLhaus, MalwareBazaar, ThreatFox) — [https://abuse.ch/](https://abuse.ch/). Open-source IOC feeds.
- **AlienVault OTX** — [https://otx.alienvault.com/](https://otx.alienvault.com/). Community pulse-based feeds.
- **CISA AIS** — [https://www.cisa.gov/topics/cyber-threats-and-advisories/information-sharing/automated-indicator-sharing-ais](https://www.cisa.gov/topics/cyber-threats-and-advisories/information-sharing/automated-indicator-sharing-ais).
- **NCSC-NL Threat Intel** — [https://www.ncsc.nl/](https://www.ncsc.nl/).
- **MITRE ATT&CK** — [https://attack.mitre.org/](https://attack.mitre.org/). For mapping IOCs to TTPs.

## Categories

- blue

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.