STIX et TAXII sont les deux standards de fait pour échanger du renseignement cyber. STIX décrit la donnée (format), TAXII la transporte (protocole). Tout le monde en parle, peu de monde a mis le pied dedans. Voici un tutoriel pour ingérer son premier flux CTI en STIX 2.1 dans MISP ou dans son SIEM en 30 minutes chrono.
STIX, TAXII : les bons concepts en 2 min
- STIX 2.1 (Structured Threat Information eXpression) : un format JSON pour décrire indicateurs, menaces, acteurs, campagnes. Standard OASIS.
- TAXII 2.1 (Trusted Automated eXchange of Intelligence Information) : un protocole HTTPS REST pour publier et consommer du STIX. Notion de collections et de channels.
Les 18 objets STIX 2.1 à connaître
| Type d’objet | Usage |
|---|---|
indicator |
Indicateur de compromission (IoC) avec pattern |
malware |
Famille de malware (Emotet, Cobalt Strike…) |
threat-actor |
Acteur attribuable (groupe APT, individu) |
intrusion-set |
Ensemble cohérent d’opérations |
campaign |
Campagne d’attaque cible |
attack-pattern |
Technique ATT&CK |
vulnerability |
CVE référencée |
identity |
Entité (organisation, individu) |
relationship |
Lien entre 2 objets STIX |
sighting |
Observation d’un IoC |
observed-data |
Donnée brute observée |
note |
Commentaire d’analyste |
opinion |
Évaluation de fiabilité |
tool |
Outil (PowerShell, Mimikatz) |
infrastructure |
Infrastructure d’attaque |
location |
Géolocalisation |
course-of-action |
Mesure de remédiation |
marking-definition |
TLP, classification |
Exemple d’IoC en STIX 2.1
{ "type": "bundle", "id": "bundle--6e8a0c8e-2c0f-4f37-9d3c-1a8e6e74c9f0", "objects": [ { "type": "indicator", "spec_version": "2.1", "id": "indicator--3c5e2c52-3c01-4b9e-8d8f-bca6e123abcd", "created": "2026-04-12T10:00:00.000Z", "modified": "2026-04-12T10:00:00.000Z", "name": "Domaine C2 BlackCat Avril 2026", "indicator_types": ["malicious-activity"], "pattern": "[domain-name:value = 'support-update-corp.com']", "pattern_type": "stix", "valid_from": "2026-04-12T10:00:00.000Z", "object_marking_refs": ["marking-definition--34098fce-860f-48ae-8e50-ebd3cc5e41da"] }, { "type": "malware", "spec_version": "2.1", "id": "malware--00020203-2c2c-4c01-9e83-aabb12345678", "created": "2026-04-12T10:00:00.000Z", "modified": "2026-04-12T10:00:00.000Z", "name": "BlackCat / ALPHV", "is_family": true, "malware_types": ["ransomware"] }, { "type": "relationship", "spec_version": "2.1", "id": "relationship--f3e7d2c1-1234-5678-9abc-def012345678", "created": "2026-04-12T10:00:00.000Z", "modified": "2026-04-12T10:00:00.000Z", "relationship_type": "indicates", "source_ref": "indicator--3c5e2c52-3c01-4b9e-8d8f-bca6e123abcd", "target_ref": "malware--00020203-2c2c-4c01-9e83-aabb12345678" } ] }
Ce bundle décrit : un IoC (domaine C2), une famille de malware (BlackCat), et la relation entre les deux (« cet IoC indique BlackCat »). C’est l’unité de base.
Écrire son premier client TAXII en Python
Installation : pip install taxii2-client stix2
from taxii2client.v21 import Server, Collection # Connexion au serveur TAXII (exemple : OASIS Cyber Threat Intelligence TC) server = Server( "https://cti-taxii.mitre.org/taxii/", user=None, password=None # OTAN libre pour la collection mitre/attack ) # Lister les API roots et collections disponibles for api_root in server.api_roots: print(f"API Root: {api_root.url}") for collection in api_root.collections: print(f" - {collection.title} (id: {collection.id})") # Lire les 50 derniers objets d'une collection col = Collection("https://cti-taxii.mitre.org/stix/collections/95ecc380-afe9-11e4-9b6c-751b66dd541e/") envelope = col.get_objects(limit=50) for obj in envelope.get("objects", []): print(obj["type"], obj.get("name", obj["id"]))
Intégrer dans MISP / Splunk / Sentinel
| Outil | Connecteur natif STIX/TAXII | Effort |
|---|---|---|
| MISP | Oui (MISP modules + ingestion taxii) | 2-4h de configuration |
| Splunk ES | Add-on TAXII Threat Intel | 1 demi-journée |
| Microsoft Sentinel | Connecteur TI Threat Intel – TAXII | 30 min |
| Elastic Security | Filebeat TAXII module | 1-2h |
| OpenCTI | Connecteur natif STIX 2.1 | 1h |
indicator_types et marking-definition TLP. Vous éviterez d’inonder votre SIEM avec des IoC sans intérêt pour votre périmètre.
STIX 2.1 a remplacé STIX 1.x (XML, illisible). Les versions actuelles sont JSON, lisibles à l’œil nu, et l’écosystème open-source est mature. Si votre SOC ne consomme pas encore de STIX, c’est probablement le plus gros gain rapide à faire sur la chaîne CTI.
Pour commencer
Une heure suffit pour : (1) installer un client TAXII Python, (2) consommer le flux gratuit MITRE ATT&CK ou ANSSI, (3) le router vers son MISP ou son SIEM. Le retour sur effort est immédiat — le format STIX standardise un coût d’intégration qui était dément avec des feeds propriétaires.