Montando un SOC de laboratorio con TheHive, Cortex y MISP en Ubuntu 24.04

Como parte de mi propósito de seguir aprendiendo cada vez más sobre arquitectura CTI, y dado que no tengo mucha experiencia previa en arquitectura de aplicaciones (mi campo principal es la ciberinteligencia de amenazas), he decidido ir documentando mi primera experiencia implementando un pequeño SOC de laboratorio.

Para este laboratorio he elegido tres aplicaciones que considero fundamentales para empezar a trastear en este ámbito: TheHive, Cortex y MISP.

Entorno de laboratorio

El laboratorio está implementado en una máquina virtual con Ubuntu 24.04 LTS, una versión estable y confiable, además de contar con interfaz gráfica, lo que facilita bastante la resolución de problemas durante la instalación.

He configurado la máquina virtual en Oracle VirtualBox, siguiendo la instalación asistida y asignando:

  • 100 GB de disco, para evitar problemas de espacio en el futuro.
  • 6 GB de RAM, suficientes para este laboratorio inicial.

Antes de comenzar con la instalación de las aplicaciones, ejecuté los comandos básicos de actualización del sistema:

sudo apt update
sudo apt upgrade

Instalación de TheHive

Para la instalación de TheHive, seguí el procedimiento recomendado en la documentación oficial, que incluye un script automático de instalación:

👉 https://docs.strangebee.com/thehive/installation/automated-installation-script-linux/

Ejecutando el script y siguiendo paso a paso sus indicaciones, la instalación finalizó sin problemas.

SPOILER: las otras dos aplicaciones no serán tan sencillas de instalar.

Instalación de Cortex

La instalación de Cortex resultó algo más compleja. En este caso, no pude utilizar el script automático, ya que daba error al tener TheHive ya instalado.

Siguiendo el manual paso a paso:
👉 https://docs.strangebee.com/cortex/installation-and-configuration/step-by-step-guide/

Uno de los requisitos previos es instalar Elasticsearch, que será la base de datos utilizada por Cortex.

No voy a extenderme en todos los pasos de la instalación, ya que seguí la documentación oficial, pero sí quiero destacar dos problemas importantes que tuve que resolver:

1️⃣ Problema con Elasticsearch y la RAM

Elasticsearch fallaba al iniciar constantemente. Tras investigar bastante, descubrí que el problema era la cantidad de RAM asignada por defecto.

La solución fue modificar los parámetros de la JVM en el archivo:

/etc/elasticsearch/jvm.options.d/

Asignando aproximadamente la mitad de la RAM del sistema. En mi caso (6 GB de RAM):

-Xms3g
-Xmx3g
-Dlog4j2.formatMsgNoLookups=true

Con esto, Elasticsearch comenzó a funcionar correctamente.

2️⃣ Error “user init not found” en Cortex

El segundo problema fue un error de Cortex indicando “user init not found”. Este error estaba relacionado con Elasticsearch, ya que no reconocía correctamente los usuarios almacenados en la base de datos.

Finalmente, detecté que en los archivos de configuración de Cortex no estaba correctamente asignado el cluster de Elasticsearch, que debía apuntar al cluster de TheHive. Tras corregir este valor, Cortex comenzó a funcionar sin problemas.

🔐 Secret key de Cortex (IMPORTANTE)

Para que Cortex funcione correctamente, es obligatorio definir una secret key. Esta se puede generar, por ejemplo, con el siguiente comando:

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1

Una vez generada, hay que añadirla en el archivo:

/etc/cortex/application.conf

Creando la variable:

play.http.secret.key = "CLAVE_GENERADA"

En el manual se indica que puede almacenarse en un archivo secret.conf, pero en mi caso opté por añadirla directamente al archivo de configuración principal.

Instalación de MISP

La instalación de MISP fue bastante más sencilla gracias a su script automático para Ubuntu 24.04:

wget --no-cache -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/refs/heads/2.5/INSTALL/INSTALL.ubuntu2404.sh
bash /tmp/INSTALL.sh

Una vez finalizada la instalación, pude acceder a MISP desde:

https://misp.local

Utilizando la cuenta:

En el primer inicio de sesión, el sistema obliga a cambiar la contraseña, respetando la misma longitud y formato que la generada automáticamente.

Conclusión

Con esto finalizo esta primera entrada del blog, dejando TheHive, Cortex y MISP funcionando correctamente en el laboratorio.

En las próximas entradas continuaré con:

  • La sincronización entre las tres aplicaciones
  • La configuración de fuentes de IOCs
  • Pruebas del funcionamiento automático de todo el ecosistema de inteligencia de amenazas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *