IOC Enrichment
SkillDev toolsEnrich indicators (IPs, domains, URLs, hashes) with reputation and context, grade source reliability with the Admiralty Code, and respect TLP and data-egress rules; use when a case contains external indicators.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the IOC Enrichment skill
What this skill tells your AI
The instructions your AI receives, as published by gensecaihq/wazuh-autopilot in backend/app/skills/ioc-enrichment/SKILL.md and read by ahel’s review.
Turn raw indicators into decisions: block, watch, or ignore. NIST CSF 2.0 ID.RA (threat intelligence informs risk) and DE.AE (context for adverse events).
Procedure
get_case— list indicators with roleattackerorobservedthat are public: public IPs, internet domains, URLs, file hashes.- For each (max 20 per run, attacker-role first):
check_ioc_reputation(indicator=...)— reputation verdict and sources.analyze_security_threat(indicator=..., indicator_type=...)— threat context.search_security_events(query=<indicator>, srcip=<ip>, time_range="7d")— internal sightings (how many hosts?). For hashes, check whether the Wazuh VirusTotal integration already scored the file: rule 87105 (level 12) means positives were found; rule 87104 means none; rules 87101, 87102 are integration errors (rate limit, credentials), not verdicts.get_wazuh_alerts(rule_groups=["virustotal"])lists them. Loadwazuh-malware-detectionfor detail.
- Optionally
search_external_contextfor public reporting — see egress rules. - Grade each source with the Admiralty Code; combine into a verdict.
Egress rules for search_external_context
search_external_context sends the query outside the environment (third-party web
search). Only send:
- Public IPs, public domains/URLs, file hashes, CVE ids, malware/actor names.
Never send: internal hostnames, internal IPs (RFC 1918 etc.), usernames, email addresses, case ids, customer names, file paths, or raw log lines. If unsure, don't send. Respect TLP: indicators received as TLP:RED or TLP:AMBER+STRICT must not be queried externally.
Admiralty Code (NATO / STANAG 2511)
Source reliability: A completely reliable · B usually reliable · C fairly reliable · D not usually reliable · E unreliable · F cannot be judged. Information credibility: 1 confirmed by other sources · 2 probably true · 3 possibly true · 4 doubtful · 5 improbable · 6 cannot be judged.
Typical grading: commercial/curated feed with history → B; single open-source blocklist → C; one-off paste or forum post → D/F. Internal Wazuh sightings of confirmed attacks → A1.
Pyramid of Pain (value of blocking)
Hash values (trivial for attacker to change) < IP addresses < Domain names < Network/host artifacts < Tools < TTPs (hardest to change). Prefer recommending detections on artifacts/TTPs; treat IP blocks as short-lived (24h–7d).
Verdict per indicator
| Verdict | Criteria | Recommendation |
|---|---|---|
| malicious | ≥ 1 reliable (A/B) source rates malicious, or confirmed internal attack | block (time-bound), hunt for other sightings |
| suspicious | only C/D sources, or behaviour-only | watch; include in detection review |
| benign | known CDN / cloud provider / business partner with clean history | do not block; note shared-infrastructure risk |
| unknown | no data | rely on behavioural evidence |
Shared infrastructure warning: cloud/CDN IPs (large providers) host many tenants — blocking them can cause outages; state this explicitly.
Output
add_entitiesupdating each indicator'senrichment: verdict, sources with Admiralty grade, first/last seen internally, internal host count, TLP.add_findingtitledIOC enrichmentwith the per-indicator table and recommendation. standard_refs:NIST-CSF-2:ID.RA,NIST-CSF-2:DE.AE.update_caseconfidence if intelligence materially changes it.
Signals
- GitHub stars
- 57
- Forks
- 16
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
ioc-enrichment- Source
- github.com/gensecaihq/wazuh-autopilot