Cybersécurité

TheHive et MISP : gestion des incidents et partage de renseignements cyber

12 دقائق للقراءة

📍 Article de référence : Réponse aux incidents et analyse forensique numérique (DFIR) : guide complet 2025
Cet article est le tutoriel pratique de gestion des incidents avec TheHive 5 et MISP. Consultez le guide de référence pour la vue d’ensemble DFIR.

Gérer un incident de sécurité sans outil dédié, c’est essayer de coordonner une opération chirurgicale sur Post-it. Les analystes jonglent entre des alertes dans le SIEM, des notes dans des tableurs partagés, des communications par email, et des artefacts forensiques éparpillés sur des serveurs de fichiers. Le résultat est inévitable : des observables manqués, des actions non tracées, des doublon d’efforts, et au final un rapport post-incident difficile à reconstituer.

TheHive 5, développé par StrangeBee, est la plateforme open-source de gestion des incidents de sécurité qui centralise tout ce processus. MISP (Malware Information Sharing Platform), maintenu par le CIRCL (Computer Incident Response Center Luxembourg), est la plateforme de partage de renseignements sur les menaces. Ensemble, ils forment le binôme de référence du SOC/CSIRT moderne : TheHive orchestre l’investigation, MISP enrichit les observables et partage les renseignements produits avec la communauté cyber.

Prérequis

  • OS : Ubuntu 20.04/22.04 LTS recommandé pour le serveur
  • Docker et Docker Compose : version récente installée
  • RAM serveur : 8 Go minimum pour TheHive + MISP (16 Go recommandé)
  • CPU : 4 vCPUs minimum
  • Réseau : accès HTTPS sortant pour les intégrations externes (VirusTotal, MISP feeds publics)
  • Niveau : intermédiaire (administration Linux, Docker)
  • Temps estimé : 1 à 2 heures pour installation complète et première configuration

Étape 1 — Installer TheHive 5 avec Docker

TheHive 5 Community Edition est gratuite et open-source. Le déploiement le plus simple utilise Docker Compose. La configuration minimale pour un déploiement de développement ou de petit CSIRT utilise le stockage local intégré de TheHive (sans Cassandra ni Elasticsearch externe).

Commençons par créer la structure de répertoires et le fichier Docker Compose :

# Créer les répertoires de travail
mkdir -p /opt/thehive/{data,index,config}
mkdir -p /opt/cortex/{data,config}
cd /opt/thehive

Ces répertoires persistent les données de TheHive entre les redémarrages du conteneur. Le répertoire data contient les cases, files et attachments ; index contient l’index de recherche ; config contient la configuration applicative. Les monter comme volumes Docker est essentiel — perdre ces répertoires signifie perdre toute l’historique des investigations.

# /opt/thehive/docker-compose.yml
version: "3.8"
services:
  thehive:
    image: strangebee/thehive:5
    restart: unless-stopped
    ports:
      - "9000:9000"
    volumes:
      - /opt/thehive/data:/opt/thp/thehive/data
      - /opt/thehive/index:/opt/thp/thehive/index
      - /opt/thehive/config:/etc/thehive
    environment:
      - JVM_OPTS=-Xms512M -Xmx1G
    command:
      - --storage-directory
      - /opt/thp/thehive/data

Ce fichier Docker Compose définit un conteneur TheHive 5 qui expose le port 9000, monte les trois répertoires de données comme volumes persistants, et configure la JVM (Java Virtual Machine) avec 512 Mo minimum et 1 Go maximum de heap. Ajuster -Xmx1G à -Xmx2G sur un serveur avec plus de RAM pour de meilleures performances avec des volumes élevés d’alertes.

# Démarrer TheHive
docker compose up -d

# Vérifier que le conteneur est actif
docker compose ps

# Suivre les logs de démarrage (TheHive prend 30-60s pour démarrer)
docker compose logs -f thehive

Une fois le démarrage terminé, les logs affichent Application started. TheHive est accessible sur http://IP_SERVEUR:9000. Les identifiants par défaut sont admin@thehive.local / secret — les changer immédiatement dans Profile → My Profile → Change Password. Dans un environnement de production, placer TheHive derrière un reverse proxy Nginx avec HTTPS (Let’s Encrypt) avant toute exposition réseau.

Étape 2 — Créer une alerte et un cas dans TheHive

Le workflow TheHive s’articule autour de deux concepts clés : les alertes (signaux entrants des outils de détection) et les cas (investigations formelles ouvertes à partir d’une ou plusieurs alertes). Une alerte est d’abord triée — si elle est jugée valide, elle est convertie en cas pour investigation approfondie.

Dans TheHive (onglet Alerts → New Alert en haut à droite), renseigner : titre descriptif de l’alerte, source (ex: « Wazuh SIEM », « EDR CrowdStrike », « Email SOC »), type (ex: « Internal », « External »), sévérité (1-4), et les observables initiaux (IP source suspecte, hash de fichier malveillant, domaine C2). Les observables sont les IoCs (Indicators of Compromise) que l’analyste va enrichir.

Via l’API REST TheHive (utile pour l’intégration avec les outils de détection) :

# Créer une alerte via l'API REST TheHive 5
curl -s -X POST "http://thehive:9000/api/v1/alert"   -H "Authorization: Bearer VOTRE_API_KEY"   -H "Content-Type: application/json"   -d '{
    "title": "Ransomware detected - HOSTNAME-FINANCE-01",
    "description": "Endpoint sécurité détecte chiffrement massif de fichiers",
    "type": "internal",
    "source": "Wazuh EDR",
    "sourceRef": "WAZUH-2026051301",
    "severity": 4,
    "date": 1778643200000,
    "tags": ["ransomware", "endpoint", "finance"],
    "observables": [
      {"dataType": "hash", "data": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "message": "Ransomware binary hash"},
      {"dataType": "ip", "data": "185.220.101.5", "message": "C2 server IP detected in memory dump"}
    ]
  }'

Cette commande curl crée une alerte de sévérité 4 (critique) avec deux observables : le hash SHA-256 du binaire ransomware et l’adresse IP du serveur C2 identifiée dans l’analyse Volatility. Le champ sourceRef est l’identifiant de l’alerte dans l’outil source (Wazuh, EDR, SIEM) pour la traçabilité. Une fois l’alerte créée, elle apparaît dans le tableau de bord TheHive pour triage par un analyste.

Étape 3 — Installer MISP avec Docker

MISP requiert un environnement plus complet que TheHive : un serveur web (Apache), une base de données MySQL/MariaDB, Redis pour les workers asynchrones, et un superviseur de processus. Le dépôt officiel MISP Docker (github.com/MISP/misp-docker) fournit un Docker Compose prêt à l’emploi.

# Cloner le dépôt officiel MISP Docker
git clone https://github.com/MISP/misp-docker.git /opt/misp-docker
cd /opt/misp-docker

# Copier le fichier d'environnement template
cp template.env .env

# Éditer les variables clés dans .env
# Définir : MISP_ADMIN_EMAIL, MISP_ADMIN_PASSPHRASE, MISP_BASEURL
nano .env

Dans le fichier .env, les variables à définir obligatoirement sont : MISP_ADMIN_EMAIL (email admin), MISP_ADMIN_PASSPHRASE (mot de passe fort), et MISP_BASEURL (URL publique de votre instance MISP, ex: https://misp.mondomaine.com). La valeur de MISP_BASEURL est critique pour les exports STIX et les synchronisations inter-instances MISP — une valeur incorrecte brise les liens dans les attributs exportés.

# Démarrer MISP (premier démarrage long : ~5-10 minutes)
docker compose up -d

# Suivre l'initialisation
docker compose logs -f misp-core

# MISP est prêt quand les logs affichent "Ready"
# Accéder sur https://MISP_BASEURL ou http://IP:80

Le premier démarrage de MISP initialise la base de données MySQL, installe les taxonomies, les galaxies (MITRE ATT&CK, Threat Actors, etc.) et les feeds par défaut. Ce processus prend généralement 5 à 10 minutes. Une fois prêt, l’interface web est accessible avec les identifiants configurés dans .env.

Étape 4 — Intégrer TheHive et MISP

L’intégration TheHive ↔ MISP permet d’enrichir automatiquement les observables d’un cas TheHive avec les renseignements présents dans MISP (événements MISP liés à la même IP, au même hash, au même domaine), et d’exporter les IoCs d’un cas TheHive vers MISP pour les partager avec la communauté. Cette bidirectionnalité est ce qui rend le binôme si puissant.

Dans TheHive (Admin → Connectors → MISP), configurer la connexion :

# Récupérer la clé API MISP (dans MISP : Administration → List Auth Keys → Add)
# Copier la clé de 40 caractères générée

# Tester la connexion MISP depuis TheHive via l'API (option admin)
# Ou directement en ajoutant le connecteur via l'interface admin TheHive :
# - Name : MISP-Local
# - URL : http://MISP_IP/
# - Key : VOTRE_MISP_AUTH_KEY
# - Case Template : Default
# - Max Attributes : 1000

Une fois le connecteur configuré, TheHive peut importer les événements MISP comme alertes (via Alerts → Import from MISP), et chaque observable d’un cas peut être recherché automatiquement dans MISP pour voir s’il est référencé dans des événements de menace connus. Un hash SHA-256 d’un binaire suspect peut ainsi être instantanément corrélé avec des campagnes de malware documentées dans MISP.

Étape 5 — Activer les feeds de renseignement MISP

MISP devient réellement puissant lorsqu’il est alimenté par des feeds de Cyber Threat Intelligence (CTI). Les feeds sont des sources de renseignements qui alimentent automatiquement MISP en nouveaux IoCs à intervalles réguliers. MISP inclut une liste de feeds publics gratuits à activer depuis l’interface.

Dans MISP (Sync Actions → Feeds → Load default feeds), activer les feeds essentiels :

  • CIRCL OSINT Feed : IoCs OSINT du CIRCL Luxembourg (mainteneur de MISP)
  • Abuse.ch URLhaus : URLs malveillantes actives
  • Abuse.ch ThreatFox : IoCs malware récents (hashes, IPs C2)
  • MISP Botnet IP List : IPs de botnets connus
  • PhishTank : URLs de phishing vérifiées
# Forcer la mise à jour immédiate de tous les feeds activés
# (via l'API MISP avec votre auth key)
curl -s -X GET "https://misp.mondomaine.com/feeds/fetchFromAllFeeds"   -H "Authorization: VOTRE_AUTH_KEY"   -H "Accept: application/json"

# Planifier la mise à jour automatique toutes les heures (cron sur le serveur)
echo "0 * * * * www-data /var/www/MISP/app/Console/cake Server fetchFromAllFeeds"   | sudo tee -a /etc/cron.d/misp-feeds

La première synchronisation des feeds peut prendre plusieurs minutes selon le nombre de feeds activés et votre bande passante. MISP import les événements en tâche de fond via ses workers Redis. La commande cron ajoute une mise à jour horaire automatique des feeds — ajustez la fréquence selon vos besoins (plus fréquent pour des incidents actifs, moins fréquent en mode veille).

Étape 6 — Rechercher un IoC dans MISP et partager via STIX

Le flux de travail opérationnel quotidien d’un analyste avec MISP consiste à soumettre les IoCs découverts lors d’une investigation pour vérifier s’ils sont déjà référencés dans des campagnes connues, et à créer de nouveaux événements pour documenter les IoCs inédits découverts lors de l’investigation en cours.

# Rechercher un IoC dans MISP via l'API REST
# (chercher si l'IP 185.220.101.5 est dans MISP)
curl -s -X POST "https://misp.mondomaine.com/attributes/restSearch"   -H "Authorization: VOTRE_AUTH_KEY"   -H "Content-Type: application/json"   -H "Accept: application/json"   -d '{
    "returnFormat": "json",
    "value": "185.220.101.5",
    "type": "ip-dst",
    "limit": 10
  }' | python3 -m json.tool

# Exporter un événement MISP au format STIX 2.1
curl -s -H "Authorization: VOTRE_AUTH_KEY"   -H "Accept: application/vnd.oasis.stix+json; version=2.1"   "https://misp.mondomaine.com/events/restSearch?eventid=1234&returnFormat=stix2"

La première requête effectue une recherche sur la valeur 185.220.101.5 dans tous les attributs MISP de type ip-dst. Si elle retourne des résultats, l’IP est connue dans au moins un événement MISP — ce qui peut lier immédiatement l’incident à un groupe d’attaquants documenté ou une campagne connue. La deuxième requête exporte un événement MISP au format STIX 2.1 (Structured Threat Information eXpression), le standard international pour l’échange de CTI — utilisable avec tous les outils TAXII 2.x.

Erreurs fréquentes

Erreur Cause Solution
TheHive ne démarre pas, port 9000 non accessible JVM hors mémoire au démarrage Augmenter -Xmx dans docker-compose.yml ; vérifier docker compose logs thehive
MISP workers ne traitent pas les jobs de feed Redis non démarré ou workers arrêtés docker compose exec misp-core supervisorctl status et redémarrer les workers misp
Connexion TheHive ↔ MISP échoue Clé API MISP expirée ou IP TheHive non autorisée dans MISP Régénérer la clé API dans MISP ; vérifier les ACLs réseau entre conteneurs
Import de feed MISP lent ou bloqué Trop de feeds activés simultanément avec peu de workers Augmenter le nombre de workers Redis dans MISP config, ou étaler les feeds dans le temps

Tutoriels complémentaires

FAQ

Q : Quelle est la différence entre TheHive 4 et TheHive 5 ?
R : TheHive 5 introduit un nouveau modèle de données (Tasks et Task Logs remplacent l’ancien modèle), une nouvelle API REST v1, un système de tags et de profils amélioré, et une interface utilisateur modernisée. Le backend passe à une architecture différente (plus de dépendance directe à Elasticsearch pour la version Community). TheHive 4 n’est plus maintenu activement — la migration vers TheHive 5 est recommandée.

Q : MISP est-il accessible aux organisations sans équipe de sécurité dédiée ?
R : Oui, mais il faut distinguer l’utilisation de MISP comme consommateur de feeds (simple, sans compétences avancées) de l’utilisation comme producteur de renseignements (qui nécessite une compréhension des modèles de données STIX/TAXII et des ontologies de CTI). Pour débuter, activer les feeds publics et les consommer via des lookups automatisés depuis TheHive est parfaitement accessible.

Q : Peut-on connecter Wazuh directement à TheHive ?
R : Oui. Wazuh dispose d’intégrations natives avec TheHive via des custom active responses et l’API REST TheHive. Chaque alerte Wazuh dépassant un niveau de sévérité configuré peut créer automatiquement une alerte dans TheHive. Cette intégration transforme Wazuh en source de données SIEM/EDR alimentant le workflow de triage TheHive.

Références officielles

Sponsoriser ce contenu

Cet emplacement est à vous

Position premium en fin d'article — c'est l'instant où les lecteurs sont le plus engagés. Réservez cet espace pour votre marque, votre formation ou votre offre.

Recevoir nos tarifs
Publicité