Lesson 3 of 4 · 25 min read

Enrichment for Context — Reducing Analyst Burden Without Suppressing Alerts

Not every noisy alert should be suppressed. Sometimes the right answer is to leave the alert in place and give the analyst the context to resolve it in 15 seconds instead of 5 minutes. Enrichment is the practice of appending additional data to an alert at creation time — before the analyst sees it — so triage requires no additional lookups.


Suppression vs Enrichment: Choosing the Right Tool

ScenarioRight toolWhy
Windows Defender accessing LSASS (verified, always benign)Suppression (exclusion filter)0% TP probability, no analyst value
PowerShell making network connection from developer workstationEnrichmentCould be legitimate (Ansible, dev work) or T1571/T1105 — needs context
certutil.exe with -urlcache from unknown parentEnrichment + high priorityTI check on destination URL determines next action
First-ever login from new countryEnrichmentRisk score + travel context determines if impossible travel

The rule of thumb: suppress only what you’ve verified has zero TP probability. Everything else belongs in the queue with good enrichment, not out of the queue.


Enrichment Source 1: Asset Criticality

Asset criticality is the single highest-value enrichment because it fundamentally changes the response SLA.

Alert: PowerShell download cradle detected

Without enrichment:
  Priority: Medium
  Action: Triage within 4 hours

With asset enrichment:
  Host: dc01 (Tier 0 — Domain Controller)
  Priority: Critical (auto-elevated)
  SLA: 15-minute response required
  Auto-action: Page on-call immediately

The same detection rule on a developer’s workstation (T2) is a medium-priority triage item. On a domain controller (T0), it’s an immediate P1 incident.

Implementation: Maintain an asset inventory with criticality tiers. Query it at alert creation. Most SIEMs support lookup tables or API enrichment for this.

# Splunk: enrich alerts with asset tier
... | lookup asset_inventory hostname AS ComputerName OUTPUT tier, owner, department
| eval priority=case(tier="T0", "Critical", tier="T1", "High", tier="T2", "Medium", true(), "Low")

Enrichment Source 2: User Risk Score

A user risk score contextualizes the alert actor:

Alert: Unusual process creation by jdoe

Without enrichment:
  User: jdoe
  Action: Review the process, check if legitimate

With user enrichment:
  User: jdoe (Finance, non-admin)
  Risk Score: 78/100 — HIGH
  Recent anomalies: 3 in past 7 days
    → Failed MFA challenge 2026-05-18 09:15
    → Login from new location (Chicago) 2026-05-17
    → Accessed HR data outside normal hours 2026-05-16

The risk score converts “probably legitimate dev activity” into “this user has had multiple recent anomalies — escalate.”

Sources for risk score contributors:


Enrichment Source 3: Threat Intelligence

TI enrichment queries IP/domain/hash reputation at alert creation:

Alert: outbound connection to 185.220.101.47

Without TI:
  Analyst must pivot to TI platform to check IP reputation
  Time: 2–5 minutes per alert

With TI enrichment:
  185.220.101.47 → TOR Exit Node (Recorded Future, 2026-05-19)
  Priority: High (auto-elevated)
  TI tags: anonymization, tor-exit, proxy

A TI match converts a “might be legitimate” connection into a high-priority investigation with known context.

TI enrichment types:

IndicatorSourcesSignal value
Destination IPCommercial TI feeds, free blocklists, internal IOC dbHigh for confirmed C2; moderate for scanners
DomainPDNS analysis, newly-registered domains, public blocklistsHigh for known malware domains
File hashVirusTotal API, internal malware dbVery high if AV-detected; zero if just “unseen”
User agentKnown-bad user agents from threat reportsModerate (easy to change)

Important caveats:


Enrichment Source 4: Behavioral Baseline

“How often does this entity do this behavior?”

Alert: PowerShell network connection from ws-dev-12

Without baseline:
  Analyst: "Is this normal for dev workstations?"

With baseline:
  ws-dev-12 PowerShell network connections (30-day baseline): 0
  This is the FIRST TIME this behavior has been seen on this host.
  Similar hosts (developer workstations): 3.2 connections/day average

First-time behavior is high signal. A user who never accesses HR systems suddenly accessing them at 2am — even if no TI hit — is worth investigating.

Implementation: Precompute baselines per entity (host, user, user+host pair) using a 30-day rolling window. Alert on first-time occurrences or significant deviations from baseline.


Putting It Together: Enriched Alert Template

ALERT: PowerShell Network Connection [HIGH]
Rule: T1071.001 — Web Protocols C2 via PowerShell
Time: 2026-05-20 09:41:23 UTC

SOURCE PROCESS:
  Image: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  CommandLine: powershell.exe -enc <base64>
  Parent: C:\Windows\explorer.exe (user-launched)
  User: jdoe@corp.com

DESTINATION:
  IP: 185.220.101.47
  Port: 443
  TI: TOR Exit Node (Recorded Future 2026-05-19) ← TI enrichment

ACTOR CONTEXT:
  jdoe: Risk Score 78 (HIGH) — 3 anomalies in 7 days ← user enrichment

ASSET CONTEXT:
  ws-finance-04: Tier 2 workstation | Owner: jdoe | Dept: Finance ← asset enrichment

BEHAVIORAL BASELINE:
  PowerShell outbound from ws-finance-04: 0 times in 30 days ← baseline
  First-time behavior for this host

PRIORITY: AUTO-ELEVATED TO HIGH
  Reason: T0/T1 host check: T2 (standard). TI match: TOR exit. First-time behavior.

RUNBOOK: https://wiki/runbooks/ps-c2

An analyst reads this and makes a triage decision in under 30 seconds: TOR exit + high-risk user + encoded PowerShell + first-time behavior = likely real. Escalate.

Red Canary Threat Detection Report— Red Canary