Communitygithub.com

automatisation-enrichissement-ioc

Automatise l'enrichissement des indicateurs de compromission bruts à partir de multiples sources de renseignements sur les menaces.

Qu'est-ce que automatisation-enrichissement-ioc ?

Cette compétence automatise l'enrichissement des indicateurs de compromission (IOC) en utilisant plusieurs sources de renseignements sur les menaces, telles que VirusTotal, AbuseIPDB, Shodan, MISP et autres. Elle est conçue pour être utilisée dans le cadre de playbooks SOAR (Cortex XSOAR, Splunk SOAR, Tines, n8n) ou de pipelines Python autonomes. L'objectif est de réduire le temps moyen de triage (MTTT) des analystes en pré-remplissant le contexte des alertes SIEM avec des données de réputation et de classification. La compétence inclut la gestion des limites de débit (rate limiting), la gestion des échecs, le calcul de scores de confiance composites et le routage conditionnel des alertes. Elle prend en charge des workflows parallèles (fan-out) pour interroger plusieurs API simultanément, ce qui permet d'obtenir des résultats d'enrichissement en moins de 30 secondes. La documentation fournit des exemples de code Python, des schémas d'architecture et des bonnes pratiques pour éviter les pièges courants comme l'absence de cache ou le blocage sur la latence.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/automating-ioc-enrichment

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Automatisation de l'enrichissement des IOC

Quand l'utiliser

Utilisez cette compétence quand :

  • Vous construisez un playbook SOAR qui enrichit automatiquement les alertes SIEM avec le contexte des renseignements sur les menaces avant de les router vers les analystes.
  • Vous créez un pipeline Python pour l'enrichissement en masse des IOC à partir de soumissions de courriels de phishing.
  • Vous souhaitez réduire le temps moyen de triage (MTTT) des analystes en pré-remplissant le contexte des alertes avec les données de VT, Shodan et MISP.

N'utilisez pas cette compétence pour des décisions de blocage entièrement automatisées sans examen humain — l'automatisation de l'enrichissement doit éclairer les décisions, et non exécuter des blocages en autonomie pour des actions à fort impact.

Prérequis

  • Plateforme SOAR (Cortex XSOAR, Splunk SOAR, Tines ou n8n) ou environnement Python 3.9+
  • Clés API : VirusTotal, AbuseIPDB, Shodan et au moins un TIP (MISP ou OpenCTI)
  • Point d'intégration SIEM pour la consommation d'alertes
  • Budgets de limites de débit documentés par API (VT : 4/min gratuit, 500/min entreprise)

Workflow

Étape 1 : Concevoir l'architecture du pipeline d'enrichissement

Définissez le flux d'enrichissement pour chaque type d'IOC :

Alerte SIEM → Extraire les IOC → Classifier le type → Router vers les fonctions d'enrichissement
  Adresse IP → AbuseIPDB + Shodan + VirusTotal IP + MISP
  Domaine → VirusTotal Domaine + PassiveTotal + Shodan + MISP
  URL → URLScan.io + VirusTotal URL + Google Safe Browsing
  Empreinte de fichier → VirusTotal Fichiers + MalwareBazaar + MISP
→ Agréger les résultats → Calculer le score de confiance → Mettre à jour l'alerte → Notifier l'analyste

Étape 2 : Implémenter les fonctions Python d'enrichissement

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

RATE_LIMIT_DELAY = 0.25  # 4 requêtes/seconde pour le niveau gratuit VT

@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")

    # Recherche VirusTotal IP
    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"]

    # Calculer le score de confiance composite
    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

Étape 3 : Construire le playbook SOAR (Cortex XSOAR)

Dans Cortex XSOAR, créez un playbook d'enrichissement :

  1. Déclencheur : Alerte créée dans le SIEM (via webhook ou interrogation périodique)
  2. Extraire les IOC : Utilisez la tâche "Extraire les indicateurs" avec des motifs regex pour IP, domaine, URL, empreinte
  3. Enrichissement parallèle : Déployez en éventail vers plusieurs tâches d'enrichissement simultanément
  4. Enrichissement VT : Appelez les commandes !vt-file-scan ou !vt-ip-scan
  5. Vérification AbuseIPDB : Appelez la commande !abuseipdb-check-ip
  6. Recherche MISP : Appelez !misp-search pour le croisement
  7. Agrégation de score : Tâche de transformation Python calculant le score composite
  8. Routage conditionnel : Si score ≥70 → File d'attente Haute priorité ; si 40–69 → Moyenne ; <40 → Fermeture automatique avec note
  9. Enrichissement de l'alerte : Écrire les résultats d'enrichissement dans le contexte de l'alerte pour la vue de l'analyste

Étape 4 : Gérer les limites de débit et les échecs

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

Étape 5 : Métriques et réglage

Suivez les performances du pipeline chaque semaine :

  • Latence d'enrichissement : Objectif <30 secondes entre le déclenchement de l'alerte et la sortie enrichie
  • Taux de réussite des API : Objectif >99 % (identifier les événements de limite de débit ou d'indisponibilité)
  • Taux de vrais positifs : Suivre les annulations par les analystes des scores de confiance automatisés
  • Coût : Suivre le volume d'appels API par rapport au budget (VT Enterprise : X $ pour 1 million de recherches)

Concepts clés

TermeDéfinition
SOARSecurity Orchestration, Automation, and Response — plateforme pour automatiser les workflows de sécurité et intégrer des outils disparates
Playbook d'enrichissementSéquence de workflow automatisée qui ajoute du contexte intelligent aux événements de sécurité bruts
Limitation de débitRestrictions des fournisseurs d'API sur la fréquence des requêtes (par exemple, VT gratuit : 4 requêtes/minute) ; les pipelines doivent respecter ces limites
Score de confiance compositeScore unique agrégeant les signaux de plusieurs sources d'enrichissement à l'aide d'une formule pondérée
Modèle en éventailExécution parallèle de plusieurs requêtes d'enrichissement simultanément pour minimiser la latence totale d'enrichissement

Outils et systèmes

  • Cortex XSOAR (Palo Alto) : SOAR entreprise avec plus de 700 intégrations marketplace incluant VT, MISP, Shodan et AbuseIPDB
  • Splunk SOAR (Phantom) : Plateforme SOAR avec playbooks Python ; intégration native Splunk SIEM
  • Tines : Plateforme SOAR sans code avec automatisation pilotée par webhook ; économique pour les petites équipes
  • TheHive + Cortex : Plateforme open source de RI/enrichissement avec enrichissement des observables via les analyseurs Cortex

Pièges courants

  • Blocage sur la latence d'enrichissement : Si l'enrichissement prend plus de 5 minutes, les analystes commencent à traiter des alertes non enrichies, ce qui va à l'encontre de l'objectif. Définissez des délais d'attente et fournissez des résultats partiels.
  • Absence de cache : Interroger le même IOC 50 fois génère des coûts d'API inutiles. Mettez en cache les résultats d'enrichissement pendant 24 heures par défaut.
  • Ignorer les échecs d'API silencieusement : Les appels d'enrichissement échoués doivent être journalisés et déclencher une logique de repli, et non produire silencieusement des résultats vides qui apparaissent comme des IOC propres.
  • Automatiser les blocages uniquement sur le score d'enrichissement : Les scores composites contiennent des faux positifs ; exigez une confirmation humaine pour les décisions de blocage contre une infrastructure partagée.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills associés