Stand up MISP, enable and cache curated threat feeds (CIRCL, abuse.ch, Feodo Tracker), apply warninglists to suppress false positives, query indicators with PyMISP, and export attributes as auto-generated Suricata/Sigma/Wazuh detection rules. Use when maturing a MISP instance to actively drive detection, curating threat feeds with quality controls, or automating IOC-to-detection pipelines for the SIEM/IDS.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Stand up MISP, enable and cache curated threat feeds (CIRCL, abuse.ch, Feodo Tracker), apply warninglists to suppress false positives, query indicators with PyMISP, and export attributes as auto-generated Suricata/Sigma/Wazuh detection rules. Use when maturing a MISP instance to actively drive detection, curating threat feeds with quality controls, or automating IOC-to-detection pipelines for the SIEM/IDS.
Note: This skill covers a defensive threat-intelligence platform. Handle ingested intelligence according to its Traffic Light Protocol (TLP) marking and your sharing agreements. Treat ingested IOCs as potentially sensitive.
Overview
MISP (Malware Information Sharing Platform) is the de-facto open-source threat-intelligence platform for storing, correlating, and sharing structured indicators (IOCs), events, galaxies (threat-actor/technique knowledge), and objects. Running a MISP instance is only the first step; the value comes from operationalizing it — curating high-quality feeds, suppressing false positives with warninglists, and pushing the resulting IOCs into detection tooling so intelligence actually drives blocking and alerting.
A feed in MISP is a remote source (another MISP, a CSV/freetext list, or a structured collection) that you enable and optionally cache. Caching pulls the feed's IOCs into the instance's Redis-backed cache so values can be correlated and looked up in real time (e.g., a SIEM asking "have you seen this domain?") without importing every event. Curation matters: enabling every public feed produces noise and false positives, so you select reputable feeds (CIRCL OSINT, abuse.ch, Feodo Tracker, etc.), apply warninglists (known-good ranges like RFC1918, Alexa/Tranco top sites, public DNS resolvers) to flag non-actionable indicators, and use taxonomies/tags (TLP, confidence) to scope what gets exported.
The detection-engineering payoff comes from MISP's export formats and PyMISP. MISP can render matching attributes directly as Suricata and Snort rules via the REST API, and PyMISP lets you script extraction of fresh IOCs to generate Sigma rules and Wazuh CDB lists / rules on a schedule. This skill walks the full lifecycle: feed enablement and caching, warninglist-based FP reduction, PyMISP-driven search, and automated generation of Suricata, Sigma, and Wazuh detections.
When to Use
Standing up or maturing a MISP instance into a feed that drives detection, not just a repository.
Curating and caching public/commercial threat feeds with quality controls.
Reducing IOC false positives with warninglists before they reach the SIEM/IDS.
Automating generation of Suricata/Sigma/Wazuh detections from MISP attributes.
Integrating MISP with a SOC so DNS/IP/hash lookups can be enriched against current intel.
Prerequisites
A running MISP instance (the maintained container images are the fastest path):
Caching loads feed IOCs into Redis so lookups are instant.
# Cache all enabled feeds (equivalent to "Enable caching" in the UI)print(misp.cache_all_feeds())
# Or fetch a single feed's events into the instance by feed id:print(misp.fetch_feed(1))
3. Enable warninglists to reduce false positives
Turn on known-good lists so non-actionable indicators are flagged.
# Enable the common false-positive warninglistsfor wl in misp.warninglists(pythonify=True):
if wl.name in ("List of RFC 1918 CIDR blocks",
"Top 1000 website from Cisco Umbrella",
"List of known public DNS resolvers"):
misp.toggle_warninglist(warninglist_id=wl.id, force_enable=True)
Convert MISP domains/IPs into a Wazuh CDB lookup list referenced by a rule.
# Build a Wazuh CDB list (key:value per line) from the searched attributeswithopen("misp_iocs.cdb", "w") as fh:
for a in attrs:
if a.typein ("domain", "ip-dst"):
fh.write(f"{a.value}:\n")
# On the Wazuh manager: place under /var/ossec/etc/lists/, reference in ossec.conf:# <list>etc/lists/misp_iocs</list># then compile and restart:# /var/ossec/bin/wazuh-control restart
8. Generate Sigma rules from MISP intelligence
Emit a Sigma rule matching the exported domains.
import yaml
domains = [a.value for a in attrs if a.type == "domain"]
sigma = {
"title": "MISP feed malicious domain contact",
"status": "experimental",
"logsource": {"category": "dns"},
"detection": {"selection": {"query|contains": domains}, "condition": "selection"},
"level": "high",
"tags": ["attack.command_and_control", "attack.t1071.004"],
}
withopen("misp_domains.yml", "w") as fh:
yaml.safe_dump(sigma, fh, sort_keys=False)
9. Convert and deploy Sigma to your SIEM backend
Use sigma-cli to compile to the target backend (Splunk, Elastic, etc.).