MDstable
NoteSnippetChecklistPlaybook

OpenCTI — Threat Intelligence Platform

Déploiement et utilisation d'OpenCTI : graphe de connaissance cyber, gestion des acteurs/TTP/IOC, intégration MISP et connecteurs

snippetintermediate 2026-06-19 4 min read
openctithreat-intelligencestixtaxiisociocttp

OpenCTI vs MISP

MISP Partage dIOC indicateurs bruts IP hash domaine
OpenCTI Graphe de connaissance Acteurs TTP Campagnes IOC
Rpondre "QUI attaque COMMENT" plutt que "QUOI bloquer"

OpenCTI modélise les données en STIX 2.1 nativement :

Threat Actor utilise Malware dploie Infrastructure
Campaign attribue Threat Actor cible Identity org pays
Attack Pattern TTP ATT&CK lie Indicator IOC

Déploiement Docker

yaml
# docker-compose.yml
version: '3'
services:
redis:
image: redis:7
restart: always
elasticsearch:
image: elasticsearch:8.12.1
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
volumes:
- esdata:/usr/share/elasticsearch/data
minio:
image: minio/minio:latest
command: server /data
environment:
- MINIO_ROOT_USER=opencti
- MINIO_ROOT_PASSWORD=changeme123
volumes:
- miniodata:/data
rabbitmq:
image: rabbitmq:3.12-management
environment:
- RABBITMQ_DEFAULT_USER=opencti
- RABBITMQ_DEFAULT_PASS=changeme123
opencti:
image: opencti/platform:6.2.0
ports:
- "8080:8080"
environment:
- APP__PORT=8080
- APP__BASE_URL=http://localhost:8080
- APP__ADMIN__EMAIL=admin@opencti.io
- APP__ADMIN__PASSWORD=ChangeMe!2026
- APP__ADMIN__TOKEN=UUID_TOKEN_ICI
- REDIS__HOSTNAME=redis
- ELASTICSEARCH__URL=http://elasticsearch:9200
- MINIO__ENDPOINT=minio
- MINIO__ACCESS_KEY=opencti
- MINIO__SECRET_KEY=changeme123
- RABBITMQ__HOSTNAME=rabbitmq
- RABBITMQ__USERNAME=opencti
- RABBITMQ__PASSWORD=changeme123
- PROVIDERS__LOCAL__STRATEGY=LocalStrategy
depends_on:
- redis
- elasticsearch
- minio
- rabbitmq
# Connecteur MITRE ATT&CK
connector-mitre:
image: opencti/connector-mitre:6.2.0
environment:
- OPENCTI_URL=http://opencti:8080
- OPENCTI_TOKEN=UUID_TOKEN_ICI
- CONNECTOR_ID=CONNECTOR_MITRE_UUID
- CONNECTOR_TYPE=EXTERNAL_IMPORT
- CONNECTOR_NAME=MITRE ATT&CK
- CONNECTOR_SCOPE=marking-definition,identity,attack-pattern,course-of-action,intrusion-set,campaign,malware,tool,vulnerability,x-mitre-data-source
- MITRE_INTERVAL=7 # jours entre chaque import
volumes:
esdata:
miniodata:
bash
# Accès : http://localhost:8080
# Login : admin@opencti.io / ChangeMe!2026

Connecteurs essentiels

yaml
# MISP — import IOC depuis MISP vers OpenCTI
connector-misp:
image: opencti/connector-misp:6.2.0
environment:
- CONNECTOR_NAME=MISP
- MISP_URL=https://misp.local
- MISP_KEY=MISP_API_KEY
- MISP_SSL_VERIFY=false
- MISP_DATETIME_ATTRIBUTE=timestamp
- MISP_IMPORT_FROM_DATE=2024-01-01
# Abuse.ch URLhaus
connector-urlhaus:
image: opencti/connector-urlhaus:6.2.0
environment:
- CONNECTOR_NAME=Abuse.ch URLhaus
- URLHAUS_CSV_URL=https://urlhaus.abuse.ch/downloads/csv_recent/
# AlienVault OTX
connector-alienvault:
image: opencti/connector-alienvault:6.2.0
environment:
- CONNECTOR_NAME=AlienVault OTX
- ALIENVAULT_BASE_URL=https://otx.alienvault.com
- ALIENVAULT_API_KEY=OTX_API_KEY
- ALIENVAULT_PULSE_START_TIMESTAMP=2024-01-01T00:00:00
# Shodan — enrichissement IP
connector-shodan:
image: opencti/connector-shodan:6.2.0
environment:
- SHODAN_TOKEN=SHODAN_API_KEY

Interface — Navigation

Analyse
Rapports Threat reports imports/crs
Regroupements Campagnes Intrusion Sets
Malwares Familles de malware TTPs
Menaces
Acteurs Groupes APT Lazarus APT28
Campagnes Oprations identifies
Modes opratoires Techniques ATT&CK
Arsenal
Malwares Outils malveillants
Canaux dattaque Vecteurs initiaux
Vulnrabilits CVE lies aux acteurs
Observations
Indicateurs IOC IP hash domain URL
Artefacts observs Fichiers rseau
Graphe de connaissance
Vue graphique des relations entre entits

API OpenCTI (GraphQL)

bash
BASE_URL"http://localhost:8080"
TOKEN"UUID_TOKEN_ICI"
# Liste des acteurs de menace
curl -X POST "$BASE_URL/graphql"
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"query": "{ threatActors { edges { node { id name description } } } }"}'
# Chercher un IOC
curl -X POST "$BASE_URL/graphql"
-H "Authorization: Bearer $TOKEN"
-H "Content-Type: application/json"
-d '{"query": "{ indicators(filters: {key: value, operator: eq}) { edges { node { id name pattern } } } }"}'
python
# pycti — client Python officiel
from pycti import OpenCTIApiClient
api = OpenCTIApiClient("http://localhost:8080", "UUID_TOKEN_ICI")
# Créer un indicateur
api.indicator.create(
name="Suspicious IP C2",
pattern="[ipv4-addr:value = '185.220.101.45']",
pattern_type="stix",
x_opencti_score=85,
labels=["c2", "apt"],
)
# Lister les groupes APT
actors = api.threat_actor.list()
for actor in actors:
print(actor["name"], actor.get("description", ""))

Intégration avec ton SOC

Wazuh alerte TheHive case OpenCTI enrichissement IOC
Pivot qui dautre cible ces IOC
Acteur ATT&CK mapping
MISP Export IOC valids
OpenCTI Wazuh export liste IP/domaines malveillants
Ingrer dans les rgles Suricata
Mise jour blacklists pfSense

Dashboard recommandé

Widgets utiles sur le tableau de bord OpenCTI
Acteurs actifs ce mois
IOC ingrs par source MISP OTX Abusech
TTPs les plus utilises ATT&CK heatmap
Rapports ajouts cette semaine
Score moyen des indicateurs
OPS·BRAIN v1.092 notes · Securitylocal