IntermedioMISPCTIherramientasthreat sharingopen source

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.

MalwareIntel Research··13 min lectura
Serie: Cyber Threat Intelligence — Parte 23

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:

CampoDescripciónEjemplo
CategoryClasificación semánticaNetwork activity, Payload delivery, Artifacts dropped
TypeTipo técnico del IOCip-dst, sha256, domain, url, email-src, mutex
ValueEl valor del indicador192.168.1.1, d41d8cd98f00b204e9800998ecf8427e
To IDSSi debe exportarse a sistemas de deteccióntrue/false
CommentContexto adicional"C2 server active since 2026-01"
DistributionNivel de comparticiónOrganization 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:

ObjetoAtributos que agrupa
filefilename, sha256, md5, size, ssdeep
ip-portip, dst-port, protocol, first-seen, last-seen
domain-ipdomain, ip, port, first-seen
emailfrom, to, subject, attachment, x-mailer
x509serial-number, issuer, subject, validity
vulnerabilityid (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íaUso
tlpTraffic Light Protocol (TLP:WHITE, GREEN, AMBER, RED)
admiralty-scaleFiabilidad de fuente y credibilidad de información
threat-levelNivel de amenaza (high, medium, low, undefined)
workflowEstado del análisis (initial, ongoing, completed)
osintClasificación de fuentes abiertas
malware_classificationClasificación técnica del malware
kill-chainFase en la cadena de ataque
diamond-modelVé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:

RecursoMínimoRecomendado
RAM4 GB8 GB+
CPU2 cores4 cores
Disco20 GB100 GB+ (depende del volumen de IOCs)
RedAcceso HTTPS saliente para feedsIP 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:

FeedContenidoFrecuencia
CIRCL OSINT FeedEventos de amenazas curados por CIRCLDiaria
Botvrij.euIOCs de campañas de malware activasDiaria

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:

FeedURLDatos
MalwareBazaarbazaar.abuse.ch/export/csv/recent/Hashes de malware recientes
ThreatFox IOCsthreatfox.abuse.ch/export/csv/recent/IOCs C2 (IPs, dominios)
URLhausurlhaus.abuse.ch/downloads/csv_recent/URLs de distribución de malware
Feodo Trackerfeodotracker.abuse.ch/downloads/ipblocklist.jsonIPs de botnets
SSL Blacklistsslbl.abuse.ch/blacklist/sslipblacklist.csvIPs 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

  1. Event Actions → Add Event
  2. Configurar: fecha, distribución, threat level, análisis
  3. Añadir atributos: tipo + valor + categoría + "to IDS"
  4. Vincular galaxias: MITRE ATT&CK, actor, sector
  5. Aplicar taxonomías: TLP, admiralty-scale, kill-chain
  6. 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:

  1. Event Actions → Add Event → Freetext Import
  2. Pegar el texto del informe (blog, advisory, PDF convertido a texto)
  3. MISP detecta automáticamente: IPs, dominios, hashes, URLs, emails, CVEs
  4. Revisar los resultados, ajustar tipos si es necesario
  5. 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

NivelNombreAlcance
0Your organization onlySolo visible dentro de tu organización
1This community onlyVisible para organizaciones en tu instancia MISP
2Connected communitiesVisible para tu instancia + instancias sincronizadas
3All communitiesVisible para todos, sin restricción
4Sharing GroupVisible 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:

  1. Administration → Sharing Groups → Add Sharing Group
  2. Nombre, descripción, organización propietaria
  3. Añadir organizaciones miembro (por UUID o nombre)
  4. Añadir instancias MISP autorizadas (si hay sincronización)
  5. 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:

  1. Server settings → Sync: crear un "sync user" en la instancia remota
  2. Configurar la URL de la instancia remota, API key del sync user
  3. Definir filtros: qué eventos sincronizar (por tags, distribución, organización)
  4. 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:

MISPSTIX 2.1
EventReport / Grouping
Attribute (IOC)Indicator / Observable
Galaxy: threat actorthreat-actor
Galaxy: ATT&CK techniqueattack-pattern
Galaxy: malwaremalware
Object: filefile (SCO)
Object: domain-ipdomain-name + ipv4-addr (SCO)
Tag: TLPmarking-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:

  1. Push: MISP exporta IOCs en CSV/JSON periódicamente, el SIEM los importa
  2. 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 → RetireAttributes para 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=False en 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.