05/12/2025

Active DirectoryCybersécuritéInfrastructure as Code

GOAD : un lab d’entraînement complet pour maîtriser la sécurité de l’Active Directory

I. Présentation

Comment s'entraîner efficacement à sécuriser ou attaquer un Active Directory ? La réponse tient en quatre lettres : GOAD, un lab complet et open source.

L’Active Directory est depuis longtemps la pierre angulaire de nombreux systèmes d’information. Lors d’un test d’intrusion ou d’une cyberattaque, il s’agit de la cible principale des hackers, car le compromettre signifie bien souvent obtenir les clés pour maitriser tous les autres systèmes du domaine. Ainsi, maitriser et savoir évaluer la sécurité d’un AD est une compétence clé de tout administrateur système et expert en cybersécurité, du côté défense comme du côté attaque.

Pour aiguiser cette compétence centrale, rien de mieux qu’un terrain de jeu dédié dans lequel on peut expérimenter, apprendre, se tromper et même tout casser pour ensuite recommencer à 0 : C’est l’objectif de GOAD.

GOAD (Game Of Active Directory) est un lab vulnérable orienté autour de l’AD (la référence à Game Of Thrones n'est pas un hasard). Très complet et simple à déployer, il permet d’expérimenter un très grand nombre d’attaques et de vulnérabilités autour de l’Active Directory. Proposé gratuitement et en open source par Orange Cyberdéfense, nous allons voir dans cet article de quoi il s’agit précisément, l’intérêt de ce type de lab face à d’autres solutions en ligne, mais aussi comment le déployer localement et expérimenter nos premières attaques ! 

Je précise dès cette introduction que GOAD, bien qu’initialement dédié à l’entrainement au pentest, sera tout aussi utile aux administrateurs système souhaitant se former aux techniques de défense d’un AD. Mais aussi à ceux qui veulent s’entrainer à la détection des attaques AD. Voyons tout cela ! 🙂

II. GOAD : un lab cyber d’entrainement à l’attaque et la défense

A. Description du projet Game Of Thrones Active Directory

GOAD est avant tout un lab pour apprendre la cybersécurité offensive et le pentest autour de l’Active Directory. Il faut le voir comme un environnement hautement vulnérable dans lequel sont présentes de très nombreuses vulnérabilités qui n’attendent qu’à être exploitées. Pour ceux qui connaissent la DVWA (Damn Vulnerable Web Application), le principe est le même, mais à l’échelle d’un Active Directory. Voici un aperçu non exhaustif des vulnérabilités exploitables :

  • Attaques par bruteforce et password spraying
  • Exploitation des services MSSQL
  • Vulnérabilités Kerberos : Kerberoasting, ASREP Roasting
  • Unconstrained Delegation
  • Manipulation des ACL
  • Exploitation des GPO
  • Recherche d'information sensible dans les partages
  • Attaques par relais NTLM
  • Exploitation des relations d'approbation entre domaine
  • Exploitation LAPS
  • Utilisation de comptes ProtectedUser
  • Attaques par Shadow Credentials
  • etc.

L’intérêt majeur de GOAD, au-delà de permettre de s'entraîner à la découverte et l’exploitation de vulnérabilité Active Directory, est que son déploiement est totalement automatisé. Pas besoin de créer des VM Windows, d’installer le service ADCS, de créer des objets, groupes, OU, puis d’inclure soi-même les vulnérabilités à l’intérieur, ce qui est souvent chronophage et parfois complexe lorsque l’on débute : GOAD le fait pour vous grâce à différentes technologies de déploiement et d’IaC (Infrastructure As Code).

Nous verrons plus loin dans cet article que l’installation des pré-requis d’IaC et quelques commandes suffisent à déployer un véritable mini-SI avec plusieurs DC (Domain Controllers), domaines, une forêt, des serveurs, et même un Exchange, un ELK et un serveur Wazuh (monitoring de sécurité) !

Pour vous donner une idée, voici le schéma du lab de GOAD : 

Source : https://github.com/Orange-Cyberdefense/GOAD
Source : GitHub - Orange Cyberdefense

Vous pouvez notamment apercevoir quelques-uns des groupes et utilisateurs clés de ce lab ainsi que leur privilège, mais surtout les différents domaines et forêts ainsi que leur DC respectifs. Plusieurs services, souvent présents en entreprises et ciblés par les attaquants, y sont aussi déployés, je pense notamment à AD CS (Active Directory Certification Service) et MSSQL.

Le schéma contient toutes les réponses du lab ?

Oui et non, nous voyons ici les éléments clés du lab, mais pas forcément les vulnérabilités associées. De plus, il ne faut pas voir GOAD comme un challenge, mais comme un terrain d'entraînement et d'expérimentation. Il contient presque toutes les vulnérabilités classiques d’un AD. Si bien que si votre objectif est de le compromettre rapidement via le chemin le plus court, cela ne devrait pas être difficile. Son intérêt réside dans la multitude des vulnérabilités exploitables et des chemins de compromission présents.

Les avantages de GOAD sont multiples, notamment lorsque l’on souligne les limites de certaines plateformes d’entrainement en ligne : 

  • Il se déploie facilement et automatiquement ;
  • On peut revenir à l’état initial rapidement, sans craindre de perturber d’autres utilisateurs ou demander l’intervention d’un admin tiers ;
  • Il vous est entièrement dédié : pas de risque qu’une autre personne exploite une vulnérabilité qui ne peut l’être qu’une fois (changement de mot de passe d’un compte, par exemple) ;
  • Personnalisable : si vous maitrisez un peu l’Infra As Code, vous pourrez ajouter vos propres vulnérabilités ou cas de test en prenant GOAD comme base ;
  • Aspect “boite blanche” : vous pouvez passer du "côté admin” facilement, car les mots de passe sont publics. Cela permet d’aller voir soi-même la configuration défaillante, d’investiguer sur un cas complexe, ou même de tenter de patcher une vulnérabilité pour se former.

Il faut également savoir que différents formats de lab sont présents, comme le GOAD-Light, le mini-lab (moins gourmands en ressource), le lab SCCM, le NHA, qui lui est pour le coup un vrai challenge. En plus du lab “standard” sont proposées plusieurs extensions que vous pouvez lancer avec GOAD : 

  • ELK : Centralisation et monitoring des journaux de sécurité
  • Wazuh : XDR open-source pour la surveillance des journaux de sécurité
  • Exchange : Solution de type "serveur de messagerie" de Microsoft

En plus d’un AD et d’un mini SI vulnérable, vous pouvez donc avoir en plus une solution toute déployée de monitoring des logs et de sécurité.

C’est ce dernier point qui m'amène à penser que GOAD pourrait aussi être utilisé pour se former à la sécurisation d’un AD et à l'entraînement à la détection d’attaque (à condition de savoir les mener soi-même). En lançant GOAD, vous savez que vous aurez affaire à un environnement hautement vulnérable, quoi de mieux pour apprendre à le sécuriser ?

Si vous ne savez pas vous-même réaliser les attaques nécessaires pour vérifier qu'une vulnérabilité est corrigée, je vous invite à utiliser des outils tels que PingCastle qui pourront vous orienter sur ce qui doit être corrigé. Il vous permettra même de faire un suivi de l'évolution de votre score.

B. Lab Infra As Code : comment ça marche ?

Comme je l’ai mentionné précédemment, GOAD se base sur l’Infrastructure As Code. Il s’agit d’un ensemble de technologies qui permettent de déployer et de configurer un SI de manière automatique et centralisée à partir de fichier de configuration. Ici, c’est donc ce qui permet son déploiement rapide et facile lorsque l’on ne sait pas soi-même monter un environnement vulnérable. Les principales technologies utilisées par GOAD sont les suivantes : 

  • Vagrant : création et la configuration des environnements virtuels. Il peut être considéré comme un wrapper autour de logiciels de virtualisation comme VirtualBox et VMware.
  • Terraform : création et configuration automatisée d’infrastructure chez les principaux fournisseurs Cloud (Google Cloud Platform, Azure, AWS) et hyperviseurs bare-metal (VMware, Proxmox, etc.).
  • Ansible : Outil de gestion centralisé des configurations.

Dans les grandes lignes, Vagrant et Terraform permettent de déployer l’infrastructure (systèmes, OS, réseau) qu’elle soit locale ou dans le cloud, et Ansible est ensuite utilisé pour déployer des rôles, services, créer les groupes, les utilisateurs, et bien sûr, les vulnérabilités et défauts de configuration qui vont avec.

Le tout peut être géré de manière uniforme à partir d’un simple script Bash interactif qui permet d’initialiser le déploiement, puis d'ajuster certains paramètres et de gérer les environnements.

Le déploiement en local requiert tout de même 20 à 24 Go de RAM et environs 122 Go d’espace disque. Si vous ne possédez pas ces ressources, vous pouvez toujours vous tourner vers les environnements Cloud en échange de quelques euros (pensez à arrêter l’infrastructure lorsque vous ne vous en servez pas).

Si vous souhaitez aller plus loin dans la compréhension de ce projet, et avant que nous passions à la démonstration du déploiement de GOAD en local sur un hyperviseur VirtualBox, je vous mets ici le lien vers son dépôt Github et sa documentation : 

III.  Déploiement de GOAD avec Vagrant et VirtualBox

A. Installation des pré-requis

Nous allons à présent passer au déploiement de GOAD en local sur un hyperviseur VirtualBox. Je suis ici sur un hôte Ubuntu 24.04 fraichement installé, c’est donc Vagrant qui sera principalement utilisé, même si vous allez voir que l’utilisation du script goad.sh rendra le tout invisible (pas besoin de maitriser Vagrant donc). Nous allons commencer par installer Vagrant en suivant la procédure de la documentation officielle

# Télécharge la clé GPG de HashiCorp et la désarmore pour l'utiliser avec APT
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg

# Ajoute le dépôt HashiCorp à la liste des sources APT
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list

# Met à jour la liste des paquets et installe Vagrant
sudo apt update && sudo apt install vagrant

Si ce n’est pas déjà fait, nous installerons ensuite VirtualBox : 

# Installation de VirtualBox
sudo apt install virtualbox

Et enfin, nous devons installer quelques plugins Vagrant qui permettront de faciliter la gestion des VM déployée par GOAD : 

# Installation de plugin vagrant
vagrant plugin install vagrant-reload vagrant-vbguest winrm winrm-fs winrm-elevated

Les pré-requis sont maintenant installés, passons au déploiement de GOAD en lui-même en suivant cette documentation.

B. Déploiement de GOAD

Comme indiqué, il est nécessaire d’avoir une version de Python supérieur à 3.8. Pour vérifier votre version actuelle, saisissez la commande suivante : 

# Récupération de la version de Python
$ python3 --version
Python 3.12.3

Dans mon cas, je dispose de Python 3.12. Je vais alors installer le module venv de Python3.12 : 

# Installation du module venv de Python
sudo apt install python3.12-venv

Nous pouvons à présent télécharger le dépôt Github de GOAD, qui contient le script goad.sh, mais aussi tous les fichiers de configuration de l’environnement :

# Téléchargement du dépôt Github GOAD
git clone https://github.com/Orange-Cyberdefense/GOAD.git
cd GOAD

Nous pouvons à présent exécuter le script goad.sh :

Exécution du script goad.sh
Exécution du script goad.sh.

Nous voilà à présent sur l’interface interactive de GOAD. Celle-ci nous permet de préparer, installer, lancer et stopper les différents labs. Nous n’en avons pour l’instant aucun. Commençons par lister les différents labs disponibles. Je saisis la commande ? pour voir quelles sont les commandes disponibles, puis labs pour lister les labs : 

Lister les commandes et les labs disponibles dans GOAD.
Lister les commandes et les labs disponibles dans GOAD.

Comme indiqué plus haut, plusieurs labs peuvent être installés, avec plus ou moins de machines et services à disposition. Le schéma suivant récapitule toutes les configurations possibles :

Source : https://github.com/Orange-Cyberdefense/GOAD/blob/main/docs/img/diagram-GOADv3-full.png
Source : github.com/Orange-Cyberdefense/GOAD

Vous pouvez notamment voir que, pour l’instant, nous sommes sur le provider vmware (GOAD/vmware/local/192.168.56.X). Nous devons commencer par en changer pour passer à VirtualBox via la commande set_provider

Le 192.168.56.X indique que les machines seront déployées sur ce réseau, qui est le réseau vboxnet0 par défaut de VirtualBox. Si vous avez personnalisé la plage d’adresse réseau interne de VirtualBox, vous pouvez le modifier via la commande suivante : 

# Modifier la plage réseau de déploiement de GOAD (optionnel)
set_ip_range 192.168.100

Toutefois, cela ne devrait pas être nécessaire dans le cas d’une configuration par défaut. Enfin, nous pouvons sélectionner le lab que nous souhaitons déployer (GOAD, GOAD-Light, MINILAB, NHA, SCCM, GOAD-Mini). Dans un premier temps et pour avoir un lab complet, nous choisissons GOAD :

# Sélectionner le lab à déployer
set_lab GOAD

Si tout est bon, nous pouvons passer au déploiement via la commande install :

Lancement du déploiement du lab GOAD.

Toutes les actions d’installation de GOAD sont journalisées dans le terminal, ce qui permet de suivre son avancement. À commencer par le téléchargement des images (machines virtuelles) Vagrant qui serviront de socle de base au déploiement des différents serveurs.

Il peut arriver que le déploiement plante. Lorsque cela m'est arrivé, le fait de simplement relancer l'installation (commande install) va réexécuter les scripts provisionning Ansible, ce qui a permis de compléter l'installation sans avoir à tout supprimer et redéployer.

Attention, le déploiement prend tout de même pas mal de temps. Il faut notamment télécharger les images (VM par défaut) Vagrant, paramétrer l’ensemble des réseaux, systèmes et OS, puis configurer les services dans le bon ordre avec les comptes, les groupes et les permissions, vérifier que tout fonctionne bien, cela incluant plusieurs redémarrages. Bref, nous sommes bien contents de ne pas faire tout cela manuellement, mais il faut se montrer patient. En incluant le téléchargement des images, le déploiement de GOAD peut prendre jusqu’à 1h30 (je n’ai pas la fibre). Patience, et on ne touche à rien tant que ce n’est pas nécessaire.

En cas d’erreur pendant le déploiement, je vous oriente vers la procédure d’installation dans la documentation (qui sera plus à jour que cet article) et la section troubleshoot

Une fois ce déploiement terminé, voici ce qui devrait se présenter à vous : 

Fin du déploiement de GOAD.
Fin du déploiement de GOAD.

De plus, si vous ouvrez le gestionnaire VirtualBox, vous devriez voir les 5 VM présentes et démarrées :

Vue des 5 machines GOAD déployées et en fonction dans VirtualBox.
Vue des 5 machines GOAD déployées et en fonction dans VirtualBox.

Notre lab est donc bien installé. Il nous reste plus qu’à apprendre quelques commandes pour sa gestion et nous pourrons passer à l’offensive !

IV. GOAD : lancement et utilisation du lab

A. Gestion du lab

Nous allons à présent voir les commandes de base pour gérer le lab, le stopper et le relancer. Cela passe toujours par l’utilisation du script Bash interactif goad.sh. À son lancement, vous aurez affiché la liste des labs existants sur votre hôte. Vous pouvez aussi à tout moment lister vos labs avec la commande list :

Lister les labs déployées et charger un lab dans goad.sh.
Lister les labs déployées et charger un lab dans goad.sh.

Ici, j’ai ensuite exécuté la commande load <Instance ID> pour gérer le lab souhaité (ici, je n’en ai qu’un). Dès lors, saisir la commande ? vous montrera toutes les commandes de gestion disponibles pour ce lab spécifique. Les principales sont :

  • start : démarrer le lab (l’ensemble des VM qui le constitue)
  • stop : stopper le lab
  • snapshot : faire un snapshot de toutes les VM
  • reset : revenir à un snapshot

Comme vous le voyez, il existe une multitude de commandes pour gérer les extensions, déployer à la volée des scripts de provisionning Ansible, etc. Nous ne rentrerons pas dans ces détails dans le cadre de cet article de présentation, la documentation du site est assez complète.

Après avoir chargé le lab souhaité, il ne nous reste plus qu’à saisir start pour le démarrer, ou stop pour l’arrêter. Les deux opérations peuvent prendre quelques dizaines de secondes  :

# Démarrer le lab
GOAD/virtualbox/local/192.168.56.X (0fc131-goad-virtualbox) > start
[*] CWD: /workspace/0fc131-goad-virtualbox/provider
[*] Running command : vagrant up
Bringing machine 'GOAD-DC01' up with 'virtualbox' provider...
Bringing machine 'GOAD-DC02' up with 'virtualbox' provider...
Bringing machine 'GOAD-DC03' up with 'virtualbox' provider...
Bringing machine 'GOAD-SRV02' up with 'virtualbox' provider...
Bringing machine 'GOAD-SRV03' up with 'virtualbox' provider...
==> GOAD-DC01: Checking if box 'StefanScherer/windows_2019' version '2021.05.15' is up to date...
==> GOAD-DC01: Clearing any previously set forwarded ports
[...]

# Stopper le lab
GOAD/virtualbox/local/192.168.56.X (0fc131-goad-virtualbox) > stop

Si vous avez les ressources nécessaires, vous pourrez très bien avoir plusieurs labs en même temps sur votre hôte et lancer celui qui vous intéresse en fonction de vos besoins. 

Mettre fin au script interactif goad.sh ne stoppe pas le lab. Vous pourrez le reexécuter à la fin de vos expérimentations pour éteindre le lab proprement (en théorie, vous pourrez tout aussi bien l’éteindre via Vagrant ou le gestionnaire VirtualBox).

Côté machine d’attaque, vous pouvez opter : 

  • Comme moi, pour Exegol, qui se base sur Docker et a donc accès à l’ensemble des cartes réseau de l’hôte, incluant vboxnet0.
  • Pour une VM (type Kali Linux ou ParrotOS) auquel cas, il faudra penser à paramétrer une interface réseau sur vboxnet0 dans la configuration VirtualBox.
  • Pour votre hôte, si vous avez les outils nécessaires sur celui-ci.

Pour les cas particuliers, n’hésitez pas à aller voir la doc officielle de GOAD, plus complète que cet article.

B. Démonstration de compromission sur GOAD

Notre lab GOAD est maintenant déployé et opérationnel, nous allons commencer par une petite cartographie à l’aide de l’outil nmap pour voir quels sont les services et systèmes joignables : 

# Scan réseau simple via nmap
nmap -Pn 192.168.56.2-50 -T4 --open

Normalement, 5 systèmes devraient vous répondre (pensez à exclure votre hôte, sur l’IP 192.168.56.1). Pour en apprendre plus sur l’utilisation de l’outil de cartographie nmap je vous oriente vers notre cours à ce sujet

Voici un aperçu des résultats : 

Résultat du scan nmap sur les systèmes du lab cyber GOAD.
Résultat du scan nmap sur les systèmes du lab cyber GOAD.

Nous pouvons, par exemple, nous intéresser aux services RPC pour voir si l’un d’eux autorise les connexions anonymes : 

Connexion en null session et récupération des utilisateurs du domaine.
Connexion en null session et récupération des utilisateurs du domaine.

Ça a l’air d’être le cas du serveur WINTERFELL (192.168.56.11), contrôleur du domaine north.sevenkingdoms.local. Après avoir récupéré la liste complète des utilisateurs du domaine par ce vecteur, nous pouvons tenter une authentification dites user-as-pass. Cette attaque consiste à essayer de s’authentifier une seule fois par compte avec un mot de passe égal au login utilisateur : 

Attaque user as pass via netexec et compromission d'un compte utilisateur.
Attaque user as pass via netexec et compromission d'un compte utilisateur.

Retrouvez tous les détails sur les attaques par brute force dans notre article dédié à ce sujet : 

L’utilisateur hodor a bien un mot de passe égal à son nom d’utilisateur, nous venons d’obtenir un premier accès authentifié à l’Active Directory north.sevenkingdoms.local ! Nous allons pouvoir dégainer les outils classiques d’énumération comme PingCastle, PurlpleKnight ou Bloodhound. Voici quelques ressources à leur sujet :

C. Pour aller plus loin : Le blog de l’auteur

Pour aller plus loin que cette courte démonstration, je vous oriente notamment vers le blog de l’auteur de GOAD. S’y trouvent plusieurs articles qui détaillent pas à pas l‘exploitation de l’ensemble des vulnérabilités présentes dans le lab : 

Articles relatifs à GOAD du blog de Mayfly, auteur de GOAD.
Articles relatifs à GOAD du blog de Mayfly, auteur de GOAD.

Rien de mieux en termes de formation pentest, vous avez le terrain de jeu et le cours ! Il faut savoir que le contenu de GOAD et du blog de son auteur Mayfly se basent grandement sur l’Active Directory mindmap d’Orange Cyberdéfense, qui est également une très bonne ressource pour se former aux tests d’intrusion :

V. Conclusion

Nous avons vu dans cet article en détail ce qu’est GOAD. Ce lab open source de cybersécurité autour de l’Active Directory qui contient nativement un tas de faiblesses et vulnérabilité pour l’entrainement au pentest.

Grâce à GOAD, chacun peut s’entrainer pour comprendre les attaques, maitriser les outils offensifs et même apprendre à corriger les faiblesses de l’AD ou détecter les attaques sur un SI. L’intérêt majeur de GOAD est aussi sa facilité de déploiement, en local ou dans le cloud.

Aussi, si vous maitrisez mieux que moi l’Infra As Code, Vagrant, Ansible et Terraform, GOAD pourra très bien servir de base de travail pour monter des projets plus complexes ou intégrer vos propres vulnérabilités.

Je ne me suis pas trop étendu sur les extensions (Exchange, Wazuh, ELK) de GOAD, ni sur les nombreuses vulnérabilités qui s’y trouvent, mais je ne peux que vous encourager à le tester. Il fait pour moi partie des meilleurs lab cybersécurité existant à ce jour. Notamment lorsqu’on utilise avec le blog de l’auteur, qui référence les faiblesses du lab et leur exploitation, ainsi que l’Active Directory mindmap d’Orange Cyberdéfense. 

L’important pour bien se former est de ne pas griller les étapes et de prendre le temps de réellement comprendre le pourquoi et le comment de chaque vulnérabilité. Réussir à compromettre une machine ou un mot de passe ne suffit pas, il faut comprendre chaque subtilité des paramètres de sécurité impliqués et chaque option des outils utilisés pour que cet apprentissage soit utile et pérenne.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “GOAD : un lab d’entraînement complet pour maîtriser la sécurité de l’Active Directory

  • Bonjour,

    Dans l’exemple, l’infra est monté sur VirtualBox. Existe-t-il un équivalent sur Hyper-V ? Ce petit lab est vraiment sympa.

    Cordialement

    Répondre
  • Bonjour à tous,

    Je suis étudiant et passionné par les réseaux et la sécurité informatique.
    Je dois avouer que j’ai rencontré quelques difficultés pour déployer le lab sous Windows. Après quelques essais, j’ai réussi en modifiant le code (notamment le script goad.sh et le Vagrantfile).
    Pour aider ceux qui pourraient rencontrer les mêmes problèmes, j’ai rédigé une documentation détaillée expliquant toutes les étapes et les modifications effectuées.

    Si certains d’entre vous sont intéressés ou rencontrent des soucis similaires, n’hésitez pas à consulter ma doc ou à me poser des questions !

    Bonne journée à tous !

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.