MISP: Instalación, Feeds, Eventos y Sharing Groups
Guía completa de MISP (Malware Information Sharing Platform): instalación con Docker, conceptos core (eventos, atributos, objetos, galaxias, taxonomías), configuración de feeds, sharing groups, sincronización entre organizaciones y automatización con PyMISP.
MISP es la plataforma de referencia para compartir inteligencia de amenazas entre organizaciones
MISP (Malware Information Sharing Platform & Threat Sharing) nació en 2012 en el CIRCL de Luxemburgo como una herramienta para compartir IOCs entre CERTs europeos. Hoy es una plataforma completa de threat intelligence usada por cientos de organizaciones en todo el mundo: CERTs nacionales, ISACs sectoriales, fuerzas de seguridad, empresas privadas y centros de investigación.
Lo que hace único a MISP no es la gestión de IOCs (hay muchas herramientas para eso), sino su modelo de sharing: permite compartir inteligencia de forma granular entre organizaciones de confianza, con control preciso sobre qué se comparte, con quién y bajo qué condiciones.
Conceptos core de MISP
Eventos
El evento es la unidad fundamental de MISP. Representa un incidente, campaña, informe de amenazas o cualquier conjunto de inteligencia relacionada.
Un evento contiene:
- Metadata: fecha, organización que lo crea, nivel de amenaza (high/medium/low), análisis (initial/ongoing/completed), distribución
- Atributos: los IOCs individuales (IPs, hashes, dominios, URLs, etc.)
- Objetos: agrupaciones estructuradas de atributos (un objeto "file" agrupa hash, nombre, tamaño)
- Tags: etiquetas de taxonomías y galaxias
- Propuestas: sugerencias de modificación por otras organizaciones
Atributos
Los atributos son los IOCs individuales. Cada atributo tiene:
| Campo | Descripción | Ejemplo |
|---|---|---|
| Category | Clasificación semántica | Network activity, Payload delivery, Artifacts dropped |
| Type | Tipo técnico del IOC | ip-dst, sha256, domain, url, email-src, mutex |
| Value | El valor del indicador | 192.168.1.1, d41d8cd98f00b204e9800998ecf8427e |
| To IDS | Si debe exportarse a sistemas de detección | true/false |
| Comment | Contexto adicional | "C2 server active since 2026-01" |
| Distribution | Nivel de compartición | Organization only, Community, Connected communities, All |
MISP soporta más de 200 tipos de atributos, desde los clásicos (IP, hash, dominio) hasta especializados (JA3 fingerprint, HASSH, bitcoin-address, vulnerability CVE).
Objetos
Los objetos agrupan atributos relacionados en estructuras predefinidas. MISP incluye más de 150 templates de objetos:
| Objeto | Atributos que agrupa |
|---|---|
| file | filename, sha256, md5, size, ssdeep |
| ip-port | ip, dst-port, protocol, first-seen, last-seen |
| domain-ip | domain, ip, port, first-seen |
| from, to, subject, attachment, x-mailer | |
| x509 | serial-number, issuer, subject, validity |
| vulnerability | id (CVE), summary, cvss-score, references |
Usar objetos en lugar de atributos sueltos mejora la calidad de la inteligencia: un hash aislado es un dato; un objeto "file" con hash, nombre, tamaño y ruta de drop es inteligencia.
Galaxias
Las galaxias son colecciones de conocimiento estructurado que se pueden vincular a eventos. Son el mecanismo de MISP para integrar frameworks de inteligencia:
- MITRE ATT&CK: técnicas, tácticas, grupos, software
- Threat Actor: catálogo de actores con aliases, motivación, país
- Ransomware: familias de ransomware con detalles operacionales
- Exploit-Kit: kits de exploits activos con CVEs asociadas
- Tool: herramientas de ataque legítimas usadas por adversarios
- Sector: sectores objetivo (financiero, energía, salud, gobierno)
Vincular un evento a galaxias le da contexto estratégico inmediato.
Taxonomías
Las taxonomías son vocabularios controlados para etiquetar eventos de forma consistente. MISP incluye más de 130 taxonomías predefinidas:
| Taxonomía | Uso |
|---|---|
| tlp | Traffic Light Protocol (TLP:WHITE, GREEN, AMBER, RED) |
| admiralty-scale | Fiabilidad de fuente y credibilidad de información |
| threat-level | Nivel de amenaza (high, medium, low, undefined) |
| workflow | Estado del análisis (initial, ongoing, completed) |
| osint | Clasificación de fuentes abiertas |
| malware_classification | Clasificación técnica del malware |
| kill-chain | Fase en la cadena de ataque |
| diamond-model | Vértice del Diamond Model (adversary, capability, infrastructure, victim) |
Las taxonomías son el pegamento semántico que permite buscar, filtrar y correlacionar eventos de forma coherente entre organizaciones.
Instalación de MISP
Docker (recomendado para evaluación y desarrollo)
La forma más rápida de levantar MISP es con el proyecto oficial misp-docker:
git clone https://github.com/MISP/misp-docker.git
cd misp-docker
cp template.env .env
# Editar .env: configurar MISP_BASEURL, contraseñas
docker compose up -d
La instalación Docker incluye: MISP core, MySQL, Redis, módulos MISP y el dashboard. Acceso en https://localhost con credenciales por defecto [email protected] / admin.
Requisitos mínimos:
| Recurso | Mínimo | Recomendado |
|---|---|---|
| RAM | 4 GB | 8 GB+ |
| CPU | 2 cores | 4 cores |
| Disco | 20 GB | 100 GB+ (depende del volumen de IOCs) |
| Red | Acceso HTTPS saliente para feeds | IP fija para sincronización |
Instalación en VM (producción)
Para producción, CIRCL mantiene scripts de instalación para Ubuntu y RHEL:
# Ubuntu 22.04/24.04
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -A
La instalación completa despliega: Apache/Nginx, PHP-FPM, MySQL/MariaDB, Redis, MISP core, módulos de enriquecimiento y workers de Celery para procesamiento asíncrono.
Cloud
Hay imágenes de MISP disponibles para AWS Marketplace, Azure y GCP. También hay un Helm chart para Kubernetes mantenido por la comunidad. Para organizaciones con requisitos de soberanía de datos (como las sujetas a ENS), la instalación on-premise o en infraestructura EU es la opción correcta.
Configuración de feeds
Los feeds son fuentes externas de inteligencia que MISP consume automáticamente. Hay tres tipos:
Feeds CIRCL (incluidos por defecto)
MISP viene con feeds oficiales del CIRCL preconfigurados:
| Feed | Contenido | Frecuencia |
|---|---|---|
| CIRCL OSINT Feed | Eventos de amenazas curados por CIRCL | Diaria |
| Botvrij.eu | IOCs de campañas de malware activas | Diaria |
Feeds abuse.ch
Los feeds de abuse.ch son esenciales para cualquier instancia MISP:
# Configuración en MISP: Administration → Feeds → Add Feed
Name: MalwareBazaar Recent
URL: https://bazaar.abuse.ch/export/csv/recent/
Source Format: CSV
Distribution: Your organization only
Delta Merge: enabled
Feeds abuse.ch disponibles:
| Feed | URL | Datos |
|---|---|---|
| MalwareBazaar | bazaar.abuse.ch/export/csv/recent/ | Hashes de malware recientes |
| ThreatFox IOCs | threatfox.abuse.ch/export/csv/recent/ | IOCs C2 (IPs, dominios) |
| URLhaus | urlhaus.abuse.ch/downloads/csv_recent/ | URLs de distribución de malware |
| Feodo Tracker | feodotracker.abuse.ch/downloads/ipblocklist.json | IPs de botnets |
| SSL Blacklist | sslbl.abuse.ch/blacklist/sslipblacklist.csv | IPs con certificados maliciosos |
Feeds custom
Cualquier fuente que produzca IOCs en formato compatible (CSV, MISP JSON, freetext) se puede configurar como feed:
# Feed de texto libre (MISP parsea automáticamente IOCs)
Name: Custom Threat Report
URL: https://example.com/iocs.txt
Source Format: Freetext
Distribution: This community only
Headers: (opcional, para feeds con autenticación)
Gestión de feeds
# Desde la CLI de MISP (CakePHP)
# Fetch todos los feeds habilitados
/var/www/MISP/app/Console/cake Server fetchFeeds
# Fetch un feed específico (ID 5)
/var/www/MISP/app/Console/cake Server fetchFeed 5
# Listar feeds
/var/www/MISP/app/Console/cake Server listFeeds
Para automatizar, configurar un cron job:
# Fetch feeds cada 6 horas
0 */6 * * * /var/www/MISP/app/Console/cake Server fetchFeeds > /dev/null 2>&1
Creación de eventos
Crear un evento manualmente
- Event Actions → Add Event
- Configurar: fecha, distribución, threat level, análisis
- Añadir atributos: tipo + valor + categoría + "to IDS"
- Vincular galaxias: MITRE ATT&CK, actor, sector
- Aplicar taxonomías: TLP, admiralty-scale, kill-chain
- Publicar (hace el evento visible según la distribución configurada)
Crear un evento desde un informe
MISP puede parsear informes de texto y extraer IOCs automáticamente:
- Event Actions → Add Event → Freetext Import
- Pegar el texto del informe (blog, advisory, PDF convertido a texto)
- MISP detecta automáticamente: IPs, dominios, hashes, URLs, emails, CVEs
- Revisar los resultados, ajustar tipos si es necesario
- Confirmar la importación
Propuestas
Cuando otra organización detecta un error o tiene información adicional sobre un evento tuyo, puede crear una propuesta en lugar de modificar directamente el evento. Las propuestas aparecen como notificaciones pendientes de aprobación.
Sharing Groups y niveles de distribución
El modelo de sharing de MISP es su funcionalidad más diferencial. Hay 5 niveles de distribución, de menos a más abierto:
Niveles de distribución
| Nivel | Nombre | Alcance |
|---|---|---|
| 0 | Your organization only | Solo visible dentro de tu organización |
| 1 | This community only | Visible para organizaciones en tu instancia MISP |
| 2 | Connected communities | Visible para tu instancia + instancias sincronizadas |
| 3 | All communities | Visible para todos, sin restricción |
| 4 | Sharing Group | Visible solo para organizaciones en el sharing group definido |
Sharing Groups
Un sharing group es un grupo cerrado de organizaciones autorizadas a ver cierta inteligencia. Es el mecanismo para compartir con precisión quirúrgica.
Ejemplo: "ISAC Financiero España" como sharing group contiene a los equipos de seguridad de los principales bancos españoles. Un evento creado con distribución "Sharing Group: ISAC Financiero España" solo es visible para esos bancos.
Crear un sharing group:
- Administration → Sharing Groups → Add Sharing Group
- Nombre, descripción, organización propietaria
- Añadir organizaciones miembro (por UUID o nombre)
- Añadir instancias MISP autorizadas (si hay sincronización)
- Configurar si las organizaciones miembro pueden extender el grupo
Buenas prácticas de sharing
- Empezar con distribución restrictiva (organization only) y ampliar cuando la inteligencia esté validada
- Usar TLP como guía: TLP:RED nunca debería tener distribución "All communities"
- Crear sharing groups por sector, geografía o caso de uso
- Documentar las reglas de cada sharing group en su descripción
- Revisar membresías cada 6 meses
Organizaciones y sincronización
Organizaciones
MISP modela las entidades que participan en el intercambio de inteligencia como "organizaciones". Cada organización tiene:
- UUID único (persistente entre instancias sincronizadas)
- Nombre, descripción, sector, nacionalidad
- Usuarios asignados con roles (admin, analyst, publisher, sync user)
- Contacto (para notificaciones de propuestas y eventos)
Sincronización entre instancias
Dos instancias MISP pueden sincronizarse para intercambiar eventos automáticamente:
- Server settings → Sync: crear un "sync user" en la instancia remota
- Configurar la URL de la instancia remota, API key del sync user
- Definir filtros: qué eventos sincronizar (por tags, distribución, organización)
- Elegir dirección: push (enviar eventos), pull (recibir eventos) o ambos
# Test de conectividad con instancia remota
/var/www/MISP/app/Console/cake Server test <server_id>
# Sincronización manual
/var/www/MISP/app/Console/cake Server pull <server_id>
/var/www/MISP/app/Console/cake Server push <server_id>
La sincronización respeta los niveles de distribución: un evento con distribución "Your organization only" nunca se sincroniza.
Motor de correlaciones
MISP incluye un motor de correlaciones que detecta automáticamente relaciones entre eventos basándose en atributos compartidos.
Si dos eventos (de diferentes organizaciones) contienen la misma IP, hash o dominio, MISP los correlaciona automáticamente. Esto permite descubrir campañas que afectan a múltiples organizaciones sin que ninguna tenga la imagen completa.
Las correlaciones se muestran en el evento como enlaces a los otros eventos relacionados (respetando siempre los permisos de distribución). El analista puede "pivotar" de un evento a otro siguiendo las correlaciones.
Configuración del motor
# Excluir valores que generan ruido (IPs de CDN, dominios legítimos)
Administration → Server Settings → Correlation
→ MISP.correlation_exclusion_list
→ Añadir: 8.8.8.8, google.com, microsoft.com, etc.
PyMISP: automatización por API
PyMISP es la librería oficial de Python para interactuar con la API REST de MISP. Permite automatizar la creación de eventos, búsqueda de IOCs, gestión de feeds y sincronización.
Instalación
pip install pymisp
Conexión
from pymisp import PyMISP
misp = PyMISP(
url='https://misp.example.com',
key='YOUR_API_KEY',
ssl=True
)
Buscar eventos
# Buscar eventos con un IOC específico
result = misp.search(
controller='events',
value='192.168.1.100',
type_attribute='ip-dst'
)
# Buscar eventos por tag
result = misp.search(
controller='events',
tags=['tlp:green', 'misp-galaxy:mitre-attack-pattern="Phishing - T1566"']
)
# Buscar en los últimos 7 días
result = misp.search(
controller='events',
date_from='7d'
)
Crear eventos programáticamente
from pymisp import MISPEvent, MISPAttribute
# Crear evento
event = MISPEvent()
event.info = "Campaña phishing targeting sector financiero ES"
event.distribution = 1 # This community only
event.threat_level_id = 2 # Medium
event.analysis = 1 # Ongoing
# Añadir atributos
event.add_attribute('ip-dst', '203.0.113.50', comment='C2 server')
event.add_attribute('sha256', 'a1b2c3...', category='Payload delivery')
event.add_attribute('domain', 'malicious-example.com', to_ids=True)
# Añadir tags
event.add_tag('tlp:amber')
event.add_tag('misp-galaxy:mitre-attack-pattern="Spearphishing Attachment - T1566.001"')
# Publicar
result = misp.add_event(event, pythonify=True)
misp.publish(result.id)
Exportar IOCs para el SIEM
# Exportar IOCs en formato CSV para importar en SIEM
attributes = misp.search(
controller='attributes',
type_attribute=['ip-dst', 'domain', 'sha256'],
to_ids=True,
tags='tlp:green',
date_from='30d'
)
# Exportar en formato STIX 2.1
stix_bundle = misp.search(
controller='events',
return_format='stix2',
tags='tlp:green'
)
MISP y STIX: interoperabilidad
MISP soporta importación y exportación en formato STIX 1.x y STIX 2.1. El mapping entre el modelo de datos MISP y STIX es:
| MISP | STIX 2.1 |
|---|---|
| Event | Report / Grouping |
| Attribute (IOC) | Indicator / Observable |
| Galaxy: threat actor | threat-actor |
| Galaxy: ATT&CK technique | attack-pattern |
| Galaxy: malware | malware |
| Object: file | file (SCO) |
| Object: domain-ip | domain-name + ipv4-addr (SCO) |
| Tag: TLP | marking-definition |
La interoperabilidad STIX permite conectar MISP con otras plataformas del ecosistema CTI: OpenCTI, TAXII servers, herramientas comerciales que consumen STIX.
# Export STIX 2.1 desde CLI
/var/www/MISP/app/Console/cake Server exportSTIX2 <event_id>
MISP en el flujo de trabajo del SOC
Integración con SIEM
MISP puede exportar IOCs a SIEMs de dos formas:
- Push: MISP exporta IOCs en CSV/JSON periódicamente, el SIEM los importa
- Pull: El SIEM consulta la API de MISP para obtener IOCs actualizados
La integración más común es configurar un cron que exporte IOCs con to_ids=True en formato compatible con el SIEM (Splunk, Elastic, Wazuh, QRadar) y los cargue como listas de observación.
Integración con SOAR
Plataformas SOAR (TheHive, Cortex, Shuffle, XSOAR) pueden consultar MISP para enriquecer alertas automáticamente. Cuando el SOC recibe una alerta con un IOC, el SOAR consulta MISP para obtener contexto: a qué campaña pertenece, qué actor lo usa, qué TLP tiene.
Flujo recomendado
Feed externo → MISP (almacena, correlaciona, enriquece)
↓
SIEM (detecta) → SOAR (responde)
↓
Analista (investiga, crea nuevos eventos en MISP)
↓
Sharing Group (comparte con comunidad de confianza)
Buenas prácticas de operación
Mantenimiento
- Purga de IOCs antiguos: configurar
MISP.background_jobs → RetireAttributespara retirar IOCs con más de X días sin actividad - Backup: base de datos MySQL + directorio
/var/www/MISP/app/files/(contiene muestras y adjuntos) - Monitorización: workers de Celery (supervisord), espacio en disco, certificados SSL
- Actualizaciones: MISP publica releases frecuentes con fixes de seguridad. Actualizar al menos mensualmente
Calidad de datos
- Siempre añadir contexto a los atributos (campo comment)
- Usar objetos en lugar de atributos sueltos cuando sea posible
- Etiquetar con taxonomías (mínimo TLP y threat-level)
- Vincular galaxias ATT&CK a los eventos
- Revisar propuestas de otras organizaciones periódicamente
- Marcar
to_ids=Falseen atributos que son contexto, no detección
Recursos
- MISP Project (misp-project.org). Sitio oficial con documentación completa, training materials y acceso al código fuente.
- MISP Training (training.misp-project.org). Materiales de formación oficiales del CIRCL, disponibles gratuitamente.
- PyMISP (github.com/MISP/PyMISP). Librería Python oficial con ejemplos de uso y Jupyter notebooks.
- MISP Galaxy (github.com/MISP/misp-galaxy). Repositorio de galaxias: catálogos de actores, malware, herramientas, sectores.
- MISP Taxonomies (github.com/MISP/misp-taxonomies). Todas las taxonomías disponibles con documentación.
- CIRCL (circl.lu). Computer Incident Response Center Luxembourg, organización detrás de MISP.
- MalwareIntel (malwareintel.es). Plataforma CTI con IOCs de feeds públicos incluyendo fuentes integradas en MISP.
Preguntas frecuentes
Artículos relacionados
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.