What is an IOC, really?

An Indicator of Compromise (IOC) is any observable artefact that suggests an intrusion: an IP address, a domain, a file hash, a registry key, a user-agent string. The concept is simple. The hard part is using them without turning your SIEM into a noise machine.


The four classic families

Family Examples Typical shelf life
Network IPs, domains, URLs Hours to weeks
File MD5, SHA-1, SHA-256, imphash Short — trivially mutated
Host Registry keys, mutexes, scheduled tasks Days to months
Behavioural TTPs, command-line patterns Months to years

The higher you climb the pyramid of pain, the harder it is for an adversary to change the indicator. Hashes are cheap to rotate. TTPs are expensive.


Where IOC pipelines break

  1. Confidence is missing. A raw hash list with no source, no first-seen, no context will produce false positives at scale.
  2. Context decays. An IOC from 2021 might now point to a legitimate service.
  3. Enrichment is lazy. Blocking an IP without checking whether it is a shared CDN will page your on-call.

A simple intake checklist

  • Source and trust level
  • First-seen / last-seen
  • Associated campaign or family
  • Suggested action (alert / block / hunt)
  • Expiration date

If an IOC feed does not give you at least the first three, treat it as hunting material — not blocking material.


Using Mlab for IOC triage

On mlab.sh you can paste any IP, domain, hash, or URL and get a normalized answer in seconds. That is the fast, read-only path. For production pipelines, the developer API gives you the same data as JSON.


IOCs are a tool, not a religion. Use them to accelerate investigation, not replace it.