Shuffle: SOAR Open Source para Automatizar tu SOC
Guía práctica de Shuffle, el SOAR open source: instalación con Docker, interfaz, construcción de workflows, integración con TheHive, MISP, VirusTotal y Slack, y cinco playbooks listos para usar en tu SOC.
Shuffle: SOAR open source para el SOC moderno
La mayoría de equipos SOC pequeños y medianos no pueden justificar el coste de un SOAR enterprise (Cortex XSOAR, Splunk SOAR) que puede superar los 50.000 EUR anuales. Shuffle llena ese vacío: es un SOAR open source, desplegable con Docker, con una interfaz visual para construir workflows y un catálogo creciente de integraciones de seguridad.
Shuffle no pretende competir feature-por-feature con las plataformas enterprise. Su propuesta es diferente: democratizar la automatización del SOC para equipos que de otro modo seguirían haciendo todo manualmente.
Instalación con Docker
Shuffle se despliega como un conjunto de contenedores Docker. La instalación tarda menos de 10 minutos en un servidor con Docker y Docker Compose instalados.
Requisitos previos
- Docker Engine 20.10+
- Docker Compose v2
- 4 CPU cores, 8 GB RAM, 50 GB disco (mínimo)
- Puerto 3443 disponible (interfaz web HTTPS)
Despliegue
# Clonar el repositorio
git clone https://github.com/Shuffle/Shuffle.git
cd Shuffle
# Configurar variables de entorno
cp .env.example .env
# Arrancar los servicios
docker compose up -d
Los servicios que se despliegan:
| Servicio | Función | Puerto |
|---|---|---|
| shuffle-frontend | Interfaz web | 3443 (HTTPS) |
| shuffle-backend | API y lógica | 5001 |
| shuffle-orborus | Ejecutor de workflows | Interno |
| opensearch | Base de datos | 9200 |
Primer acceso
- Navega a
https://tu-servidor:3443. - Crea la cuenta de administrador (primer usuario).
- Accede al dashboard principal.
La interfaz presenta tres secciones principales: Workflows (donde construyes los flujos), Apps (integraciones disponibles), y Triggers (eventos que activan workflows).
Conceptos fundamentales de Shuffle
Apps
Las apps son contenedores Docker que encapsulan la integración con una herramienta externa. Cada app expone acciones que puedes usar en tus workflows. Ejemplos:
- VirusTotal app: acciones como
Get file report,Get URL report,Get IP report. - TheHive app:
Create case,Create alert,Get case,Update case. - Slack app:
Send message,Send channel message,Upload file. - HTTP app: acción genérica para llamar a cualquier API REST.
Las apps se descargan desde el repositorio de Shuffle o se crean custom. Para instalar una app:
- Ve a Apps en el menú lateral.
- Busca la app (ej. "VirusTotal").
- Haz clic en "Download" si no está instalada.
- Configura las credenciales (API key) en la sección de autenticación de la app.
Workflows
Un workflow es un playbook visual compuesto por nodos conectados. Cada nodo es una acción de una app o un nodo de control (condición, loop, trigger).
Los nodos se conectan con líneas que definen el flujo de ejecución. Los datos fluyen de un nodo al siguiente: la salida de una acción se puede usar como entrada de la siguiente mediante variables con la sintaxis $action_name.field.
Triggers
Los triggers definen qué evento inicia un workflow:
- Webhook: una llamada HTTP externa activa el workflow. Ideal para integraciones con SIEM.
- Schedule: ejecución periódica (cada 5 minutos, cada hora, diariamente).
- Manual: ejecución bajo demanda desde la interfaz.
- Subflow: un workflow puede activar otro workflow.
Variables y datos
Shuffle usa una sintaxis de variables para pasar datos entre nodos:
$trigger.body.ip # IP del cuerpo del webhook
$virustotal.malicious # Campo 'malicious' de la acción VirusTotal
$shuffle.execution_id # ID de la ejecución actual
Construir tu primer workflow: triaje de phishing
El workflow más útil para empezar: un correo sospechoso se reporta, Shuffle lo analiza automáticamente y genera un veredicto.
Paso 1: Crear el workflow
- Ve a Workflows > New Workflow.
- Nómbralo "Phishing Email Triage".
- Añade un nodo Webhook como trigger (Shuffle genera una URL única).
Paso 2: Extraer URLs del correo
Añade un nodo con la app Shuffle Tools y la acción Parse IOCs. Esta acción extrae automáticamente IPs, URLs, dominios, hashes y emails de un texto:
- Input:
$trigger.body.email_body - Output: lista de IOCs extraídos por tipo
Paso 3: Verificar URLs en VirusTotal
Añade un nodo con la app VirusTotal:
- Acción:
Get URL report - Input:
$parse_iocs.urls[0](primera URL extraída) - Configuración: autenticación con tu API key
Paso 4: Verificar dominio del remitente
Añade un nodo HTTP para consultar la edad del dominio:
- Método: GET
- URL:
https://api.whois.vu/?q=$trigger.body.sender_domain
Paso 5: Decision node
Añade un nodo Condition:
SI $virustotal.malicious > 3 OR dominio_age < 30 días:
→ Rama "Malicioso"
SI $virustotal.malicious > 0:
→ Rama "Sospechoso"
SINO:
→ Rama "Limpio"
Paso 6: Acciones de respuesta
Para la rama "Malicioso":
- TheHive: Create Alert con severidad HIGH.
- Slack: Send message al canal #soc-alerts con el resumen.
Para la rama "Sospechoso":
- TheHive: Create Alert con severidad MEDIUM.
Para la rama "Limpio":
- Registrar en log y cerrar.
Paso 7: Probar el workflow
Ejecuta una prueba con el botón "Run" o envía un POST al webhook con datos de prueba:
curl -X POST https://tu-shuffle:3443/api/v1/hooks/WEBHOOK_ID \
-H "Content-Type: application/json" \
-d '{
"email_body": "Estimado usuario, verifique su cuenta en http://phishing-example.com/login",
"sender": "[email protected]",
"sender_domain": "suspicious-domain.xyz",
"subject": "Acción urgente requerida"
}'
Integraciones esenciales
TheHive: case management
TheHive es el complemento natural de Shuffle para gestión de casos. La integración permite:
- Crear alertas y casos desde workflows.
- Actualizar el estado de casos existentes.
- Adjuntar observables (IOCs) a los casos.
- Consultar casos por criterios.
Configuración:
- Instala TheHive (Docker Compose disponible en el repositorio oficial).
- Genera una API key en TheHive > Settings > API Keys.
- En Shuffle, configura la app TheHive con la URL y la API key.
MISP: threat intelligence compartida
MISP permite consumir y compartir inteligencia de amenazas. La integración con Shuffle:
- Buscar IOCs en MISP (hash, IP, dominio).
- Crear eventos MISP desde workflows de Shuffle.
- Importar atributos de eventos MISP como input de workflows.
VirusTotal
La integración más usada. Acciones disponibles:
Get file report: consultar hash.Get URL report: consultar reputación de URL.Get IP report: información de una IP.Get domain report: información de un dominio.
Slack y Microsoft Teams
Notificaciones en tiempo real:
- Alertas de alta severidad al canal del SOC.
- Solicitudes de aprobación HITL al analista de guardia.
- Resúmenes diarios automatizados.
Cinco playbooks listos para usar
Playbook 1: IOC Enrichment automático
Trigger: Webhook (recibe una lista de IOCs). Flujo:
- Parsear IOCs y clasificar por tipo.
- Para cada IP: consultar VirusTotal + AbuseIPDB.
- Para cada hash: consultar VirusTotal + MalwareBazaar.
- Para cada dominio: consultar VirusTotal + OTX.
- Consolidar resultados y calcular score.
- Enviar resumen al canal de Slack.
- Si algún IOC es malicioso: crear alerta en TheHive.
Playbook 2: Monitorización de feeds CTI
Trigger: Schedule (cada 30 minutos). Flujo:
- Consultar URLhaus por nuevas URLs maliciosas.
- Consultar ThreatFox por nuevos IOCs C&C.
- Comparar con IOCs conocidos en MISP local.
- Si hay IOCs nuevos relevantes: crear evento en MISP.
- Si los IOCs coinciden con activos de la organización: alerta inmediata.
Playbook 3: Triaje de alertas de EDR
Trigger: Webhook (alerta del EDR via syslog o API). Flujo:
- Recibir alerta del EDR (CrowdStrike, SentinelOne).
- Extraer hash del proceso sospechoso.
- Consultar hash en VirusTotal.
- Verificar si el host es un activo crítico (consulta a CMDB/API interna).
- Si malicioso + activo crítico: crear caso P1 en TheHive + notificar PagerDuty.
- Si malicioso + no crítico: crear caso P2 + notificar Slack.
- Si limpio: cerrar alerta con nota.
Playbook 4: Verificación de dominios nuevos en proxy
Trigger: Schedule (cada hora). Flujo:
- Consultar logs del proxy por dominios visitados en la última hora.
- Filtrar dominios con edad inferior a 7 días (consulta WHOIS).
- Para dominios jóvenes: consultar VirusTotal y OTX.
- Si alguno tiene detecciones: bloquear en el proxy + alerta.
- Generar informe diario de dominios nuevos visitados.
Playbook 5: Informe diario del SOC
Trigger: Schedule (diariamente a las 08:00). Flujo:
- Consultar TheHive: casos abiertos, cerrados, pendientes.
- Consultar SIEM: alertas de las últimas 24h por severidad.
- Consultar feeds CTI: nuevos IOCs relevantes.
- Compilar estadísticas: MTTR, alertas procesadas, tasa de FP.
- Generar informe HTML.
- Enviar por email al responsable SOC y por Slack al equipo.
Shuffle vs Tines vs n8n para seguridad
La pregunta habitual: si ya uso n8n para automatización general, ¿necesito Shuffle? Y si Tines tiene un tier gratuito, ¿es mejor opción?
Shuffle
Fortalezas: diseñado para seguridad, apps de seguridad prebuiltas, self-hosted, open source, integración nativa con TheHive/MISP.
Debilidades: interfaz menos pulida que Tines, documentación incompleta en algunas áreas, comunidad mas pequeña que n8n.
Ideal para: SOCs que quieren control total (self-hosted), integración con stack open source (TheHive, MISP, OpenCTI), y presupuesto limitado.
Tines
Fortalezas: interfaz intuitiva (drag-and-drop), tier Community Edition gratuito, documentación excelente, biblioteca de "stories" (playbooks compartidos).
Debilidades: no open source (vendor lock-in potencial), funcionalidades avanzadas requieren plan de pago, menos control sobre la infraestructura.
Ideal para: equipos que priorizan facilidad de uso sobre control, SOCs con poco personal técnico para mantener infraestructura.
n8n
Fortalezas: ecosistema masivo de integraciones (mas de 400 nodos), interfaz madura, comunidad activa, self-hosted o cloud.
Debilidades: no especializado en seguridad (no tiene conceptos nativos de IOC, case management, TLP), requiere construir las integraciones de seguridad manualmente.
Ideal para: organizaciones que necesitan automatización general Y algo de seguridad, o que ya usan n8n y quieren añadir workflows de seguridad sin otra herramienta.
Recomendación
Si tu SOC procesa menos de 100 alertas/día y tu presupuesto es limitado, Shuffle es la mejor opción open source. Si puedes permitirte un servicio cloud y priorizas la experiencia de usuario, Tines Community es excelente para empezar. Si ya tienes n8n desplegado, puedes usarlo para workflows de seguridad simples, pero para workflows complejos con case management integrado, una herramienta especializada aporta más valor.
Buenas prácticas con Shuffle
1. Versionado de workflows
Shuffle permite exportar workflows como JSON. Guarda las versiones en un repositorio Git para tener historial de cambios y poder restaurar versiones anteriores:
# Exportar workflow
curl -X GET https://shuffle:3443/api/v1/workflows/WORKFLOW_ID \
-H "Authorization: Bearer API_KEY" > workflows/phishing-triage-v2.json
2. Separar workflows por complejidad
No crees un mega-workflow que haga todo. Divide en workflows modulares que se llaman entre sí (subflows):
- Workflow 1: Enrichment de IOC (reutilizable).
- Workflow 2: Triaje de phishing (llama al Workflow 1 para enrichment).
- Workflow 3: Respuesta a incidente (llama al Workflow 1 + acciones de contención).
3. Logging y auditoría
Cada ejecución de workflow genera un log en Shuffle. Revisa regularmente las ejecuciones fallidas para detectar problemas con APIs externas, credenciales expiradas, o errores en la lógica del workflow.
4. Backup regular
OpenSearch (la base de datos de Shuffle) necesita backups regulares. Configura snapshots automáticos:
# Crear política de snapshot en OpenSearch
curl -X PUT "localhost:9200/_snapshot/backup_repo" \
-H "Content-Type: application/json" \
-d '{"type": "fs", "settings": {"location": "/opt/shuffle-backup"}}'
Próximos pasos
Con Shuffle instalado y los primeros workflows funcionando, el siguiente artículo de la serie cambia de herramienta: PowerShell para Windows forensics. Aprenderás a escribir scripts que enumeran procesos sospechosos, analizan logons recientes, detectan mecanismos de persistencia, auditan conexiones de red, y generan timelines de archivos modificados.
Recursos
- Shuffle Documentation. Documentación oficial con guías de instalación y desarrollo de apps.
- Shuffle GitHub Repository. Código fuente y Docker Compose.
- Shuffle App Creator. Guía para crear integraciones custom.
- TheHive Project. Plataforma open source de incident response y case management.
- MISP Project. Plataforma open source de threat intelligence sharing.
- Tines Community Edition. Tier gratuito de la plataforma SOAR Tines.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
SOAR: Qué Es, Arquitectura y Diseño de Playbooks de Automatización
Python y APIs de Threat Intelligence: VirusTotal, Shodan, OTX y AbuseIPDB
Python para SOC Analysts: Fundamentos y Primeros Scripts de Seguridad
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.