Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
mukul975 avatar

Automating Ioc Enrichment

  • 184 installs
  • 27.3k repo stars
  • Updated August 2, 2026
  • mukul975/anthropic-cybersecurity-skills

Automating-ioc-enrichment is an agent skill aimed at security-minded solo builders and indie teams who need to turn raw indicators into actionable context without opening five browser tabs. It packages procedural steps f

About

automating-ioc-enrichment is an agent skill aimed at security-minded solo builders and indie teams who need to turn raw indicators into actionable context without opening five browser tabs. It packages procedural steps for enriching IOCs—such as tying hashes, domains, and addresses to reputation and context—so your coding agent can run a repeatable enrichment pass as part of alert triage or post-deploy review. Because the published SKILL excerpt in the catalog is thin, treat it as a focused security automation module within mukul975’s Anthropic cybersecurity skills collection rather than a full SIEM replacement. Use it when you already have indicators from logs, a breach checklist, or a dependency audit and want structured enrichment before blocking, patching, or documenting an incident. Pair with review and monitoring skills once you have production traffic to watch.

  • Automates IOC enrichment workflows for common indicator types
  • Fits agent-driven security runbooks in Anthropic cybersecurity skill packs
  • Apache 2.0 licensed packaging from a multi-skill security repository
  • Intended to chain with broader SOC and detection skills in the same catalog

Automating Ioc Enrichment by the numbers

  • 184 all-time installs (skills.sh)
  • +5 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #808 of 2,203 Security skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill automating-ioc-enrichment

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs184
repo stars27.3k
Security audit2 / 3 scanners passed
Last updatedAugust 2, 2026
Repositorymukul975/anthropic-cybersecurity-skills

Enrich indicators of compromise (IPs, hashes, domains) automatically so a solo builder or small team can triage alerts without manual threat-intel lookups.?

Enrich indicators of compromise (IPs, hashes, domains) automatically so a developer or small team can triage alerts without manual threat-intel lookups.

Who is it for?

A developer or small team who needs enrich indicators of compromise (ips, hashes, domains) automatically so a developer or small team can triage alerts without manual threat-intel lookups..

Skip if: Teams with no use for automating-ioc-enrichment or anyone needing capabilities outside what the skill documents.

When should I use this skill?

When you need to enrich indicators of compromise (ips, hashes, domains) automatically so a solo builder or small team can triage alerts without manual threat-intel lookups..

What you get

Deliverables covering automates ioc enrichment workflows for common indicator types, fits agent-driven security runbooks in anthropic cybersecurity skill packs, apache 2.0 licensed packaging from a multi-skill security r

Files

SKILL.mdMarkdownGitHub ↗

Automating IOC Enrichment

When to Use

Use this skill when:

  • Building a SOAR playbook that automatically enriches SIEM alerts with threat intelligence context before routing to analysts
  • Creating a Python pipeline for bulk IOC enrichment from phishing email submissions
  • Reducing analyst mean time to triage (MTTT) by pre-populating alert context with VT, Shodan, and MISP data

Do not use this skill for fully automated blocking decisions without human review — enrichment automation should inform decisions, not execute blocks autonomously for high-impact actions.

Prerequisites

  • SOAR platform (Cortex XSOAR, Splunk SOAR, Tines, or n8n) or Python 3.9+ environment
  • API keys: VirusTotal, AbuseIPDB, Shodan, and at minimum one TIP (MISP or OpenCTI)
  • SIEM integration endpoint for alert consumption
  • Rate limit budgets documented per API (VT: 4/min free, 500/min enterprise)

Workflow

Step 1: Design Enrichment Pipeline Architecture

Define the enrichment flow for each IOC type:

SIEM Alert → Extract IOCs → Classify Type → Route to enrichment functions
  IP Address → AbuseIPDB + Shodan + VirusTotal IP + MISP
  Domain → VirusTotal Domain + PassiveTotal + Shodan + MISP
  URL → URLScan.io + VirusTotal URL + Google Safe Browse
  File Hash → VirusTotal Files + MalwareBazaar + MISP
→ Aggregate results → Calculate confidence score → Update alert → Notify analyst

Step 2: Implement Python Enrichment Functions

import requests
import time
from dataclasses import dataclass, field
from typing import Optional

RATE_LIMIT_DELAY = 0.25  # 4 requests/second for VT free tier

@dataclass
class EnrichmentResult:
    ioc_value: str
    ioc_type: str
    vt_malicious: int = 0
    vt_total: int = 0
    abuse_confidence: int = 0
    shodan_ports: list = field(default_factory=list)
    misp_events: list = field(default_factory=list)
    confidence_score: int = 0

def enrich_ip(ip: str, vt_key: str, abuse_key: str, shodan_key: str) -> EnrichmentResult:
    result = EnrichmentResult(ip, "ip")

    # VirusTotal IP lookup
    vt_resp = requests.get(
        f"https://www.virustotal.com/api/v3/ip_addresses/{ip}",
        headers={"x-apikey": vt_key}
    )
    if vt_resp.status_code == 200:
        stats = vt_resp.json()["data"]["attributes"]["last_analysis_stats"]
        result.vt_malicious = stats.get("malicious", 0)
        result.vt_total = sum(stats.values())

    time.sleep(RATE_LIMIT_DELAY)

    # AbuseIPDB
    abuse_resp = requests.get(
        "https://api.abuseipdb.com/api/v2/check",
        headers={"Key": abuse_key, "Accept": "application/json"},
        params={"ipAddress": ip, "maxAgeInDays": 90}
    )
    if abuse_resp.status_code == 200:
        result.abuse_confidence = abuse_resp.json()["data"]["abuseConfidenceScore"]

    # Calculate composite confidence score
    result.confidence_score = min(
        (result.vt_malicious / max(result.vt_total, 1)) * 60 +
        (result.abuse_confidence / 100) * 40, 100
    )

    return result

def enrich_hash(sha256: str, vt_key: str) -> EnrichmentResult:
    result = EnrichmentResult(sha256, "sha256")
    vt_resp = requests.get(
        f"https://www.virustotal.com/api/v3/files/{sha256}",
        headers={"x-apikey": vt_key}
    )
    if vt_resp.status_code == 200:
        stats = vt_resp.json()["data"]["attributes"]["last_analysis_stats"]
        result.vt_malicious = stats.get("malicious", 0)
        result.vt_total = sum(stats.values())
        result.confidence_score = int((result.vt_malicious / max(result.vt_total, 1)) * 100)
    return result

Step 3: Build SOAR Playbook (Cortex XSOAR)

In Cortex XSOAR, create an enrichment playbook: 1. Trigger: Alert created in SIEM (via webhook or polling) 2. Extract IOCs: Use "Extract Indicators" task with regex patterns for IP, domain, URL, hash 3. Parallel enrichment: Fan-out to multiple enrichment tasks simultaneously 4. VT Enrichment: Call !vt-file-scan or !vt-ip-scan commands 5. AbuseIPDB check: Call !abuseipdb-check-ip command 6. MISP Lookup: Call !misp-search for cross-referencing 7. Score aggregation: Python transform task computing composite score 8. Conditional routing: If score ≥70 → High Priority queue; if 40–69 → Medium; <40 → Auto-close with note 9. Alert enrichment: Write enrichment results to alert context for analyst view

Step 4: Handle Rate Limiting and Failures

import time
from functools import wraps

def rate_limited(max_per_second):
    min_interval = 1.0 / max_per_second
    def decorator(func):
        last_called = [0.0]
        @wraps(func)
        def wrapper(*args, **kwargs):
            elapsed = time.time() - last_called[0]
            wait = min_interval - elapsed
            if wait > 0:
                time.sleep(wait)
            result = func(*args, **kwargs)
            last_called[0] = time.time()
            return result
        return wrapper
    return decorator

def retry_on_429(max_retries=3):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            for attempt in range(max_retries):
                response = func(*args, **kwargs)
                if response.status_code == 429:
                    retry_after = int(response.headers.get("Retry-After", 60))
                    time.sleep(retry_after)
                else:
                    return response
        return wrapper
    return decorator

Step 5: Metrics and Tuning

Track pipeline performance weekly:

  • Enrichment latency: Target <30 seconds from alert trigger to enriched output
  • API success rate: Target >99% (identify rate limit or outage events)
  • True positive rate: Track analyst overrides of automated confidence scores
  • Cost: Track API call volume against budget (VT Enterprise: $X per 1M lookups)

Key Concepts

TermDefinition
SOARSecurity Orchestration, Automation, and Response — platform for automating security workflows and integrating disparate tools
Enrichment PlaybookAutomated workflow sequence that adds contextual intelligence to raw security events
Rate LimitingAPI provider restrictions on request frequency (e.g., VT free: 4 requests/minute); pipelines must respect these limits
Composite Confidence ScoreSingle score aggregating signals from multiple enrichment sources using weighted formula
Fan-out PatternParallel execution of multiple enrichment queries simultaneously to minimize total enrichment latency

Tools & Systems

  • Cortex XSOAR (Palo Alto): Enterprise SOAR with 700+ marketplace integrations including VT, MISP, Shodan, and AbuseIPDB
  • Splunk SOAR (Phantom): SOAR platform with Python-based playbooks; native Splunk SIEM integration
  • Tines: No-code SOAR platform with webhook-driven automation; cost-effective for smaller teams
  • TheHive + Cortex: Open-source IR/enrichment platform with observable enrichment via Cortex analyzers

Common Pitfalls

  • Blocking on enrichment latency: If enrichment takes >5 minutes, analysts start working unenriched alerts, defeating the purpose. Set timeout limits and provide partial results.
  • No caching: Querying the same IOC 50 times generates unnecessary API costs. Cache enrichment results for 24 hours by default.
  • Ignoring API failures silently: Failed enrichment calls should be logged and trigger fallback logic, not silently produce empty results that appear as clean IOCs.
  • Automating blocks on enrichment score alone: Composite scores contain false positives; require human confirmation for blocking decisions against shared infrastructure.

Related skills

FAQ

What is automating-ioc-enrichment?

automating-ioc-enrichment is an agent skill aimed at security-minded developers and teams who need to turn raw indicators into actionable context without opening five browser tabs. It packages procedural steps for enriching IOCs—such as tyin

When should I use automating-ioc-enrichment?

When you need to enrich indicators of compromise (ips, hashes, domains) automatically so a developer or small team can triage alerts without manual threat-intel lookups.

Is Automating Ioc Enrichment safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Securityauditappsec

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.