Cybersecurity

What are Indicators of Compromise?

An Indicator of Compromise (IoC) is forensic evidence — a file hash, IP, domain, or registry key — that a system has been or is being compromised. Here's the full taxonomy, IoC vs IoA, why IoCs decay, and how analysts actually use them.

By Inventive HQ Team

An Indicator of Compromise (IoC) is forensic evidence — a file hash, IP address, domain, registry key, or behavioral pattern — that shows a system has been or is currently being compromised. IoCs are the artifacts an attacker leaves behind: a malicious executable's SHA-256 hash, a command-and-control server's IP, a persistence mechanism in the registry, a process quietly encrypting thousands of files. Security teams collect them from threat intelligence feeds and internal detections, then search across their environment to find every system touched by the same attack.

That's the summary an AI overview gives you. It's also where most explanations stop — before the part that actually matters operationally: which IoC types are worth trusting, how they differ from Indicators of Attack (IoA), and why an indicator that's gold today can be worthless in a week. That's what this article covers.

The four IoC categories, and where each one gets caught

Every IoC falls into one of four categories, and each tends to get caught by a different layer of your stack. Mapping category to detection source is what turns "we have a feed of indicators" into "we have a pipeline that actually fires alerts."

IoC taxonomy feeding a detection pipeline Four categories of Indicators of Compromise — file-based, network-based, host-based, and behavioral — flow into a central detection pipeline of EDR, SIEM, and threat intel platforms, shown as animated pulses traveling along each connecting line. Four IoC categories, one detection pipeline File-Based hashes, filenames, paths
<rect x="410" y="55" width="200" height="60" rx="8" fill="#2813e8"/>
<text x="510" y="80" font-size="13" font-weight="bold" fill="#ffffff">Network-Based</text>
<text x="510" y="98" font-size="10" fill="#c7d2fe">IPs, domains, URLs</text>

<rect x="30" y="285" width="200" height="60" rx="8" fill="#2813e8"/>
<text x="130" y="310" font-size="13" font-weight="bold" fill="#ffffff">Host-Based</text>
<text x="130" y="328" font-size="10" fill="#c7d2fe">registry keys, processes</text>

<rect x="410" y="285" width="200" height="60" rx="8" fill="#2813e8"/>
<text x="510" y="310" font-size="13" font-weight="bold" fill="#ffffff">Behavioral</text>
<text x="510" y="328" font-size="10" fill="#c7d2fe">traffic &amp; process anomalies</text>

<rect x="250" y="170" width="140" height="60" rx="8" fill="#0f766e"/>
<text x="320" y="195" font-size="13" font-weight="bold" fill="#ffffff">Detection</text>
<text x="320" y="211" font-size="13" font-weight="bold" fill="#ffffff">Pipeline</text>
EDR · SIEM · threat intel platform Every category feeds the same pipeline — but not every category stays useful equally long.
IoC TypeExamplesTypical Detection Source
File hashMD5/SHA-256 of a known-malicious binaryEDR / antivirus
File path or nameC:\AppData\Roaming\svchost.exe masquerading as a system processEDR / forensic imaging
Malicious IP addressCommand-and-control server at 203.0.113.45:8080Firewall / network monitoring
Malicious domain or URLPhishing kit host or malware download linkDNS logs / secure web gateway
Registry keyPersistence entry added to Run or RunOnce keysHost forensics / EDR
Process or DLL nameInjected library loaded into explorer.exeEDR / memory forensics
Scheduled taskNew task re-launching a payload hourlyHost forensics / SIEM
User-agent stringMalformed or scripted UA hitting login endpointsWAF / web server logs
Behavioral patternMass file rewrite consistent with ransomware encryptionEDR / anomaly detection

File-based and host-based IoCs are cheap to detect and hard for attackers to fake — a hash either matches a binary or it doesn't. Network-based IoCs are the easiest to collect and the fastest to go stale, which is the subject of the next section.

Loading interactive tool...

Pulling these out of a raw log dump, email header, or incident report by hand is tedious and error-prone — the extractor above parses hashes, IPs, domains, and file paths out of pasted text automatically, entirely client-side.

IoC vs. IoA: reactive evidence vs. proactive intent

The distinction that separates a mature detection program from a feed-matching exercise is IoC vs. IoA. They aren't competitors — they answer different questions at different points in the attack timeline.

IoC (Indicator of Compromise)IoA (Indicator of Attack)
Answers"Did this happen?""Is this happening?"
TimingReactive — found after (or during) compromiseProactive — observed as the attack unfolds
FocusTechnical artifacts left behindAttacker behavior and intent
ExampleA known-bad file hash on diskA process attempting credential dumping via LSASS access
Maps toA static signature or blocklist entryMITRE ATT&CK tactics and techniques
Detected byAV/EDR signature match, SIEM correlation on a known bad valueBehavioral analytics, EDR heuristics, UEBA
Which matters moreConfirms scope after the fact — essential for closing an incident and hunting related compromiseStops an attack mid-execution — essential for catching damage before it happens

Neither wins alone. A useful shorthand: an IoC tells you a burglar was in the house; an IoA is the sound of the window breaking. You want to hear the window — but once it's broken, you still need to know exactly what was taken. Programs that only match IoCs are permanently one step behind; programs that only watch behavior have no fast, cheap way to triage a known threat. Use both.

Advertisement

Why network IoCs decay and file hashes don't

Not every IoC ages the same way, and treating a six-month-old IP address feed as current is one of the more common — and preventable — mistakes in threat intel operations. Attackers rotate infrastructure specifically because it's cheap for them and expensive for defenders who don't re-verify.

Why some IoCs decay faster than others Line chart comparing indicator reliability over roughly ninety days: a file hash stays reliable for months while a malicious IP address or domain loses value within days as attackers rotate infrastructure, shown by a fading marker at the end of the IP line. Indicator reliability over ~90 days reliability days since first seen → File hash / YARA rule — stays reliable for months IP / domain — decays in days as infrastructure rotates The pulsing dot marks a "stale" indicator — still in the feed, no longer useful.

A hash requires the attacker to recompile or repack the payload to evade it, which takes real effort. An IP or domain requires nothing more than switching to the next box in a bulletproof-hosting rotation — something commodity crimeware kits automate. Treat network-based IoCs as perishable inventory, not permanent records: re-verify age and last-seen date before you act on one, and prefer feeds that report a decay or confidence score over static lists.

How analysts turn IoCs into a closed incident

  1. Detect — malware, a phishing report, or an alert surfaces the initial evidence.
  2. Extract — pull every hash, file path, domain, IP, and registry artifact tied to the incident.
  3. Search — sweep the environment (EDR, SIEM, firewall logs, DNS logs) for every one of those IoCs.
  4. Scope — build the list of every system that matched at least one indicator.
  5. Pivot — investigate what else those systems did: lateral movement, data staging, additional persistence.
  6. Contain and remediate — isolate affected hosts, remove persistence, address any credential compromise by rotating exposed passwords and tokens, and restore from clean backups where needed.
  7. Harden — turn the confirmed IoCs into blocklist entries and detection rules so the same artifacts trigger automatically next time.

Worked example: one ransomware alert becomes a full sweep

Scenario: EDR flags ransomware behavior on a single workstation.

IoCs extracted from that host:

  • File hash: 5a7f6b8d9c2e1f4a...
  • File path: C:\AppData\Roaming\malware.exe
  • C2 domain: malicious-domain[.]com
  • Process name: svchost.exe running from AppData (a location the real svchost.exe never runs from)

Sweep across the fleet:

  • Every system with a file matching that hash → likely already compromised.
  • Every system that resolved or connected to that C2 domain → likely compromised or targeted.
  • Every system running a process named svchost.exe from AppData → same masquerading technique, possibly a different payload.

A single-host alert becomes a fleet-wide scope determination in minutes — which is the entire value proposition of collecting IoCs systematically instead of remediating one machine at a time.

Where IoCs actually come from

External threat intelligence:

  • CISA and other government/CERT advisories
  • Vendor threat reports (EDR, AV, and threat intel vendors)
  • Commercial and open-source threat intel feeds
  • Dark web and criminal-forum monitoring
  • ISAC/ISAO industry sharing groups

Internal detection:

  • Antivirus and EDR alerts
  • SIEM correlation and log analysis
  • Network and DNS monitoring
  • Digital forensics from a confirmed incident
  • User-reported phishing or suspicious activity

Internally-generated IoCs are usually higher-confidence than a third-party feed, because you already know they matched something real in your own environment.

Managing IoCs without drowning in stale data

Practices that actually hold up at scale:

  • Centralize collection in one platform instead of scattered spreadsheets and Slack messages.
  • Tag every indicator with source, first-seen date, and confidence — undated IoCs are the ones that cause false-positive blocking months later.
  • Automate the boring part: feed validated IoCs into detection rules and blocklists instead of manual entry.
  • Expire or re-verify network-based IoCs on a schedule; don't let a two-year-old IP sit in an active blocklist.
  • Archive retired IoCs rather than deleting them — they're valuable for retrospective hunts when a new campaign resembles an old one.

Formats and platforms:

  • STIX (Structured Threat Information eXpression) — the standard structured format for describing an indicator and its context.
  • TAXII (Trusted Automated Exchange of Intelligence Information) — the transport protocol used to exchange STIX data between organizations and platforms.
  • MISP (Malware Information Sharing Platform) — the most widely deployed open-source platform for collecting, correlating, and sharing IoCs with your team or community.
  • OpenIOC — an earlier XML-based schema from Mandiant, largely superseded by STIX but still seen in older tooling.
  • Commercial threat intel platforms that layer confidence scoring, decay tracking, and automated enrichment on top of these formats.

The bottom line

An IoC is forensic evidence, not a crystal ball — it tells you what already happened or is happening right now, using an artifact an attacker left behind. That makes it essential for scoping and closing an incident, and useless for catching something genuinely new; that's what Indicators of Attack and behavioral detection are for. File hashes and registry keys are durable evidence; IPs and domains are perishable and need re-verification before you trust them. Collect IoCs systematically, tag them with age and confidence, retire the stale ones, and pair them with behavior-based detection instead of leaning on either one alone.

Frequently Asked Questions

What is the difference between an IoC and an IoA?

An Indicator of Compromise (IoC) is evidence that an attack has already happened or is currently happening — a file hash, a malicious IP, a registry key. It's reactive and technical: something you find after (or during) a breach. An Indicator of Attack (IoA) is evidence of attacker intent and behavior before or as the damage occurs — a process trying to dump credentials, lateral movement patterns, a PowerShell command chaining recon and persistence. IoAs map more naturally to MITRE ATT&CK tactics and techniques (the "how"), while IoCs are the artifacts left behind (the "what"). Mature detection programs use both: IoAs to catch an attack in progress, IoCs to confirm scope and hunt for related compromise afterward.

What are the most common types of Indicators of Compromise?

IoCs fall into four broad categories: file-based (hashes, filenames, suspicious file paths), network-based (malicious IPs, domains, URLs, C2 ports), host-based (registry keys, scheduled tasks, unusual processes or loaded DLLs), and behavioral (mass file encryption, unusual login patterns, code injection). File hashes and registry keys tend to be the most reliable and longest-lived; IPs, domains, and URLs are the least reliable because attackers rotate infrastructure constantly.

How long are IoCs useful for before they go stale?

It depends entirely on the type. A file hash or YARA rule can stay valid for months or years because recompiling malware to dodge a hash match takes deliberate effort. A malicious IP address or domain, by contrast, is often useful for only days — attackers rent, abandon, and rotate infrastructure specifically to outrun blocklists. Registry keys and mutex names sit in between. This is why threat intel teams talk about IoC "decay" or "half-life": treat network indicators as perishable and re-verify them before acting on stale feeds.

What tools are used to detect and share Indicators of Compromise?

Detection happens through EDR/antivirus (file and process IoCs), SIEM correlation rules (log-based IoCs), firewall/DNS filtering (network IoCs), and forensic tooling (host-based IoCs). Sharing happens through structured formats and platforms: STIX (Structured Threat Information eXpression) is the standard format for describing an IoC, TAXII is the protocol used to exchange STIX data between organizations, and MISP (Malware Information Sharing Platform) is the most widely used open-source platform for collecting, correlating, and sharing IoCs across teams and communities. OpenIOC, an earlier Mandiant-authored XML schema, has largely been superseded by STIX.

Is a malicious IP address always a reliable Indicator of Compromise?

No — IP-based IoCs are the least reliable category, and blocking one blindly can both underblock and overblock. Underblock, because attackers rotate through cloud IP ranges, compromised routers, and bulletproof hosting fast enough that yesterday's C2 IP is often abandoned by the time it lands in a feed. Overblock, because shared hosting and CDNs mean a "malicious" IP can also serve legitimate traffic for unrelated tenants. Corroborate IP-based IoCs with a second signal — DNS history, WHOIS, associated file hashes, or behavioral context — before treating them as ground truth.

How do you extract IoCs from a raw log or incident report?

Manually, analysts scan text for patterns matching hashes (hex strings of a known length), IPs, domains, and file paths — slow and error-prone at scale. In practice, most teams use a parser that regex-matches these formats out of pasted logs, PCAPs, or reports and returns a clean, de-duplicated list, often already defanged for safe sharing. The Inventive HQ IoC Extractor tool below does exactly this for free, client-side, without uploading the raw text anywhere.

Can Indicators of Compromise produce false positives?

Yes, regularly. A file hash can match a legitimate but rarely-seen internal tool. An IP address flagged as malicious in a stale feed might have been reassigned to a benign tenant weeks ago. A registry key change can be a normal software update. This is why IoC hits should trigger investigation, not automatic action, unless the indicator has been freshly validated and corroborated by a second source — treating every IoC match as confirmed compromise is how security teams train themselves to ignore alerts.

Should a security team rely on IoCs alone for detection?

No. IoC-based (signature) detection only catches what's already been seen and cataloged — it's blind to novel malware, living-off-the-land techniques, and any attacker who changes a hash or rotates an IP. That's exactly what Indicators of Attack and behavioral/anomaly detection are for: they catch the technique even when the specific artifact is brand new. The strongest programs layer both — fast, cheap IoC matching for known threats, plus IoA/behavioral analytics for anything that hasn't been seen before.

indicators of compromiseIoCIoAthreat detectionforensicsincident responseMITRE ATT&CK