Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
LOAD — Lord Of Active Directory - création automatique d'un Active Directory vulnérable sur AWS | Kitploit
Outils/GitHubGitHub/0xballpoint/load
Sécurité de l'Infrastructure CloudVirtualisation de SécuritéTests d'IntrusionApprentissage et ÉducationRed TeamingLabs et Pratique
GitHub0xballpoint/load

LOAD

Lord Of Active Directory - création automatique d'un Active Directory vulnérable sur AWS

Voir le dépôt
15613il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

load.jpg

Introduction

Basé sur AWS-Redteam-Lab et OCD GOAD

Le prix pour faire fonctionner le lab pendant 125 heures sur un mois est d'environ 14 $. Avec le Free Tier, vous obtenez 750h d'EC2 par mois ; il y a 6 machines, soit 125h. Mais vous ne disposez que de 30 Go de stockage. Vous avez donc besoin de stockage pour les 5 autres VMs : 30 Go * 5 = 150 Go = 14 $ / mois

Installation

Comme pour le projet GOAD, l'installation se fait en deux parties :

  • mise à disposition : elle est réalisée avec Terraform, elle configure votre VPC AWS, le réseau et les EC2 (machines virtuelles)
  • provisionnement : il est réalisé avec Ansible, il installera tout le nécessaire pour faire fonctionner le lab comme un réseau Active Directory

Provisionnement

Prérequis

Jusqu'à présent, le lab n'a été testé que sur une machine Linux, mais il devrait également fonctionner sur macOS. Ansible a quelques problèmes avec les hôtes Windows, donc je ne peux pas me prononcer.

Pour que l'installation fonctionne correctement, vous devez installer :

Ansible

Ansible avec Docker

Si vous souhaitez effectuer le provisionnement depuis un conteneur Docker, vous pouvez lancer la commande suivante pour préparer le conteneur :

root@kitploit:~
sudo docker build -t loadansible .

Ansible sur votre hôte

Si vous souhaitez utiliser Ansible depuis votre hôte, vous devriez lancer les commandes suivantes :

  1. Créez un environnement virtuel Python >= 3.8
root@kitploit:~
sudo apt install git
git clone [email protected]:0xBallpoint/LOAD.git
cd LOAD/ansible
sudo apt install python3.8-venv
python3.8 -m virtualenv .venv
source .venv/bin/activate
  1. Installez ansible et pywinrm dans le .venv
    • Installez Ansible en suivant le guide détaillé sur leur site Ansible.
    • Testé avec ansible-core (2.12)
    • pywinrm : assurez-vous d'avoir le paquet pywinrm installé
root@kitploit:~
python3 -m pip install --upgrade pip
python3 -m pip install ansible-core==2.12.6
python3 -m pip install pywinrm
  1. Installez toutes les dépendances ansible-galaxy
    • ansible windows
    • ansible community.windows
    • ansible community.general
root@kitploit:~
ansible-galaxy install -r requirements.yml

Terraform

Vous devez installer Terraform en suivant leur guide sur leur site hashicorp.com

Si vous souhaitez installer manuellement Terraform sur Linux :

root@kitploit:~
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common

# Install the HasiCorp GPG key
wget -O- https://apt.releases.hashicorp.com/gpg | \
    gpg --dearmor | \
    sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg

# Verify the key's fingerprint
gpg --no-default-keyring \
    --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg \
    --fingerprint
# It must match E8A0 32E0 94D8 EB4E A189 D270 DA41 8C88 A321 9F7B (from https://www.hashicorp.com/security)

# Add the official HashiCorp repository to your system
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
    https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
    sudo tee /etc/apt/sources.list.d/hashicorp.list

# Update, install, verify
sudo apt update
sudo apt install terraform
terraform -help

AWS CLI

Vous aurez besoin de l'AWS CLI pour configurer vos clés d'accès AWS. Vous devriez suivre le guide d'installation sur leur site docs.aws.amazon.com

Pour Linux :

root@kitploit:~
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

Démarrage / Configuration

Le domaine par défaut sera middle-earth.local, sur le sous-réseau 10.0.1.0/24, et chaque machine ne dispose que d'1CPU et de 1024MB de mémoire (t2.micro). Si vous souhaitez modifier certains de ces paramètres de performance, vous pouvez modifier le fichier : terraform/ami-instance.tf

Pour faire fonctionner le lab, voici les commandes que vous devez exécuter :

Création des VMs

root@kitploit:~
pwd
/opt/LOAD  # place yourself in the LOAD folder (where you cloned the project)
cd terraform # start with AWS configuration

Les étapes suivantes montrent comment configurer vos VMs sur AWS :

  1. Copiez le fichier var.tf.example vers var.tf et modifiez les valeurs :

    • REGION : changez selon votre région favorite
    • MANAGEMENT_IPS : ajoutez vos adresses IPv4 autorisées à accéder à votre lab
  2. Sur votre console AWS, vous devez créer un utilisateur Terraform et récupérer vos clés AWS :

    • Allez sur https://us-east-1.console.aws.amazon.com/iamv2/home#/users
    • Dans le champ « user name » : terraform
    • Sélectionnez le type d'identifiants AWS : Access key - Programmatic access
    • Ajoutez les permissions que vous souhaitez
    • Créez l'utilisateur
    • Copiez Access key ID et Secret access key
  3. Ajoutez les clés sur votre machine avec l'AWS CLI :

root@kitploit:~
aws configure --profile terraform
    AWS Access Key ID [None]: <access_key_id>
    AWS Secret Access Key [None]: <secret_access_key>
  1. Créez les clés SSH pour Terraform :
root@kitploit:~
cd LOAD
ssh-keygen -t rsa -N "" -b 2048 -C "TerraformKey" -f ./terraform/keys/TerraformKey.pem
  1. Exécutez Terraform :
root@kitploit:~
terraform init
terraform apply

Si vous souhaitez détruire votre lab :

root@kitploit:~
terraform destroy

Provisionnement des VMs

Chaque fois que vos instances EC2 démarrent, vous devez modifier leur IP publique dans le fichier ansible/hosts. Ajoutez la sortie de cette commande à la fin du fichier :

root@kitploit:~
aws ec2 describe-instances --profile terraform --region eu-central-1 --query "Reservations[*].Instances[*].{Name:Tags[?Key=='Name'].Value|[],PublicIP:PublicIpAddress}" --filters "Name=instance-state-name,Values=running" --output text |tac |awk 'NR%2 ==0 {print $0}; NR%2 != 0 {print "["tolower(substr($2,5))"]"};'

Pour configurer les VMs, utilisez la commande ansible-playbook. La durée habituelle d'exécution est de 1h30.

root@kitploit:~
ansible-playbook main.yml # this will configure the vms in order to play ansible when the vms are ready

Pour exécuter le provisionnement depuis le conteneur Docker, lancez (vous devez être dans le même dossier que le Dockerfile. Pas encore testé) :

root@kitploit:~
sudo docker run -ti --rm --network host -h loadansible -v $(pwd):/load -w /load/ansible loadansible ansible-playbook main.yml

Il arrive parfois qu'une erreur se produise pendant l'installation. La plupart du temps, il suffit de relancer le playbook pour que cela fonctionne. Pour exécuter les playbooks un par un :

root@kitploit:~
# The main.yml playbook is build in multiples parts. each parts can be re-run independently but the play order must be keep in cas you want to play one by one :

ansible-playbook prepare.yml         # updates, passwords, dns settings...
ansible-playbook ad-servers.yml      # create servers configuration
ansible-playbook ad-trusts.yml       # create the trust relationships
ansible-playbook ad-data.yml         # import the ad datas : users/groups...
ansible-playbook ad-groups.yml       # set the rights and the group domains relations
ansible-playbook servers.yml         # create IIS and MSSQL
ansible-playbook adcs.yml            # add adcs and adcs templates
ansible-playbook ad-acl.yml          # set ACL
ansible-playbook linux.yml           # configure linux entrypoint with GLPI

ansible-playbook security.yml        # enable or disable windows defender here
ansible-playbook vulnerabilities.yml # specifics vulns linked to the scenario are here

# You can also install wireguard VPN on the linux host, for that check the VPN paragraph

Si vous souhaitez exécuter uniquement une partie spécifique d'un playbook, vous pouvez utiliser des tags (mettez toujours data comme tag) :

root@kitploit:~
ansible-playbook servers.yml
ansible-playbook servers.yml --tags data,iis
ansible-playbook linux.yml --tags data,glpi

AWS CLI

Quelques commandes pour vous aider à gérer votre lab AWS (c'est moche, mais ça fonctionne) :

root@kitploit:~
# aws cli profile : terraform
# region : eu-central-1 

# Disable instance metadata
for i in $(aws ec2 --profile terraform --region eu-central-1 describe-instances --filters "Name=tag:Name,Values=lab-*" --query 'Reservations[].Instances[].InstanceId' |cut -d '"' -f2); do aws ec2 --profile terraform --region eu-central-1 modify-instance-metadata-options --http-endpoint disabled --instance-id $i --output json --no-cli-pager;done

# Start instances
aws ec2 --profile terraform --region eu-central-1 start-instances --instance-ids `aws ec2 --profile terraform --region eu-central-1 describe-instances --filters "Name=tag:Name,Values=lab-*" "Name=instance-state-name,Values=stopping,stopped" --query 'Reservations[].Instances[].InstanceId' --output text`

# Get running instance and output it to ansible format
aws ec2 describe-instances --profile terraform --region eu-central-1 --query "Reservations[*].Instances[*].{Name:Tags[?Key=='Name'].Value|[],PublicIP:PublicIpAddress}" --filters "Name=instance-state-name,Values=running" --output text |tac |awk 'NR%2 ==0 {print $0}; NR%2 != 0 {print "["tolower(substr($2,5))"]"};'

Serveur VPN

En option, vous pouvez ajouter un serveur VPN sur l'hôte Linux et configurer autant de clients que vous le souhaitez. Commencez par générer les clés du serveur VPN et modifiez le nombre de clients :

root@kitploit:~
apt install wireguard

# generate wireguard keys
privkey=$(wg genkey) sh -c 'echo "
    server_privkey: $privkey
    server_pubkey: $(echo $privkey | wg pubkey)"'

# encrypt server_privkey with ansible-vault and 
ansible-vault encrypt_string --ask-vault-password --stdin-name server_privkey

# Add the result to group_vars/all.yml
# You can change the number of client configuration files it will create. By default it creates 6 clients.

Exécutez le playbook VPN avec cette commande (il changera les clés des clients à chaque exécution de la commande) :

root@kitploit:~
ansible-playbook --ask-vault-password vpn.yml

Si vous obtenez cette erreur Timeout (12s) waiting for privilege escalation prompt, relancez simplement la commande.

Vous trouverez vos fichiers de configuration client dans ansible/wireguard/lab_client[0-9].conf.

Pour vous connecter au VPN, vous devez copier les fichiers client avec la clé privée vers votre hôte local dans /etc/wireguard/.

Vous démarrez la connexion VPN pour le premier client avec :

root@kitploit:~
sudo wg-quick up lab_client1

Vous obtiendrez une IP en 10.0.20.0/24

Vulnérabilités

schema

LINUX

root@kitploit:~
SHIRE (srv02)
    - GLPI SQLi
    - GLPI-htmlawed-CVE-2022-35914

USERS
    - privesc user with vulnerable crontab
    - privesc root with password in bash_history and sudo nopasswd for /bin/systemctl

ERIADOR.MIDDLE-EARTH.LOCAL

root@kitploit:~
RIVENDELL (dc02)
    - anonymous RPC (enum users, pass pol, groups / rpcclient)
    - brute force users names

ELF
    - celebrian    Responder crack hash (bot 3min)
    - elrond:      Responder with NTLM relay domain admin (bot 5min)

HOBBIT
    - bilbo:       password in description
    - pippin:      ASREPROAST 
    - merry:       Constrained delegation with protocol transition / Kerberoasting
    - froddo:
    - sam:

MIDDLE-EARTH.LOCAL

root@kitploit:~
MINAS-TIRITH(dc01)
    - Open share RW, LNK exploit
    - khamul.easterling : Open backup share, with GPO with cpassword, password increment

MORIA (srv01)
    - MSSQL trusted link : donPapi to get sql_svc password
    - mitm6 SRV01 -> DC01

MEN
    - denethor:    DOMAIN ADMIN
    - theoden:     ACL self-self-membership-on-group DOMAIN ADMIN
    - faramir:     ACL genericwrite-on-user Denethor
    - boromir:     ACL genericall-on-user Denethor
                   ACL forcechangepassword on Faramir 
                   WriteDACL MEN 

FELLOWSHIP
    - legolas:     execute as user on MSSQL
                   KERBEROASTING 
    - gimli:       ACL genericall-on-computer MORIA
                   ACL writeproperty-self-membership DOMAIN ADMIN
    - aragorn:     execute as login on mssql / administrator
    - gandalf:     mssql admin
                   group cross domain
                   mssql trusted link
                   ACL writeproperty-self-membership Domain Admins #TODO change for someone who is not administrator, he has DCSYNC (administrator?)

ENTS
    - treebeard:   ACL writeproperty-on-group DOMAIN ADMIN
    - skinbark:    ACL genericall-on-group DOMAIN ADMIN
    - ginglas:     ACL write owner on group DOMAIN ADMIN

MORDOR.LOCAL

Ordinateurs

root@kitploit:~
BARAD-DUR (dc03)
    - Coerced DC + ntlmrelayx to ldaps
    - ADCS ESC1, ESC2, ESC3, ESC4, ESC8
    - NTLM downgrade attack

MINAS-MORGL (srv03)
    - IIS upload webshell
    - Privilege escalation Windows 2016 : SeImpersontePrivilege

DARKFORCE
    - sauron:     domain admin MORDOR
    - saruman:    mssql admin / GenericAll on gothmog (shadow credentials) / GenericAll on ECS4
    - balrog:

PRISONER
    - gollum:     mssql trusted link
                  password spray -> user=pwd
ORC
    - gothmog:    DOMAIN ADMIN
    - lurtz:
    - ugluk:
    - guritz:

NAZGUL
    - angmar:

À faire

  • connecter le serveur Linux à l'AD pour SSH
  • RemotePotato0 sur sam
  • Changer automatiquement les identifiants GLPI
  • LAPS
Télécharger l’outil