IntermedioTheHiveCortexincident responseenrichmentherramientas CTI

TheHive y Cortex: Gestion de Incidentes y Enrichment Automatizado

TheHive como plataforma de gestion de incidentes y Cortex como motor de enrichment automatizado. Arquitectura, analyzers, responders, integracion con MISP y flujos de respuesta.

MalwareIntel Research··10 min lectura
Serie: Cyber Threat Intelligence — Parte 26

TheHive y Cortex forman el tandem open source de referencia para gestion de incidentes con enrichment automatizado de indicadores

Responder a un incidente de seguridad implica gestionar casos, enriquecer indicadores, coordinar tareas entre analistas y documentar acciones. TheHive resuelve la gestion de casos. Cortex resuelve el enrichment automatizado. Juntos, con MISP como tercer pilar, forman la trilogia open source mas desplegada en SOCs y equipos CERT.

TheHive: gestion de incidentes centrada en observables

TheHive es una plataforma de Security Incident Response (SIRP) disenada para equipos SOC y CERT. Su modelo de datos gira en torno a tres conceptos: alertas, casos y observables.

Modelo de datos

Alertas: entradas automaticas desde SIEMs, feeds o herramientas de deteccion. Una alerta es un evento que requiere atencion pero todavia no es un incidente confirmado. TheHive recibe alertas via API y las presenta al analista para triaje.

Casos: cuando una alerta se confirma como incidente, se promueve a caso. Un caso contiene:

  • Titulo, descripcion y severidad (1 a 4)
  • TLP (Traffic Light Protocol) y PAP (Permissible Actions Protocol)
  • Tareas asignables a analistas con SLA de resolucion
  • Observables (los IOCs del incidente)
  • Logs de investigacion
  • Metricas de tiempo (TTD, TTR, TTC)

Observables: los indicadores asociados a un caso. IPs, dominios, hashes, URLs, emails, nombres de archivo. Cada observable tiene tipo, valor, TLP y estado de analisis. Los observables son el punto de conexion con Cortex: se envian a Cortex para enrichment automatizado.

Gestion de tareas y SLA

TheHive permite definir plantillas de caso con tareas predefinidas. Para un incidente de tipo "Phishing", la plantilla puede incluir:

Caso: Phishing Campaign
Severidad: 2 (Medium)
TLP: AMBER

Tareas:
  1. Analisis de cabeceras del email         → Analista N1 → SLA: 1h
  2. Extraccion y analisis de adjuntos        → Analista N2 → SLA: 2h
  3. Verificacion de URLs en sandbox          → Analista N2 → SLA: 2h
  4. Busqueda de otros destinatarios          → Analista N1 → SLA: 1h
  5. Bloqueo de remitente y URLs              → Analista N3 → SLA: 30min
  6. Notificacion a usuarios afectados        → Coordinador → SLA: 4h
  7. Documentacion y cierre                   → Analista N1 → SLA: 1h

Cada tarea tiene un log donde el analista documenta sus hallazgos. Los SLAs se monitorizan automaticamente, generando alertas cuando se aproxima el vencimiento.

API REST

TheHive expone una API REST completa que permite automatizar todas las operaciones:

# Crear una alerta desde un SIEM
curl -XPOST https://thehive.local/api/alert \
  -H "Authorization: Bearer API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Conexion a C2 conocido",
    "description": "Host 10.0.1.45 conectando a 198.51.100.23 (Emotet C2)",
    "type": "siem_alert",
    "source": "QRadar",
    "severity": 3,
    "tlp": 2,
    "artifacts": [
      {"dataType": "ip", "data": "198.51.100.23", "message": "C2 IP"},
      {"dataType": "ip", "data": "10.0.1.45", "message": "Host interno"}
    ]
  }'

Cortex: motor de enrichment con 150+ analyzers

Cortex es el companion de TheHive para analisis automatizado de observables. Recibe un observable (IP, hash, dominio) y lo envia a multiples fuentes de inteligencia en paralelo, devolviendo un informe consolidado.

Conceptos: analyzers y responders

Analyzers: consultan fuentes externas y devuelven informacion. Son de solo lectura: no modifican nada, solo enriquecen. Ejemplos:

AnalyzerFuncionTipo de observable
VirusTotal_GetReportReputacion y deteccionesHash, IP, dominio, URL
AbuseIPDB_1_0Reportes de abuso de IPIP
Shodan_HostPuertos abiertos, bannersIP
MISP_2_1Busqueda en instancia MISPCualquiera
OTX_QueryPulsos de AlienVaultIP, dominio, hash
DomainTools_ReverseIPDominios en la misma IPIP
CRTsh_TransparencyCertificados SSLDominio
Censys_1_0Hosts y certificadosIP, dominio
PassiveTotalDNS historico, WHOISIP, dominio
MalwareBazaar_1_0Muestras de malwareHash
Yara_2_0Escaneo con reglas YARAArchivo

Responders: ejecutan acciones. A diferencia de los analyzers, los responders modifican estado: bloquean IPs en firewalls, desactivan usuarios en Active Directory, envian notificaciones. Ejemplos:

ResponderAccion
Mailer_1_0Envia email de notificacion
Wazuh_1_0Crea regla de bloqueo en Wazuh
MISP_2_1Crea evento en MISP con los observables
Velociraptor_1_0Ejecuta hunt en endpoints
TheHive_1_0Actualiza caso en TheHive

Ejecucion de analyzers

Cuando un analista anade un observable a un caso en TheHive, puede ejecutar analyzers de Cortex con un clic. Cortex lanza los analyzers en paralelo y devuelve los resultados a TheHive, donde se muestran como informes del observable.

El flujo tecnico:

TheHive Observable → Cortex API → Analyzer 1 (VirusTotal)  → Resultado
                                → Analyzer 2 (AbuseIPDB)   → Resultado
                                → Analyzer 3 (Shodan)       → Resultado
                                → Analyzer 4 (MISP)         → Resultado
                                ← Resultados consolidados ← TheHive

Creacion de analyzers personalizados

Cortex permite escribir analyzers en Python. Un analyzer basico tiene esta estructura:

#!/usr/bin/env python3
from cortexutils.analyzer import Analyzer

class MalwareIntelAnalyzer(Analyzer):
    def __init__(self):
        Analyzer.__init__(self)
        self.api_url = self.get_param(
            'config.api_url', None, 'API URL is missing'
        )
        self.api_key = self.get_param(
            'config.api_key', None, 'API key is missing'
        )

    def run(self):
        data = self.get_data()  # El observable (IP, hash, dominio)
        data_type = self.data_type  # "ip", "hash", "domain", etc.

        # Consultar la API
        response = requests.get(
            f"{self.api_url}/api/v1/iocs/search",
            params={"value": data},
            headers={"X-API-Key": self.api_key}
        )

        if response.status_code == 200:
            result = response.json()
            self.report({
                'found': True,
                'family': result.get('malware_family'),
                'confidence': result.get('confidence'),
                'first_seen': result.get('first_seen'),
                'tags': result.get('tags', [])
            })
        else:
            self.report({'found': False})

    def summary(self, raw):
        """Resumen para la miniatura en TheHive"""
        taxonomies = []
        if raw.get('found'):
            taxonomies.append(self.build_taxonomy(
                'malicious', 'MalwareIntel', 'Family',
                raw.get('family', 'Unknown')
            ))
        return {'taxonomies': taxonomies}

Arquitectura: la trilogia TheHive + Cortex + MISP

La combinacion de estas tres herramientas cubre el ciclo completo de respuesta a incidentes:

Fuentes de alertas                    Fuentes de inteligencia
(SIEM, IDS, EDR, email)              (feeds, reports, IOCs)
        │                                      │
        ▼                                      ▼
   ┌─────────┐    observables    ┌──────────┐
   │ TheHive  │ ───────────────► │  Cortex  │
   │  (SIRP)  │ ◄─────────────── │(analyzers│
   │          │    resultados     │responders│
   └────┬─────┘                  └──────────┘
        │                              │
        │  IOCs confirmados            │ analyzers MISP
        ▼                              ▼
   ┌─────────┐                   ┌──────────┐
   │  MISP   │ ◄────────────────│  Fuentes  │
   │ (TIP)   │   sharing         │ externas  │
   └─────────┘                   └──────────┘

TheHive gestiona el incidente: alertas, casos, tareas, observables, metricas.

Cortex enriquece los observables: consulta 150+ fuentes y ejecuta responders.

MISP almacena y comparte inteligencia: los IOCs confirmados se publican como eventos MISP para consumo de la comunidad o de otras organizaciones.

Flujo de datos entre los tres

  1. Un SIEM envia una alerta a TheHive via API
  2. El analista revisa la alerta y la promueve a caso
  3. Los observables del caso se envian a Cortex para enrichment
  4. Cortex ejecuta analyzers (VirusTotal, Shodan, AbuseIPDB, MISP lookup)
  5. Los resultados se muestran en TheHive junto al observable
  6. El analista confirma que los IOCs son maliciosos
  7. Los IOCs confirmados se exportan a MISP como evento
  8. MISP los comparte con la comunidad via feeds STIX/TAXII
  9. Los responders de Cortex ejecutan acciones: bloqueo en firewall, aislamiento de host

Instalacion con Docker Compose

El despliegue de la trilogia completa se simplifica con Docker Compose:

version: "3.8"
services:
  thehive:
    image: strangebee/thehive:5.3
    ports:
      - "9000:9000"
    environment:
      - TH_CORTEX_URL=http://cortex:9001
      - TH_CORTEX_KEY=${CORTEX_API_KEY}
    volumes:
      - thehive-data:/opt/thp/thehive/data
    depends_on:
      - elasticsearch
      - cortex

  cortex:
    image: thehiveproject/cortex:3.1
    ports:
      - "9001:9001"
    volumes:
      - cortex-data:/opt/cortex/data
    depends_on:
      - elasticsearch

  elasticsearch:
    image: elasticsearch:7.17.18
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=false
    volumes:
      - es-data:/usr/share/elasticsearch/data

  misp:
    image: coolacid/misp-docker:core-latest
    ports:
      - "443:443"
    environment:
      - [email protected]
    volumes:
      - misp-data:/var/www/MISP

volumes:
  thehive-data:
  cortex-data:
  es-data:
  misp-data:

Despues del despliegue, la configuracion inicial incluye:

  1. Crear organizacion y usuario administrador en TheHive
  2. Configurar analyzers en Cortex con las API keys de servicios externos
  3. Conectar TheHive con Cortex (URL + API key)
  4. Conectar Cortex con MISP (analyzer MISP_2_1)
  5. Configurar feeds de alertas desde el SIEM

Workflow completo: de alerta a respuesta

Un ejemplo concreto de flujo de trabajo con las tres herramientas:

Fase 1: Deteccion y triaje

El SIEM detecta trafico hacia una IP conocida como C2 de Emotet. Envia alerta automatica a TheHive con la IP del C2 y la IP del host interno como observables.

El analista N1 revisa la alerta en TheHive. Ve que la IP del C2 coincide con indicadores de Emotet. Promueve la alerta a caso con severidad 3 (High) y TLP:AMBER.

Fase 2: Enrichment

El analista ejecuta los analyzers de Cortex sobre la IP del C2:

  • VirusTotal: 45/90 motores la detectan como maliciosa
  • AbuseIPDB: 127 reportes de abuso en los ultimos 30 dias
  • Shodan: puerto 443 abierto, certificado autofirmado, ASN sospechoso
  • MISP: coincide con evento MISP de campana Emotet Q1 2026
  • MalwareBazaar: 12 muestras asociadas a esta IP

Cortex consolida todos los resultados y los presenta en TheHive junto al observable.

Fase 3: Analisis y contencion

El analista N2 revisa los resultados de enrichment. Confirma que es un C2 de Emotet activo. Ejecuta tareas:

  • Aislar el host comprometido (responder: EDR isolate)
  • Bloquear la IP en el firewall perimetral (responder: firewall block)
  • Buscar otros hosts que contactaron la misma IP (tarea manual en SIEM)

Fase 4: Documentacion y comparticion

Los IOCs confirmados (IP del C2, hash del dropper, URL del payload) se exportan a MISP como evento "Emotet C2 activo". MISP lo comparte con las comunidades configuradas.

El caso se cierra en TheHive con metricas: TTD 15 min, TTR 2h, TTC 4h.

Comparativa con alternativas comerciales

CaracteristicaTheHive + CortexIBM SOAR (QRadar)Palo Alto XSOARSplunk SOAR
CosteOpen source (Enterprise opcional)Licencia comercial altaLicencia comercial altaLicencia comercial alta
Analyzers/Enrichment150+ (Cortex)Integrado en QRadar700+ integraciones300+ apps
Gestion de casosCompletaCompletaCompletaCompleta
PlaybooksBasicos (webhooks)Avanzados (visual)Avanzados (visual)Avanzados (visual)
Multi-tenancyEnterpriseSiSiSi
Integracion MISPNativaVia pluginVia pluginVia plugin
On-premiseSi (por defecto)SiSi/CloudSi/Cloud
ComunidadActiva (StrangeBee)Soporte comercialSoporte comercialSoporte comercial
Curva aprendizajeMediaAltaAltaAlta

La ventaja principal de TheHive + Cortex: coste cero de licencias con funcionalidad comparable. La desventaja: los playbooks visuales de las alternativas comerciales son mas sofisticados. Para equipos con presupuesto limitado o que priorizan soberania de datos (on-premise), la trilogia open source es la opcion natural.

Integracion con SIEM

TheHive se integra con los principales SIEMs para recibir alertas automaticas:

QRadar: via Offense Forwarding Rules que envian alertas a la API de TheHive.

Splunk: via Splunk Alert Actions que llaman al endpoint de alertas de TheHive.

Elastic SIEM: via Watcher o acciones de reglas de deteccion que envian webhooks.

Wazuh: via integracion nativa (modulo wazuh-thehive) que envia alertas de nivel configurable.

La clave de la integracion es mapear correctamente los campos del SIEM a los observables de TheHive. IPs, hashes, dominios y URLs del evento SIEM se convierten en observables del caso, listos para enrichment con Cortex.

Recursos

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.