Installer OpenCTI Docker

OpenCTI est une plateforme open source Cyber ​​Threat Intelligence qui fournit une puissante base de données de gestion des connaissances pour stocker, organiser et partager les connaissances sur les cybermenaces et utilise le schéma STIX2 pour sa structure. Il a été conçu pour les analystes CTI. La plate-forme est construite sur les technologies modernes de Grakn, GraphQL, Elastic, RabbitMQ, Redis et React. Le projet est disponible sous forme d’image Docker, ce qui simplifie l’installation.

Bien que je ne fasse probablement pas le meilleur travail pour parler de l’ensemble des fonctionnalités de cette plate-forme, vous pouvez en voir plus sur leur site Web et leur page github . Cela vaut également la peine de voir les différentes présentations sur cette plate-forme. L’une de ces présentations est disponible ici .

Ce que je dirai, c’est que l’équipe de développement derrière OpenCTI a créé une plate-forme gratuite, facile à utiliser, visuellement attrayante et qui donne aux analystes CTI un moyen de décrire les différentes relations entre les indicateurs et les acteurs. La plate-forme dispose également de connecteurs supplémentaires pour améliorer encore ses capacités. Par exemple, vous pouvez extraire des indicateurs de MISP dans OpenCTI à l’aide du connecteur MISP.

Pour l’installation d’OpenCTI, j’utilise 2 machines virtuelles Ubuntu 18.04.4 avec 8 Go de RAM et 20 Go de disque attribués à chacune d’elles. Ils auront besoin d’être connectés les uns aux autres et à Internet, et peuvent envoyer un ping par nom d’hôte. Rien d’autre n’est spécial à leur sujet en tant que tel. Juste un système d’exploitation de base qui a été entièrement corrigé pour commencer. J’ai nommé mes machines opencti-1 et opencti-2 . Avec le recul, j’aurais probablement dû les nommer docker . Pas un bouchon de spectacle, car je les utilise simplement pour OpenCTI et les images associées.

Installer Docker

Remarque : les deux machines virtuelles nécessiteront l’installation de Docker.

Bien que vous puissiez installer OpenCTI manuellement, évitez les tracas et utilisez le fichier docker-compose fourni. Pour installer Docker, exécutez les commandes suivantes. Étapes prises à partir de la page Docker .

Mettre à jour les référentiels

sudo apt-get update

Installer les prérequis

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

Ajouter la clé GPG

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Vérifiez l’empreinte de la clé

sudo apt-key fingerprint 0EBFCD88

Ajouter le dépôt stable

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Installer Docker et Docker Compose

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose

Vérifier la version installée

sudo docker version

Gérer docker en tant qu’utilisateur non root

Devoir sudo chaque commande docker est ennuyeux, alors créons un groupe docker et ajoutez-y votre utilisateur. Vous devrez vous déconnecter et vous reconnecter pour que le groupe réévalue.

sudo usermod -aG docker $USER

Créer un essaim Docker

Bien que vous n’ayez techniquement pas besoin de Docker Swarm pour installer OpenCTI, c’est ainsi que je vais l’installer car je souhaite incorporer davantage de conteneurs Docker pour d’autres fonctionnalités à l’avenir.

À partir du premier nœud (AKA : nœud du gestionnaire), exécutez la commande suivante :

docker swarm init --advertise-addr <MANAGER-IP>

La sortie affiche une commande sur ce que vous exécutez sur l’autre nœud pour rejoindre cet essaim. Exécutez cette commande sur le deuxième nœud. Il rejoindra ce nœud en tant que nœud de travail.

docker swarm join --token <LONG-TOKEN-ID> <IP-ADDRESS-OF-MANAGER:PORT>

Installer Portainer

Bien que vous puissiez apprécier la gestion manuelle des conteneurs, et que vous vouliez probablement vous salir les mains, l’utilisation de Portainer vous facilitera la vie. L’installation de Portainer consiste à télécharger un fichier docker-compose et à déployer une pile. Nous utiliserons ensuite Portainer pour ajouter la pile OpenCTI.

Cela ne doit être effectué que sur un nœud.

mkdir -p /opt/portainer && cd /opt/portainer
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

Avant de lancer Portainer, nous devons changer le port client car il entrera en conflit avec OpenCTI. Vous pouvez apporter cette modification en éditant le portainer-agent-stack.yml fichier. Localisez la ports section et changez-les du port 8000/9000 au port 18000/19000 respectivement. La configuration devrait ressembler à ceci par la suite.

    ports:
      - "19000:9000"
      - "18000:8000"

Avec les ports modifiés, nous pouvons maintenant mettre en place Portainer en utilisant la commande suivante :

docker stack deploy --compose-file=portainer-agent-stack.yml portainer

Vous pouvez ensuite vous connecter à Portainer en utilisant l’ip:19000 et en définissant votre mot de passe initial

L’interface graphique fournit une vue d’ensemble complète de votre environnement de pile Docker.

page-principale-de-portainer

Installer OpenCTI

Maintenant que Portainer est installé, nous pouvons créer la pile OpenCTI. Cela se fera dans l’interface de Portainer.

Les notes d’installation d’OpenCTI sur Docker sont disponibles sur notion.io

J’ai trouvé que les étapes d’installation étaient assez générales et contenaient des connaissances supposées. Certaines des informations se trouvaient dans un autre fichier README, et j’ai choisi d’utiliser Portainer, donc ce sont les étapes que j’ai suivies.

Obtenirdocker-compose.yml

Téléchargez ou copiez le contenu de docker/docker-compose.yml at master · OpenCTI-Platform/docker · GitHub . Bien que vous puissiez créer votre propre référentiel git pour cela et pointer vers lui, je vais simplement garder cela comme un système autonome et je prévois d’apporter d’autres modifications au fichier docker-compose dans un article ultérieur.

Dans Portainer, sélectionnez Stacks dans le volet de gauche, et Add stack . Donnez un nom à la pile et utilisez l’éditeur Web pour coller docker-compose.yml le fichier qui a été téléchargé.

Avant de déployer la pile, nous devons créer un certain nombre de variables d’environnement. Si vous regardez le docker-compose.yml fichier, vous remarquerez un tas d’entrées ${VARIABLE}. Nous pouvons les ajouter en tant que Environment variables .

OpenCTI fournit un exemple .env de fichier https://github.com/OpenCTI-Platform/docker/blob/master/.env.example qui peut être utilisé et modifié. Il va sans dire que vous devriez créer vos propres mots de passe forts. Chaque élément de ligne doit être ajouté manuellement dans la section des variables d’environnement. Il y a 13 variables au total.

Les variables d’environnement sont utilisées pour que les informations d’identification ne soient pas codées en dur et stockées dans le docker-compose.yml fichier.

Vous devrez créer un nouvel UUID pour la OPENCTI_ADMIN_TOKEN variable. Un UUID peut être généré à l’aide de Online UUID Generator Tool ou uuidgen à partir d’une ligne de commande Linux.

Déployer la pile OpenCTI

Avec le fichier docker-compose ajouté dans l’éditeur Web et les variables d’environnement renseignées, appuyez sur le Deploy the stack bouton et attendez.

Du déploiement de la pile à la disponibilité d’OpenCTI, il a fallu un certain temps. Il est probablement préférable de faire une pause en attendant que la pile soit prête.

Tout se passe bien, vous devriez pouvoir accéder à n’importe quelle adresse IP de votre essaim de docker sur le port 8080 et obtenir une page de connexion OpenCTI.

Une fois connecté, le tableau de bord OpenCTI ressemble à ceci :

Et c’est à peu près tout pour l’installation.

APT28

Il y a pas mal de données qui sont fournies hors de la boîte. Un bon exemple de ce dont OpenCTI est capable est de vérifier APT28.

À l’aide de l’icône du flacon (2e icône à gauche), naviguez jusqu’à Intrusion sets puis sélectionnez APT28. Ici, vous pouvez commencer à voir les détails et les rapports.

Si vous naviguez vers Knowledge , vous pouvez également commencer à voir d’où proviennent les rapports et la relation entre les indicateurs et les TTP utilisés par ce groupe.

Dans le volet de droite, vous pouvez voir les différents logiciels malveillants, techniques, outils, etc. associés.

Conclusion

OpenCTI ressemble certainement à une plate-forme très excitante et intéressante pour stocker et gérer Cyber ​​​​Threat Intelligence pour votre organisation. J’espère ajouter une solution de docker proxy inverse et étendre les fonctionnalités d’OpenCTI en utilisant les différents connecteurs disponibles.