Bonjour à tous, je me suis rendu compte que je ne vous ai jamais parlé du projet The Hive & Cortex. Et comme je refait un peu de docker ces derniers temps, je trouve que c’est l’occasion de vous faire un petit tuto sur The Hive.
Rappel des articles de la série « Docker et Portainer » :
- Docker et Portainer part 1 – Les conteneurs pour les nuls ;
- Docker et Portainer part 2 – Stack vsftpd mono-image ;
- Docker et Portainer part 3 – Docker Guacamole via une Stack multi-images ;
- Docker et Portainer part 4 – OpenVPN, Network et Splunk ;
- Docker et Portainer part 5 – Customiser un conteneur PHP-FPM ;
- Docker et Portainer part 6 – NextCloud avec Docker, Déployer un « Cloud » personnel ;
- Docker et Portainer part 7 – Mettre à jour Portainer ;
- Docker et Portainer part 8 – Déployer un jitsi meet avec docker ;
- Docker et Portainer part 9 – Monitoring des performances docker avec Splunk.
- Docker et Portainer part 10 – The Hive & Cortex et installation Docker….
The Hive, c’est quoi ?
The Hive est une plateforme open-source de réponse à incident. Open Source jusqu’en version 4, à partir de la 5 c’est un produit commercial (porté par strangebee). Néanmoins la version 4 continue d’être développé et contient les principales fonctionnalités. Le rôle de The Hive est de suivre différentes affaires en affectant des tâches et stockant les preuves collectées, tout en collaborant entre analystes et en s’interconnectant avec d’autres plateformes comme MISP ou des SIEMs. Le produit est très souvent packagé avec Cortex (maintenu par la même équipe) et dont le but est plutôt d’automatiser certaines analyses nécessaires aux investigations (genre des recherches sur AbuseIPDB ou VirusTotal).
Tout ce petit monde est bien évidement accessible par API REST pour venir se brancher un peu partout dans votre SI, ou dehors.
Bref, les deux produits sont une sorte d’embryon de SOAR qui vous permettent de gérer vos tickets, analyses, investigations et qui peut être utilisé à la fois par un SOC, un CERT ou un CSIRT et qui mérite qu’on s’y attarde un peu ici donc.
Installer TheHive 4 avec Docker-Composer
Comme je l’ai dis, le projet se déploie très facilement avec docker. Le projet maintient même un repo GitHub avec tous les setup que vous voulez (voir Docker-Templates). De mon côté, je suis reparti de cette image que j’ai personnalisée ci-dessous pour coller avec mon installation Docker (voir ma série d’article sur Docker & Portainer).
Notez que vous aurez besoin de créer les volumes manuellement au préalable. J’ai également du ajouter le fichier logback.xml et le placer dans cortex_etc
et thehive_etc
avec les fichiers application.conf
présent dans le dossier vol du GitHub.
Un fois que c’est fait, déployez la stack suivante dans portainer.
version: '3.8'
volumes:
elasticsearch_data:
external: true
elasticsearch_logs:
external: true
cortex_etc:
external: true
cortex_jobs:
external: true
thehive_etc:
external: true
thehive_db:
external: true
thehive_index:
external: true
thehive_data:
external: true
services:
elasticsearch:
image: 'elasticsearch:7.11.1'
hostname: elasticsearch
container_name: elasticsearch
restart: unless-stopped
expose:
- '9200'
environment:
- http.host=0.0.0.0
- discovery.type=single-node
- cluster.name=hive
- script.allowed_types= inline
- thread_pool.search.queue_size=100000
- thread_pool.write.queue_size=10000
- gateway.recover_after_nodes=1
- xpack.security.enabled=false
- bootstrap.memory_lock=true
- ES_JAVA_OPTS=-Xms256m -Xmx256m
ulimits:
nofile:
soft: 65536
hard: 65536
volumes:
- 'elasticsearch_data:/usr/share/elasticsearch/data'
- 'elasticsearch_logs:/usr/share/elasticsearch/logs'
networks:
Proxy_net:
ipv4_address: 172.20.11.1
cortex:
image: 'thehiveproject/cortex:latest'
hostname: cortex
container_name: cortex
restart: unless-stopped
command:
--job-directory /opt/cortex/jobs
environment:
- 'JOB_DIRECTORY=/opt/cortex/jobs'
volumes:
- 'cortex_etc:/etc/cortex/'
- 'cortex_jobs:/opt/cortex/jobs'
- '/var/run/docker.sock:/var/run/docker.sock'
depends_on:
- elasticsearch
expose:
- '9001'
networks:
Proxy_net:
ipv4_address: 172.20.11.2
thehive:
image: 'thehiveproject/thehive4:latest'
hostname: thehive4
container_name: thehive4
restart: unless-stopped
expose:
- '9000'
volumes:
- thehive_etc:/etc/thehive
- thehive_db:/opt/thp/thehive/db
- thehive_index:/opt/thp/thehive/index
- thehive_data:/opt/thp/thehive/data
command: '--no-config --no-config-secret'
networks:
Proxy_net:
ipv4_address: 172.20.11.3
networks:
Proxy_net:
external:
name: Proxy_net
Comme vous le voyez dans la conf ci-dessus, je n’expose aucun port donc il faudra jouer avec votre reverse proxy NPM devant votre infra docker pour accéder aux différents services et ajouter un contrôle d’accès ou exposer directement vos services.
La première action à faire est donc se connecter à cortex et cliquer sur Update DataBase.
Vous pouvez ensuite remplir un accès pour l’administrateur.
Et il ne vous restera plus qu’a vous loguer.
Vous devez alors créer un organisation.
Et une fois dans l’organisation un utilisateur pour récupérer sa clé d’API qui sera nécessaire pour l’interconnexion avec TheHive
Copier alors cette clé d’API dans le fichier application.conf de TheHive (dans le volume thehive_etc évoqué au début de l’installation
Comme pour Cortex, vous aurez alors besoin de poser le fichier logback.xml dans thehive_etc
(il semble manquant dans les images) et redémarrer votre stack docker-compose pour prendre en compte ces changements. De mon côté j’ai également du modifier les permissions sur les volumes thehive_db
et thehive_index
car The Hive tourne avec un id user et n’avait pas accès au dossier en écriture du coup.
A partir d’ici il ne vous reste plus qu’a vous authentifier sur l’interface web avec les creds par défaut :
… et changer le mot de passe…
Conclusion
Bon je trouve que ce post sur The Hive & Cortex commence à être assez long comme ça. Je vais, arrêter ici et je reprendrai un peu plus tard sur l’utilisation de l’ensemble dans un contexte entier sortie de l’installation.
J’espère que ça vous sera utile, de mon côté j’ai trouve le projet assez propre : ça se déploie facilement dans un docker un peu tordu même sans suivre à la lettre les instructions d’installation de la doc. Je sais que TheHive et Cortex ont pignon sur rue dans beaucoup d’organisation Cyber comme outils de ticketing ou de plateforme investigation commune. L’IHM fait un peu année 80 mais bon, c’est toujours mieux qu’une ligne de commande (ou pas…^^) et c’est requétable en API. Investiguez bien !