Installation d'OpenAEV démystifiée : votre guide ultime
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

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
- Configurez le dépôt Docker selon la documentation officielle :
Exemple sur Ubuntu 24.04
Copied!
1 sudo apt-get update2 sudo apt-get install docker-compose-plugin
2. Vérifiez l'installation :
Copied!
1docker compose version
Pour Windows & macOS
- Téléchargez Docker Desktop depuis le site officiel.
- Suivez les instructions d'installation fournies sur le site.
Installation d'OpenAEV
- 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 Configuration2POSTGRES_USER=postgres3POSTGRES_PASSWORD=admin
.env
MinIO
Copied!
1 minio:2 image: minio/minio:RELEASE.2024-05-28T17-19-04Z3 volumes:4 - s3data:/data5 ports:6 - "9000:9000"7 environment:8 MINIO_ROOT_USER: ${MINIO_ROOT_USER}9 MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD}10 command: server /data11 restart: always12 healthcheck:13 test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]14 interval: 10s15 timeout: 5s16 retries: 5
docker-compose.yml
Copied!
1# MinIO Configuration2MINIO_ROOT_USER=minioadmin3MINIO_ROOT_PASSWORD=minioadmin
.env
RabbitMQ
Copied!
1 rabbitmq:2 image: rabbitmq:3.13-management3 environment:4 - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}5 - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}6 - RABBITMQ_NODENAME=rabbit01@localhost7 volumes:8 - amqpdata:/var/lib/rabbitmq9 restart: always10 healthcheck:11 test: [ "CMD", "rabbitmq-diagnostics", "-q", "ping" ]12 interval: 10s13 timeout: 5s14 retries: 5
docker-compose.yml
Copied!
1# RabbitMQ Configuration2RABBITMQ_DEFAULT_USER=rabbitadmin3RABBITMQ_DEFAULT_PASS=rabbitadmin
.env
Elasticsearch
Copied!
1 elasticsearch:2 image: docker.elastic.co/elasticsearch/elasticsearch:8.17.43 volumes:4 - esdata:/usr/share/elasticsearch/data5 environment:6 # Comment-out the line below for a cluster of multiple nodes7 - discovery.type=single-node8 # Uncomment the line below below for a cluster of multiple nodes9 # - cluster.name=docker-cluster10 - xpack.ml.enabled=false11 - xpack.security.enabled=false12 - thread_pool.search.queue_size=500013 - logger.org.elasticsearch.discovery="ERROR"14 - "ES_JAVA_OPTS=-Xms${ELASTIC_MEMORY_SIZE} -Xmx${ELASTIC_MEMORY_SIZE}"15 restart: always16 ulimits:17 memlock:18 soft: -119 hard: -120 nofile:21 soft: 6553622 hard: 6553623 healthcheck:24 test: curl -s http://elasticsearch:9200 >/dev/null || exit 125 interval: 30s26 timeout: 10s27 retries: 50
docker-compose.yml
Copied!
1# ElasticSearch Configuration2ELASTIC_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.service2sudo 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 :
- PostgreSQL : Documentation PostgreSQL
- RabbitMQ : Documentation RabbitMQ
- MinIO : Site officiel MinIO
- ElasticSearch : Site officiel ElasticSearch
- Java : Documentation Java
Vous pouvez utiliser le fichier docker-compose.yml disponible dans le répertoire openaev-dev.
Installation manuelle d'OpenAEV
- 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 Configuration2minio.port=100003minio.access-key=minioadmin4minio.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 :

Après avoir choisi votre système d'exploitation, suivez simplement les instructions fournies par la plateforme OpenAEV :
- Copiez l'extrait de code
- Ajoutez des exclusions antivirus

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.

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
Votre SOC n'a pas de problème de données. Il a un problème de coordination.

Workflows d'approbation de l'intelligence : garantir la qualité des données et rationaliser les processus
