Saltearse al contenido

TheHive y Cortex

Una misma VM aloja TheHive (gestión de casos e incidentes; recibe las alertas críticas escaladas desde Graylog) y Cortex (análisis de observables mediante analyzers y respuesta mediante responders).

ParámetroValor
VM106 · thehive-cortex
Redesprod0 + log0
IP (prod0)172.17.33.104
Acceso (TheHive)http://172.17.33.104:9000/
Acceso (Cortex)http://172.17.33.104:9001/
Versión probadaTheHive 5.4.8-1 · Cortex 3.1.8-1
Depende deMISP arrancado (conector); Graylog para el flujo de alertas
Ventana de terminal
qm start 106
qm status 106

Espera entre 60 y 120 segundos antes de diagnosticar un fallo: TheHive y Cortex pueden responder a distinta velocidad aunque compartan VM.

No basta con que la VM figure como running en Proxmox: estas comprobaciones confirman que el componente funciona correctamente y se comunica con el resto del entorno.

Ventana de terminal
ping -c 3 172.17.33.104
nc -zvw3 172.17.33.104 22
nc -zvw3 172.17.33.104 9000
nc -zvw3 172.17.33.104 9001
curl -sS --connect-timeout 10 http://172.17.33.104:9000/api/status
curl -I --connect-timeout 10 http://172.17.33.104:9000/
curl -I --connect-timeout 10 http://172.17.33.104:9001/

api/status debe devolver un JSON con la versión de TheHive.

  1. La página de :9000 corresponde a TheHive y la de :9001 a Cortex.
  2. Es posible autenticarse con las credenciales entregadas.
  3. No aparecen errores de backend, base de datos o migraciones.

No cambies conectores, analyzers ni responders durante la validación salvo incidencia demostrada.

Ventana de terminal
systemctl status thehive --no-pager
systemctl status cortex --no-pager
ss -lntp | grep -E ':9000|:9001'
df -h
free -h
find /opt/Cortex-Analyzers/analyzers -mindepth 1 -maxdepth 1 -type d | wc -l
find /opt/Cortex-Analyzers/responders -mindepth 1 -maxdepth 1 -type d | wc -l

Ambos servicios deben estar active (running), los dos puertos en escucha y debe existir un conjunto no vacío de analyzers y responders (como referencia, el entorno restaurado contiene 138 analyzers y 41 responders instalados).

Tras el acceso básico: entra en TheHive, revisa los conectores MISP y Cortex y confirma que ambos muestran estado OK. No regeneres claves API ni recrees conectores si los objetos restaurados siguen presentes.

Cierra aquí la validación que quedó pendiente en la página de Graylog: confirma que una alerta crítica llega hasta TheHive con el _createdBy del feeder correcto.

Provoca el evento desde otra máquina con varios intentos de login SSH fallidos contra el Wazuh Manager — basta con disparar la regla 100100 (nivel 10, ya dentro del rango rule_level:[10 TO 15] que dispara el escalado; no hace falta llegar a la regla 100101):

Ventana de terminal
for i in $(seq 1 8); do ssh usuario-inexistente@172.17.33.101; done

(escribe cualquier contraseña en cada intento; unos 8 intentos en menos de 2 minutos son suficientes para superar el frequency/timeframe de la regla.)

Después:

  1. En Graylog, confirma que la definición de evento graylog2thehive - CRITICAL se disparó (Alerts → Event Definitions → graylog2thehive - CRITICAL, revisa su historial).
  2. En TheHive, confirma que aparece una alerta nueva y que su campo _createdBy corresponde al usuario feeder configurado en THEHIVE_APIKEY.
  3. Si la alerta no llega, revisa journalctl -u graylog-thehive en esta VM: ahí queda el registro de la llamada a la API de TheHive.

La integración siguiente ya viene aplicada en el backup. Documentamos cómo se construyó para verificarla o reconstruirla.

Las conexiones con MISP y Cortex se definen en /etc/thehive/application.conf:

# MISP
misp {
interval = 1m
servers = [
{
name = "Misp-Prod"
url = "<URL_SERVIDOR_MISP>"
auth = {
type = "bearer"
key = "<CLAVE_API_MISP>"
}
ssl-skip-validation = true
published = false
importUnpublished = true
maxAge = 30d
}
]
}
# CORTEX
cortex {
servers = [
{
name = "Cortex-Prod"
url = "<URL_SERVIDOR_CORTEX>"
auth = {
type = "bearer"
key = "<CLAVE_API_CORTEX>"
}
default = true
}
]
}

Sustituye <URL_SERVIDOR_MISP> / <URL_SERVIDOR_CORTEX> por las direcciones de tus instancias y las claves por los tokens correspondientes (la de MISP se obtiene como se describe en la página de MISP; la de Cortex, desde la gestión de usuarios de la organización en Cortex).

La integración se completa desde Platform Management → Connectors:

Panel de conectores de TheHive
Platform Management → Connectors.

Cortex — introduce la URL del servidor y la clave API:

Configuración del conector Cortex con URL y clave API
Conector Cortex: URL y clave API.
Selección de organizaciones incluidas para el conector Cortex
Asignación del conector a la organización.

MISP — introduce la URL, la clave API y las opciones de exportación:

Panel del conector MISP en TheHive
Conector MISP.
Configuración del conector MISP con URL, clave API y modo exportar solo
URL, clave API y modo de exportación.
Organizaciones y etiquetas de exportación del conector MISP
Organización y etiquetas de casos/observables.

Con ambos configurados, el estado debe ser OK:

Panel de conectores de TheHive con Cortex y MISP en estado OK
Ambos conectores en estado OK.

En Organization → Analyzers están habilitados:

  • AIL_OnionLookup_1_0, AbuseIPDB_1_0 y Abuse_Finder_3_0 — análisis de amenazas e IPs maliciosas;
  • MISP_2_1 — consulta de indicadores contra la instancia MISP del entorno;
  • VirusTotal_GetReport_3_1 y VirusTotal_Scan_3_1 — consulta de reportes y escaneo activo de observables.
Analyzer AIL OnionLookup habilitado en Cortex
Organization → Analyzers: AIL_OnionLookup.
Analyzers AbuseIPDB y Abuse_Finder habilitados en Cortex
AbuseIPDB y Abuse_Finder.
Analyzer MISP habilitado en Cortex
MISP_2_1.
Analyzers VirusTotal GetReport y Scan habilitados en Cortex
VirusTotal GetReport y Scan.

Para la respuesta ante incidentes mediante Velociraptor está habilitado el responder Velociraptor_0_2:

Responder Velociraptor habilitado en Cortex
Responder Velociraptor_0_2.

Puente Graylog → TheHive (creación automática de alertas)

Sección titulada «Puente Graylog → TheHive (creación automática de alertas)»

Esta misma VM aloja también el servicio graylog-thehive.service (/opt/graylog-thehive/), un puente que recibe los webhooks de Graylog (evento crítico escalado) y crea la alerta correspondiente en TheHive vía su API.

Ventana de terminal
systemctl status graylog-thehive --no-pager
grep -c THEHIVE_APIKEY /opt/graylog-thehive/.env

El puente se autentica contra TheHive con la clave API de un usuario analista existente (el “feeder”), configurada en THEHIVE_APIKEY dentro de ese .env. Las alertas creadas quedan registradas como creadas por ese mismo usuario (campo _createdBy).

AccesoUsuarioContraseña
Consola/surootRoot.TheHive
SSHlabLab.TheHive
TheHive webadmin@thehive.localsecret
TheHive webanalista1@thehive.localanalista1
TheHive webanalista2@thehive.localanalista2
Cortex websysadm(contraseña de fábrica, nunca registrada — resetéala con la API, ver nota abajo)

Continúa con Grafana.