97 % des équipes de sécurité ignorent si leurs expositions sont exploitables. En faites-vous partie ?Lire le rapport
Filigran
Simulation de brèche et d'attaqueDéveloppement logiciel

Installation d'OpenAEV démystifiée : votre guide ultime

7 min de lecture
OpenAEV installation demystified: your ultimate guide

OpenAEV (Open Adversarial Exposure Validation), est une plateforme puissante conçue pour évaluer et améliorer la posture de sécurité d'une organisation en simulant des cyberattaques du monde réel. Construite sur une architecture modulaire, OpenAEV intègre de manière transparente divers composants et dépendances, offrant flexibilité et évolutivité.

OpenAEV fait partie de la suite eXtended Threat Management (XTM) et peut tirer parti de son intégration native avec OpenCTI pour utiliser des renseignements qualifiés sur les menaces cyber (CTI) et améliorer votre programme de validation de l'exposition adversariale. Cette intégration permet aux organisations d'exploiter le renseignement sur les menaces dans leurs simulations d'attaques, rendant les tests de sécurité plus dynamiques et alignés sur les menaces réelles.

Cet article s'adresse aux personnes souhaitant installer OpenAEV. Un niveau minimum de connaissances techniques est recommandé :

  • Docker : pour un déploiement rapide utilisant la conteneurisation.
  • Java/Spring : pour une installation manuelle et une compréhension approfondie des composants internes d'OpenAEV.

Cet article est basé sur la version 1.12.2 d'OpenAEV. Les versions des dépendances et les variables d'environnement/propriétés d'application peuvent varier en fonction de la version que vous prévoyez de déployer.

Architecture technique d'OpenAEV

obas architecture

Architecture OpenAEV

La plateforme OpenAEV est structurée autour des composants clés suivants :

Plateforme principale

Le cœur d'OpenAEV, comprenant la logique métier, une API basée sur Java/Spring et une interface utilisateur basée sur React. Elle inclut également des injecteurs intégrés et des intégrations avec des agents tiers.

Agent & Implant OpenAEV

Développés en Rust, ces composants exécutent des injecteurs techniques sur les actifs ciblés :

  • Agent : Enregistre un actif sur la plateforme OpenAEV et récupère les tâches à exécuter. L'Agent n'effectuera pas d'attaque directe pour rester neutre vis-à-vis des antivirus et assurer la continuité du scénario d'attaque.
  • Implant : Exécute les tâches reçues de l'Agent. L'implant effectue des attaques directes et peut être détecté et arrêté par un logiciel antivirus.

Injecteurs

Modules externes qui étendent les capacités de la plateforme en ajoutant différents types d'injections pour personnaliser les scénarios d'attaque, les simulations et les tests atomiques. Ces injecteurs peuvent fonctionner de manière indépendante ou interagir avec des services tiers.

Vous pouvez créer votre propre injecteur en clonant un injecteur existant. L'équipe Filigran maintient une bibliothèque Python pour vous permettre d'accélérer vos développements.

Collecteurs

Modules Python qui récupèrent des données de divers services externes pour deux objectifs :

  • S'intégrer avec des systèmes de sécurité comme SIEM, EDR et XDR pour vérifier si une injection technique a été détectée ou prévenue, offrant ainsi des informations critiques sur la posture de sécurité d'une organisation.
  • Collecter toutes les données qui peuvent aider à planifier des simulations de brèche et d'attaque, telles que les listes d'actifs, de groupes, d'identités, de charges utiles, etc.

Dépendances

OpenAEV s'appuie sur plusieurs composants externes :

  • PostgreSQL (17) : Sert de base de données principale pour stocker les données de la plateforme.
  • RabbitMQ (4) : Gère la messagerie entre les injecteurs Python et OpenAEV, permettant une communication asynchrone.
  • MinIO (>= RELEASE.2024) : Gère le stockage d'objets, y compris la gestion des images.
  • Elasticsearch (8.x) : Prend en charge l'indexation et la récupération des données de la plateforme, et peut être utilisé avec Kibana pour une observabilité améliorée.

Guide de déploiement & configuration

Déploiement d'OpenAEV avec Docker

Prérequis

Avant d'installer OpenAEV, assurez-vous que Docker Compose est installé sur votre système. Voici comment l'installer :

Pour Linux

  1. Configurez le dépôt Docker selon la documentation officielle :

Exemple sur Ubuntu 24.04

Copied!

1 sudo apt-get update
2 sudo apt-get install docker-compose-plugin

2. Vérifiez l'installation :

Copied!

1docker compose version

Pour Windows & macOS

  1. Téléchargez Docker Desktop depuis le site officiel.
  2. Suivez les instructions d'installation fournies sur le site.

Installation d'OpenAEV

  1. Clonez le dépôt Docker d'OpenAEV :

Copied!

2. Configurez l'environnement :

Par défaut, le fichier docker-compose.yml utilise les variables d'environnement spécifiées dans le fichier .env.sample. Vous pouvez faire une copie de.env.sample vers .env et renseigner les valeurs nécessaires pour refléter votre configuration.

OpenAEV fournit des images Docker officielles disponibles ici : OpenAEV Docker Hub.

L'un des principaux atouts de cette plateforme est son architecture modulaire, vous permettant de déployer plusieurs images Docker pour répondre au mieux à vos besoins spécifiques et cas d'usage. Que vous configuriez un environnement de développement léger ou un système de production complet, la flexibilité de Docker garantit une adaptabilité sans faille.

Exploration approfondie du fichier Docker Compose

Nous allons parcourir ensemble les fichiers docker-compose.yml et .env pour comprendre leur structure, vous permettant de modifier les variables selon vos besoins.

⚠️ Important : Le fichier .env fourni est un exemple de configuration. Pour des raisons de sécurité, assurez-vous de mettre à jour vos identifiants avant le déploiement pour éviter tout accès non autorisé.

1. Dépendances

PostgreSQL

Copied!

docker-compose.yml

Copied!

1# PostgreSQL Configuration
2POSTGRES_USER=postgres
3POSTGRES_PASSWORD=admin

.env

MinIO

Copied!

1 minio:
2 image: minio/minio:RELEASE.2024-05-28T17-19-04Z
3 volumes:
4 - s3data:/data
5 ports:
6 - "9000:9000"
7 environment:
8 MINIO_ROOT_USER: ${MINIO_ROOT_USER}
9 MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}
10 command: server /data
11 restart: always
12 healthcheck:
13 test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
14 interval: 10s
15 timeout: 5s
16 retries: 5

docker-compose.yml

Copied!

1# MinIO Configuration
2MINIO_ROOT_USER=minioadmin
3MINIO_ROOT_PASSWORD=minioadmin

.env

RabbitMQ

Copied!

1 rabbitmq:
2 image: rabbitmq:3.13-management
3 environment:
4 - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
5 - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
6 - RABBITMQ_NODENAME=rabbit01@localhost
7 volumes:
8 - amqpdata:/var/lib/rabbitmq
9 restart: always
10 healthcheck:
11 test: [ "CMD", "rabbitmq-diagnostics", "-q", "ping" ]
12 interval: 10s
13 timeout: 5s
14 retries: 5

docker-compose.yml

Copied!

1# RabbitMQ Configuration
2RABBITMQ_DEFAULT_USER=rabbitadmin
3RABBITMQ_DEFAULT_PASS=rabbitadmin

.env

Elasticsearch

Copied!

1 elasticsearch:
2 image: docker.elastic.co/elasticsearch/elasticsearch:8.17.4
3 volumes:
4 - esdata:/usr/share/elasticsearch/data
5 environment:
6 # Comment-out the line below for a cluster of multiple nodes
7 - discovery.type=single-node
8 # Uncomment the line below below for a cluster of multiple nodes
9 # - cluster.name=docker-cluster
10 - xpack.ml.enabled=false
11 - xpack.security.enabled=false
12 - thread_pool.search.queue_size=5000
13 - logger.org.elasticsearch.discovery="ERROR"
14 - "ES_JAVA_OPTS=-Xms${ELASTIC_MEMORY_SIZE} -Xmx${ELASTIC_MEMORY_SIZE}"
15 restart: always
16 ulimits:
17 memlock:
18 soft: -1
19 hard: -1
20 nofile:
21 soft: 65536
22 hard: 65536
23 healthcheck:
24 test: curl -s http://elasticsearch:9200 >/dev/null || exit 1
25 interval: 30s
26 timeout: 10s
27 retries: 50

docker-compose.yml

Copied!

1# ElasticSearch Configuration
2ELASTIC_MEMORY_SIZE=4G

.env

2. Plateforme OpenAEV

Copied!

docker-compose.yml

Copied!

.env

3. Personnalisation

Vous pouvez ajouter plusieurs modules selon votre utilisation. Vous pouvez trouver ce qui est disponible ici → Écosystème OpenAEV

Copied!

docker-compose.yml

Copied!

1COLLECTOR_MITRE_ATTACK_ID=00000000-0000-0000-0000-000000000000 # Should be a valid UUID

.env

Lancement d'OpenAEV

Une fois configuré, lancez OpenAEV en utilisant Docker Compose :

Copied!

1sudo systemctl start docker.service
2sudo docker compose up -d

Accès à OpenAEV

Une fois installé, vous pouvez accéder à OpenAEV via votre navigateur web :

Copied!

1http://localhost:8080

Connectez-vous en utilisant les identifiants administrateur définis dans votre fichier .env.

Déploiement manuel d'OpenAEV

Dépendances

Avant de déployer OpenAEV, assurez-vous que les dépendances suivantes sont installées :

Vous pouvez utiliser le fichier docker-compose.yml disponible dans le répertoire openaev-dev.

Installation manuelle d'OpenAEV

  1. Téléchargez et extrayez la dernière version :

⚠️ Exemple avec la version 1.12.2, veuillez modifier la version selon vos besoins.

Copied!

2. Configurez l'application :

Modifiez le fichier application.properties (situé à la racine de l'archive de la version extraite) pour répondre à vos besoins.

Pour une liste complète des paramètres configurables, consultez : Guide de configuration OpenAEV.

Exploration approfondie du fichier application.properties

Nous allons parcourir ensemble le fichier application.properties pour comprendre sa structure, vous permettant de modifier les variables selon vos besoins.

1. Dépendances

PostgreSQL

Copied!

MinIO

Copied!

1# MinIO Configuration
2minio.port=10000
3minio.access-key=minioadmin
4minio.access-secret=minioadmin

RabbitMQ

Copied!

ElasticSearch

Copied!

2. Plateforme OpenAEV

Copied!

Lancement d'OpenAEV

Assurez-vous que toutes les dépendances sont en cours d'exécution et opérationnelles avant d'exécuter la commande suivante :

Copied!

Accès à OpenAEV

Une fois installé, vous pouvez accéder à OpenAEV via votre navigateur web :

Copied!

1http://localhost:8080

Connectez-vous en utilisant les identifiants administrateur définis dans votre fichier application.properties.

Déployer l'Agent OpenAEV

Cette section contient des informations utiles pour mener des attaques techniques via des actifs. Si vous utilisez OpenAEV pour des scénarios de simulation de type tabletop, vous pouvez ignorer cette partie.

Si vous utilisez OpenAEV pour mener des simulations d'attaque sur des actifs techniques, vous devez déployer un agent sur l'actif ciblé.

OpenAEV offre une intégration avec plusieurs agents existants, notamment CrowdStrike, Tanium et Caldera. Cependant, nous fournissons également notre propre agent interne, et nous allons parcourir le processus de déploiement pour celui-ci.

Pour les autres agents, vous pouvez trouver plus de détails dans la documentation officielle.

Selon le système d'exploitation, plusieurs installations sont à votre disposition, vous pouvez les trouver sur OpenAEV en cliquant sur l'icône bleue en haut à droite :

image 1

Après avoir choisi votre système d'exploitation, suivez simplement les instructions fournies par la plateforme OpenAEV :

  1. Copiez l'extrait de code
  2. Ajoutez des exclusions antivirus
agent

Une fois l'agent déployé, vous récupérerez vos endpoints enregistrés dans la liste dédiée et pourrez les utiliser dans vos injections techniques.

list

Conclusion

OpenAEV permet aux organisations d'évaluer de manière proactive leur résilience en cybersécurité grâce à des simulations sophistiquées de brèche et d'attaque. Son architecture modulaire, ses capacités d'intégration diversifiées et sa facilité de déploiement en font une solution pour les professionnels de la sécurité visant à renforcer leurs stratégies de défense.

Que vous optiez pour un déploiement basé sur Docker ou une installation manuelle, OpenAEV offre la flexibilité nécessaire pour s'adapter à vos besoins de sécurité uniques.

Prêt à commencer ? Explorez la documentation complète sur OpenAEV Docs.

Curieux d'en savoir plus sur les fonctionnalités principales d'OpenAEV et comment elles peuvent renforcer votre programme de gestion continue de l'exposition aux menaces (CTEM) ? Consultez cet article approfondi !

Lire la suite

Explorez des sujets et analyses associés