Red Dev Blog

En este blog encontrarás artículos relacionados con el desarrollo, hacking y el blue team

Blog Red Team Blue Team Desarrollo About
10 July 2025

Integrando Wazuh con OpenCTI

by Jorge Rey, Adrian Rojas

Por requisitos de un cliente, nos vimos en un aprieto al tener que integrar Wazuh con OpenCTI, estos sistemas, aun con integraciones ya hechas nos llevó un rato de realizarlas debido a que se pensaron para versiones anteriores, y no había demasiada documentación de como hacerlas. Por lo que decidimos crear esta pequeña guía de como hacerlo:

🧰 Requisitos previos

Asegúrate de tener instalado:

  • Docker

  • Docker Compose

  • Git

  • uuidgen (para generar el token)

En Ubuntu/Debian:

sudo apt update && sudo apt install -y docker.io docker-compose git uuid-runtime

🔧 Paso 1: Clonar y preparar los archivos de OpenCTI

mkdir -p ~/opencti && cd ~/opencti git clone https://github.com/OpenCTI-Platform/docker.git .

Esto descargará todos los archivos necesarios para levantar OpenCTI con Docker.


⚙️ Paso 2: Configurar el entorno (.env)

Copia el archivo de ejemplo .env.sample:

cp .env.sample .env

Ahora edítalo con tu editor favorito (ejemplo con nano):

nano .env

Modifica y configura al menos los siguientes valores:

OPENCTI_ADMIN_EMAIL=admin@opencti.io (cambiar)
OPENCTI_ADMIN_PASSWORD=changeme (cambiar)
OPENCTI_ADMIN_TOKEN=85e81635-7c9b-4c3f-af85-a4a5d95db188 (generar uno)
OPENCTI_BASE_URL=http://localhost:8080
OPENCTI_HEALTHCHECK_ACCESS_KEY=changeme
MINIO_ROOT_USER=opencti
MINIO_ROOT_PASSWORD=changeme
RABBITMQ_DEFAULT_USER=opencti
RABBITMQ_DEFAULT_PASS=changeme
CONNECTOR_EXPORT_FILE_STIX_ID=dd817c8b-abae-460a-9ebc-97b1551e70e6
CONNECTOR_EXPORT_FILE_CSV_ID=7ba187fb-fde8-4063-92b5-c3da34060dd7
CONNECTOR_EXPORT_FILE_TXT_ID=ca715d9c-bd64-4351-91db-33a8d728a58b
CONNECTOR_IMPORT_FILE_STIX_ID=72327164-0b35-482b-b5d6-a5a3f76b845f
CONNECTOR_IMPORT_DOCUMENT_ID=c3970f8a-ce4b-4497-a381-20b7256f56f0
CONNECTOR_ANALYSIS_ID=4dffd77c-ec11-4abe-bca7-fd997f79fa36
SMTP_HOSTNAME=localhost
ELASTIC_MEMORY_SIZE=4G

Generar token real:

uuidgen

Copia el resultado y pégalo en OPENCTI_ADMIN_TOKEN. También puedes revisar y cambiar otros valores como: MINIO_ROOT_USER=minio MINIO_ROOT_PASSWORD=minio123 RABBITMQ_DEFAULT_USER=opencti RABBITMQ_DEFAULT_PASS=opencti

Guarda y cierra el archivo.


🛠️ Paso 3: Levantar la plataforma

Ejecuta:

docker-compose up -d

Esto descargará e iniciará todos los servicios: OpenCTI, ElasticSearch, Redis, MinIO, RabbitMQ, etc.


Verifica los contenedores:

docker-compose ps

Deberías ver varios servicios corriendo (opencti, minio, elasticsearch, etc.).


🌐 Paso 4: Acceder a OpenCTI

Abre en el navegador:

👉 http://localhost:8080

Usa los valores que configuraste en .env:

  • Email: admin@tuempresa.com

  • Password: AdminPasswordFuerte123


Conector Threatfox

🧾 PASO 1: Crear un usuario conector en OpenCTI

  1. Accede a la interfaz web de OpenCTI:
    👉 http://localhost:8080
  2. Ve a:
    Settings → Security → Users → +
  3. Rellena:
    • Name: [C] ThreatFox
    • Login email: threatfox@connector.local
    • Role: Connector
    • Group: selecciona Connectors
    • Guarda y copia el token que se genera.

Ese token lo usaremos en la configuración del conector.


🧾 PASO 2: Crear o editar docker-compose.override.yml

Esto permite agregar el conector ThreatFox a tu entorno Docker sin tocar el docker-compose.yml base.

1. Entra a la carpeta donde está tu OpenCTI:

cd /root/opencti

2. Abre (o crea) el archivo:

nano docker-compose.override.yml

3. Agrega este bloque (ajusta el TOKEN):

version: '3'
services:
  connector-threatfox:
    image: opencti/connector-threatfox:6.7.3
    environment:
      - OPENCTI_URL=http://opencti:8080
      - OPENCTI_TOKEN=TU_TOKEN_DE_CONNECTOR
      - CONNECTOR_ID=threatfox-connector
      - CONNECTOR_NAME=ThreatFox
      - CONNECTOR_SCOPE=threatfox
      - CONNECTOR_TYPE=EXTERNAL_IMPORT
      - CONNECTOR_CONFIDENCE_LEVEL=70
      - CONNECTOR_UPDATE_EXISTING_DATA=true
      - CONNECTOR_LOG_LEVEL=info
      - THREATFOX_INTERVAL=3600
      - THREATFOX_TLP=White
      - THREATFOX_CREATE_INDICATORS=true
    restart: always

⚠️ Cambia TU_TOKEN_DE_CONNECTOR por el que copiaste al crear el usuario [C] ThreatFox.


🧾 PASO 3: Levantar el conector

Después de guardar el archivo (Ctrl + O, luego Enter, luego Ctrl + X en nano), ejecuta:

docker-compose up -d connector-threatfox

Verifica que el conector esté funcionando:

docker-compose logs -f connector-threatfox

🧾 PASO 4: Verificar en la interfaz de OpenCTI

  1. Ve a Data → Ingestion → Connectors
  2. Deberías ver “ThreatFox” como conector activo.
  3. Luego ve a Knowledge → Indicators o Threats para ver los IOCs que se han importado (IPs, hashes, dominios, etc.)

Instalar sysmon en el dispositivo monitorizado

🧾 PASO 1: Descargar archivo configuración


🧾 PASO 2: Descargar sysmon

  • Windows
    • Para sistemas windows utilizaremos este enlace: (sysmon)[https://learn.microsoft.com/es-es/sysinternals/downloads/sysmon]

🧾 PASO 3: Configurar sysmon

A continuación con un Powershell/Consola como usuario administrador usaremos el siguiente comando:

Windows:

Sysmon64.exe -accepteula -i sysmonconfig.xml

Linux:

sudo sysmon -accepteula -i sysmonconfig.xml

Configuración Agente

Windows

  • Abrimos una powershell con permisos de administración y escribimos:
notepad.exe "C:\Program Files (x86)\ossec-agent\ossec.conf"
  • Añadimos lo siguiente a nuestra configuración en la zona donde veamos que hay más “localfile”: ```xml
Microsoft-Windows-Sysmon/Operational eventchannel

- Reiniciamos el agente
```powershell
net stop WazuhSvc
net start WazuhSvc

Configuración Wazuh

Configuración

Wazuh

Ossec

En el archivo ossec.conf (/var/ossec/etc/ossec.conf), añadiremos lo siguiente al final del archivo, sustituyendo API_KEY y URL_OPENCTI:

<ossec_config>
  <integration>
     <name>custom-opencti</name><group>sysmon_event1,sysmon_event3,sysmon_event6,sysmon_event7,sysmon_event_15,sysmon_event_22,syscheck</group>
     <alert_format>json</alert_format>
     <api_key>API_KEY</api_key>
     <hook_url>URL_OPENCTI/graphql</hook_url>
  </integration>
</ossec_config>

Scripts

Añadimos los archivos descargables en este repositorio en el directorio de integraciones (/var/ossec/integrations), manteniendo sus nombres, y le damos los permisos necesarios, para hacer este proceso podeis utilizar el siguiente comando:

git clone https://github.com/reycotallo98/Blue-Team-Scripts.git
mv Blue-Team-Scripts/openCTI-Wazuh/* /var/ossec/integrations/*
rm -rf Blue-Team-Scripts
chmod 755 /var/ossec/integrations/custom-opencti*

Reglas

Añadir las siguientes reglas a Wazuh:

<group name="threat_intel,">
 <rule id="100623" level="10">
    <field name="integration">opencti</field>
    <description>OpenCTI</description>
    <group>opencti,</group>
    <options>no_full_log</options>
  </rule>
<rule id="100624" level="5">
    <if_sid>100623</if_sid>
    <field name="opencti.error">\.+</field>
    <description>OpenCTI - Error connecting to API</description>
    <options>no_full_log</options>
    <group>opencti,opencti_error,</group>
  </rule>
<rule id="100625" level="12">
    <if_sid>100623</if_sid>
    <field name="opencti.id">\.+</field>
    <description>OpenCTI - IoC found in Threat Intel - $(opencti.observable_value)</description>
    <options>no_full_log</options>
    <group>opencti,opencti_alert,</group>
  </rule>
</group>

Reiniciar Wazuh Manager

Por último reiniciamos Wazuh:

sudo systemctl restart wazuh-manager

Probando la integración

A continuación os mostramos como probar la integración realizando un Ping a uno de los Indicators encontrados en OpenCTI:

image

Y nos mostrará la siguiente alerta en Wazuh:

image



tags: Wazuh - OpenCTI - Tutorial - BlueTeam