Aprende › Cloud, APIs, forense y más

Threat intelligence operativa: STIX, TAXII, MISP y compartición de IOCs

· 10 min de lectura

STIX 2.1 estandariza la descripción de amenazas, TAXII permite su transporte automatizado y MISP gestiona su almacenamiento y compartición. Aprende a crear bundles STIX, consumir feeds y alimentar tu SIEM con inteligencia accionable.

Cuando un equipo de seguridad detecta un incidente — un servidor comprometido, un phishing exitoso, un ransomware contenido —, el análisis produce indicadores de compromiso (IOCs): hashes de malware, IPs de servidores C2, dominios de phishing, TTPs del atacante. Esa información es valiosa no solo para tu organización, sino para cualquier otra que pueda enfrentarse al mismo adversario. Pero compartir IOCs en un email, un PDF o una hoja de cálculo no escala. Necesitas un lenguaje común para describir amenazas, un protocolo de transporte para intercambiarlas de forma automatizada y una plataforma para gestionarlas. Eso es exactamente lo que ofrecen STIX, TAXII y MISP.

La Cyber Threat Intelligence (CTI) operativa transforma datos crudos de incidentes en inteligencia accionable: información que tus defensas pueden consumir automáticamente para detectar y bloquear amenazas conocidas. No se trata de informes ejecutivos abstractos, sino de feeds de IOCs que tu SIEM, EDR o firewall puede ingestar en tiempo real para generar alertas cuando un indicador conocido aparece en tu red.

Es la cuarta lección de la Tanda 8. Cubre los tres pilares de la CTI operativa: el estándar STIX 2.1 para describir amenazas, el protocolo TAXII 2.1 para transportarlas y la plataforma MISP para gestionarlas, todo con ejemplos prácticos en Python y curl.

La threat intelligence se usa exclusivamente para defensa. Compartir IOCs responsablemente protege a toda la comunidad. No publiques información que pueda identificar víctimas, empleados o datos sensibles de incidentes sin autorización.

Qué es la threat intelligence#

La threat intelligence (inteligencia de amenazas) es el conocimiento basado en evidencia sobre amenazas existentes o emergentes que permite tomar decisiones informadas de seguridad. No es una herramienta ni un producto: es un proceso que transforma datos (logs, IOCs, malware samples) en contexto accionable.

Ciclo de threat intelligence: recopilar IOCs, normalizar a STIX, enriquecer, compartir vía TAXII/MISP, consumir en SIEM, retroalimentar
Ciclo de threat intelligence: recopilar IOCs, normalizar a STIX, enriquecer, compartir vía TAXII/MISP, consumir en SIEM, retroalimentar

El ciclo de inteligencia tiene seis fases: dirección (qué necesitamos saber), recopilación (de dónde salen los datos), procesamiento (normalizar y limpiar), análisis (dar contexto y prioridad), diseminación (compartir con quien lo necesita) y retroalimentación (ajustar el ciclo según los resultados). STIX, TAXII y MISP cubren las fases de procesamiento, análisis y diseminación.

Por qué se necesita inteligencia de amenazas#

Sin CTI, cada organización lucha sola contra las mismas amenazas. El equipo A detecta un phishing con un dominio malicioso, bloquea ese dominio y sigue adelante. Mientras tanto, el equipo B recibe el mismo phishing al día siguiente y lo detecta desde cero. Con CTI compartida, el equipo A publica el IOC y el equipo B lo bloquea automáticamente antes de que el phishing llegue.

La CTI también permite pasar de defensa reactiva a proactiva. En lugar de esperar a que un indicador aparezca en tus logs, puedes buscar activamente en tus sistemas (threat hunting) IOCs publicados por la comunidad o por proveedores de threat intelligence.

Niveles de inteligencia#

NivelAudienciaContenidoEjemplo
EstratégicoDirección, CISOTendencias, motivaciones, riesgos geopolíticosAPT29 apunta al sector salud europeo en 2024
OperativoEquipos de respuestaCampañas, TTPs, modus operandi del atacanteLazarus usa watering hole con exploit CVE-2024-XXXX
TácticoAnalistas SOCIOCs accionables, reglas de detecciónHash SHA-256, IP C2, regla YARA, regla Sigma
TécnicoSIEM, EDR, firewallFeeds automatizados de indicadoresFeed TAXII con IPs maliciosas actualizado cada hora

STIX 2.1 cubre los cuatro niveles, pero su mayor impacto está en el táctico y técnico, donde la automatización marca la diferencia.

STIX 2.1: el lenguaje de las amenazas#

STIX (Structured Threat Information Expression) es un estándar de OASIS que define un modelo de datos para representar información de amenazas en formato JSON. Versión actual: STIX 2.1.

Objetos de dominio (SDO)#

Los SDOs representan conceptos de inteligencia de amenazas.

{
  "type": "indicator",
  "spec_version": "2.1",
  "id": "indicator--a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "created": "2024-03-15T10:00:00.000Z",
  "modified": "2024-03-15T10:00:00.000Z",
  "name": "IP de C2 asociada a Emotet",
  "pattern": "[ipv4-addr:value = '203.0.113.5']",
  "pattern_type": "stix",
  "valid_from": "2024-03-15T10:00:00.000Z",
  "labels": ["malicious-activity"]
}

Los SDOs principales son:

  • Indicator: patrón que detecta actividad maliciosa (IP, hash, dominio, regla YARA).
  • Malware: descripción de software malicioso (nombre, tipo, capacidades).
  • Threat Actor: grupo o individuo responsable (motivación, sofisticación, aliases).
  • Attack Pattern: técnica usada, normalmente mapeada a MITRE ATT&CK.
  • Campaign: conjunto de actividades maliciosas coordinadas con un objetivo.
  • Vulnerability: debilidad explotable (CVE).

Objetos de relación (SRO)#

Los SROs conectan SDOs entre sí.

{
  "type": "relationship",
  "spec_version": "2.1",
  "id": "relationship--1234abcd-5678-90ef-ghij-klmnopqrstuv",
  "created": "2024-03-15T10:00:00.000Z",
  "modified": "2024-03-15T10:00:00.000Z",
  "relationship_type": "indicates",
  "source_ref": "indicator--a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "target_ref": "malware--f1e2d3c4-b5a6-7890-1234-567890abcdef"
}
  • Relationship: enlace tipado entre dos objetos (uses, indicates, targets, attributed-to).
  • Sighting: registro de que un indicador fue observado en un entorno concreto, con fecha y lugar.

Objetos observables (SCO)#

Los SCOs representan datos técnicos concretos: ipv4-addr, domain-name, file (con hashes), email-addr, url, process. Se usan dentro de los patrones de los Indicators.

TAXII 2.1: el transporte#

TAXII (Trusted Automated Exchange of Indicator Information) es el protocolo HTTP/REST que transporta objetos STIX entre sistemas. Funciona con un modelo de colecciones.

Conceptos clave#

  • Discovery: endpoint que anuncia los API roots disponibles.
  • API Root: raíz del servicio TAXII que contiene colecciones.
  • Collection: conjunto temático de objetos STIX (ejemplo: "IOCs de ransomware Q1 2024").
  • Objects endpoint: permite publicar (POST) y consumir (GET) objetos STIX de una colección.

Consultar un servidor TAXII#

# Descubrir API roots
curl -H "Accept: application/taxii+json;version=2.1" \
     https://taxii.ejemplo.com/taxii2/

# Listar colecciones
curl -H "Accept: application/taxii+json;version=2.1" \
     https://taxii.ejemplo.com/api1/collections/

# Obtener objetos de una colección
curl -H "Accept: application/stix+json;version=2.1" \
     "https://taxii.ejemplo.com/api1/collections/UUID/objects/?added_after=2024-03-01"

Publicar indicadores#

# POST de un bundle STIX a una colección
curl -X POST \
     -H "Content-Type: application/stix+json;version=2.1" \
     -H "Accept: application/taxii+json;version=2.1" \
     -d @bundle.json \
     https://taxii.ejemplo.com/api1/collections/UUID/objects/

Ejemplo práctico: crear y compartir un IOC#

Después de un incidente donde detectaste un servidor C2, quieres compartir los IOCs con tu comunidad.

Paso 1: crear el bundle STIX con Python#

from stix2 import Indicator, Malware, Relationship, Bundle

# Indicador: IP del C2
indicador_ip = Indicator(
    name="IP C2 de campaña Q1-2024",
    pattern="[ipv4-addr:value = '203.0.113.5']",
    pattern_type="stix",
    valid_from="2024-03-15T10:00:00Z",
    labels=["malicious-activity"]
)

# Indicador: hash del binario
indicador_hash = Indicator(
    name="Hash del dropper Q1-2024",
    pattern="[file:hashes.'SHA-256' = 'a1b2c3d4e5f6...']",
    pattern_type="stix",
    valid_from="2024-03-15T10:00:00Z",
    labels=["malicious-activity"]
)

# Malware asociado
malware = Malware(
    name="Dropper-Q1-2024",
    malware_types=["dropper"],
    is_family=False
)

# Relaciones
rel1 = Relationship(
    source_ref=indicador_ip,
    relationship_type="indicates",
    target_ref=malware
)

rel2 = Relationship(
    source_ref=indicador_hash,
    relationship_type="indicates",
    target_ref=malware
)

# Bundle
bundle = Bundle(objects=[indicador_ip, indicador_hash, malware, rel1, rel2])
print(bundle.serialize(pretty=True))

Paso 2: validar el bundle#

# Instalar stix2-validator
pip install stix2-validator

# Validar
stix2_validator bundle.json

Paso 3: publicar en MISP o TAXII#

# Publicar en un servidor TAXII
curl -X POST \
     -H "Content-Type: application/stix+json;version=2.1" \
     -d @bundle.json \
     https://taxii.tu-organizacion.com/api1/collections/UUID/objects/
# Publicar en MISP vía API
from pymisp import PyMISP

misp = PyMISP("https://misp.tu-organizacion.com", "TU_API_KEY")
event = misp.new_event(
    distribution=1,  # Comunidad
    info="Incidente Q1-2024: dropper + C2"
)
misp.add_attribute(event, type="ip-dst", value="203.0.113.5", category="Network activity")
misp.add_attribute(event, type="sha256", value="a1b2c3d4e5f6...", category="Payload delivery")

MISP: la plataforma de referencia#

MISP (Malware Information Sharing Platform) es una plataforma open source para recopilar, almacenar, distribuir y compartir IOCs y threat intelligence. Es el estándar de facto en la comunidad de seguridad, usado por CERTs, SOCs, fuerzas del orden y organizaciones privadas en todo el mundo.

ConceptoQué esEjemplo
EventoContenedor de IOCs de un incidente"Phishing campaña Emotet marzo 2024"
AtributoIOC individual con tipo y categoríaip-dst: 203.0.113.5
ObjetoGrupo estructurado de atributosObjeto "file" con nombre, hash, tamaño
GalaxiaTaxonomía de conceptos (mapeo ATT&CK)Galaxy "mitre-attack-pattern"
TaxonomíaEtiquetas estandarizadastlp:amber, admiralty-scale:source-reliability="b"
FeedFuente externa de IOCsabuse.ch URLhaus, CIRCL OSINT Feed
Sharing groupGrupo de organizaciones que compartenCERT-ES, sector financiero regional

Feeds populares en MISP#

  • abuse.ch: URLhaus (URLs maliciosas), MalwareBazaar (samples), ThreatFox (IOCs).
  • CIRCL OSINT Feed: IOCs curados por el CERT de Luxemburgo.
  • AlienVault OTX: Open Threat Exchange de AT&T Cybersecurity.
  • Botvrij.eu: IOCs de la comunidad holandesa de seguridad.
# Consultar la API de MISP
curl -H "Authorization: TU_API_KEY" \
     -H "Accept: application/json" \
     "https://misp.tu-organizacion.com/attributes/restSearch" \
     -d '{"type":"ip-dst","last":"7d"}'

Integración con defensas#

La inteligencia de amenazas solo tiene valor si llega a las herramientas que toman decisiones: SIEM, EDR, firewall, proxy.

Objetos STIX 2.1: Indicator, Malware, Threat Actor, Attack Pattern, Relationship, Sighting
Objetos STIX 2.1: Indicator, Malware, Threat Actor, Attack Pattern, Relationship, Sighting

SIEM (Elastic, Splunk, QRadar)#

Los SIEMs ingestan feeds de IOCs y los comparan contra los logs en tiempo real. Cuando una IP de un log de firewall coincide con una IP marcada como C2 en un feed, se genera una alerta.

# Ejemplo en Elastic Security: threat indicator match rule
- Index: logs-*
- Indicator index: filebeat-misp-*
- Indicator mapping: threat.indicator.ip → destination.ip
- Severity: high

EDR (CrowdStrike, Defender, SentinelOne)#

Los EDRs pueden consumir IOCs (hashes, IPs, dominios) y bloquear automáticamente procesos que coincidan o alertar al analista SOC.

Firewall y proxy#

Los firewalls de nueva generación (Palo Alto, Fortinet, Check Point) soportan feeds de IOCs externos (listas de IPs y dominios) que se actualizan automáticamente y se aplican como reglas de bloqueo.

SOAR (Security Orchestration, Automation and Response)#

Plataformas como Cortex XSOAR, Splunk SOAR o Shuffle automatizan la respuesta: cuando llega un IOC nuevo, el playbook automáticamente lo busca en los logs históricos, lo añade a las blocklists del firewall y envía una notificación al equipo.

Errores comunes al implementar CTI#

  • Ingestar feeds masivos sin curación: miles de IOCs sin contexto generan fatiga de alertas y falsos positivos.
  • No asignar TLP (Traffic Light Protocol) a los IOCs: compartir indicadores clasificados como TLP:RED públicamente viola la confianza de la fuente.
  • Mantener IOCs expirados activos: una IP que fue C2 hace un año probablemente ya no lo es. Los indicadores tienen vida útil.
  • No correlacionar con el contexto propio: un IOC de un APT que ataca el sector bancario puede no ser relevante para una empresa de logística.
  • Consumir solo, nunca contribuir: la CTI es bidireccional. Si tu organización detecta amenazas y no comparte, la comunidad se debilita.
  • Confundir datos con inteligencia: una lista de IPs no es inteligencia. Inteligencia es la lista de IPs con contexto, confianza, atribución y recomendación de acción.
  • No medir la efectividad: ¿cuántas alertas verdaderas generaron tus feeds en los últimos 30 días? Si la respuesta es cero, algo falla.

Preguntas frecuentes#

¿STIX y TAXII son lo mismo?#

No. STIX es el formato de datos (cómo representar amenazas en JSON). TAXII es el protocolo de transporte (cómo enviar y recibir esos datos vía HTTP). Son complementarios: STIX sin TAXII es un archivo estático; TAXII sin STIX puede transportar cualquier formato, pero pierde la estandarización.

¿MISP usa STIX?#

MISP tiene su propio formato nativo basado en eventos y atributos, pero puede importar y exportar en STIX 2.1. Cuando compartes con organizaciones que usan otra plataforma, STIX es el lingua franca. Dentro de tu MISP, trabajas con el formato nativo.

¿Qué es TLP y por qué importa?#

TLP (Traffic Light Protocol) es un esquema de clasificación para compartir información sensible. TLP:RED es solo para los destinatarios directos. TLP:AMBER es para la organización del destinatario. TLP:GREEN es para la comunidad de seguridad. TLP:CLEAR es público. Respetar el TLP es fundamental para mantener la confianza en los canales de compartición.

¿OpenCTI es mejor que MISP?#

Son diferentes. MISP está centrado en IOCs tácticos y en la compartición entre organizaciones. OpenCTI es una plataforma de inteligencia más amplia que integra STIX nativamente, visualiza relaciones entre objetos, y tiene un flujo de análisis más sofisticado. Muchas organizaciones usan ambos: MISP para recibir y compartir feeds, OpenCTI para análisis interno y correlación.

¿Cómo empiezo si mi organización no tiene CTI?#

Empieza consumiendo feeds gratuitos: abuse.ch, AlienVault OTX, CIRCL OSINT. Instala MISP (hay imagen Docker oficial) y configura esos feeds. Conecta MISP a tu SIEM para que los IOCs generen alertas automáticas. Eso ya te da un nivel básico de CTI operativa sin inversión significativa.

¿Necesito programar para usar STIX?#

No para consumir: MISP y OpenCTI tienen interfaces web. Pero para automatizar la creación de IOCs, integrar con tu pipeline de respuesta a incidentes o escribir conectores custom, Python con la librería stix2 y pymisp es la forma más eficiente.

Resumen#

  • STIX 2.1 estandariza cómo representar amenazas: SDOs (Indicator, Malware, Threat Actor), SROs (Relationship, Sighting) y SCOs (IPs, dominios, hashes).
  • TAXII 2.1 transporta objetos STIX entre sistemas vía API REST con modelo de colecciones.
  • MISP es la plataforma open source de referencia para gestionar, almacenar y compartir IOCs.
  • La CTI operativa transforma datos crudos de incidentes en feeds que SIEM, EDR y firewalls consumen automáticamente.
  • Respetar TLP y la vida útil de los IOCs evita falsos positivos y mantiene la confianza de la comunidad.
  • Empezar es sencillo: feeds gratuitos, MISP en Docker y conexión a tu SIEM.

Fuentes y lecturas recomendadas#

Practícalo en estos laboratorios

Ver todos los laboratorios de esta categoría