Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
LOAD — Lord Of Active Directory - automatisch verwundbares Active Directory auf AWS | Kitploit
Tools/GitHubGitHub/0xballpoint/load
Cloud-Infrastruktur-SicherheitSicherheitsvirtualisierungPenetrationstestsLernen & BildungRed TeamingLabs & Praxis
GitHub0xballpoint/load

LOAD

Lord Of Active Directory - automatisch verwundbares Active Directory auf AWS

Repository anzeigen
15613vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

load.jpg

Einführung

Basiert auf AWS-Redteam-Lab und OCD GOAD

Die Kosten für den Betrieb des Labs für 125 Stunden in einem Monat betragen ungefähr 14 $. Mit dem Free Tier erhältst du 750 Stunden EC2 pro Monat; bei 6 Maschinen sind das 125 Stunden. Du bekommst jedoch nur 30 GB Speicher. Du brauchst also Speicher für die anderen 5 VMs: 30 GB * 5 = 150 GB = 14 $ / Monat

Installation

Wie beim GOAD-Projekt besteht die Installation aus zwei Teilen:

  • providing: wird mit Terraform umgesetzt; es konfiguriert deine AWS-VPC, das Netzwerk und EC2 (virtuelle Maschinen)
  • provisioning: wird mit Ansible umgesetzt; es installiert alles, was das Lab wie ein Active-Directory-Netzwerk laufen lässt

Provisionierung

Voraussetzungen

Bisher wurde das Lab nur auf einer Linux-Maschine getestet, es sollte aber auch unter macOS funktionieren. Ansible hat einige Probleme mit Windows-Hosts, daher weiß ich es nicht.

Damit das Setup ordnungsgemäß funktioniert, musst du Folgendes installieren:

Ansible

Ansible mit Docker

Wenn du die Provisionierung aus einem Docker-Container heraus durchführen möchtest, kannst du den folgenden Befehl ausführen, um den Container vorzubereiten:

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

Ansible auf deinem Host

Wenn du Ansible von deinem Host aus ausführen möchtest, solltest du die folgenden Befehle ausführen:

  1. Erstelle eine virtuelle Python-Umgebung >= 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. Installiere ansible und pywinrm in der .venv
    • ansible: folge der ausführlichen Anleitung auf deren Website ansible.
    • Getestet mit ansible-core (2.12)
    • pywinrm: Stelle sicher, dass das Paket pywinrm installiert ist
root@kitploit:~
python3 -m pip install --upgrade pip
python3 -m pip install ansible-core==2.12.6
python3 -m pip install pywinrm
  1. Installiere alle ansible-galaxy-Anforderungen
    • ansible windows
    • ansible community.windows
    • ansible community.general
root@kitploit:~
ansible-galaxy install -r requirements.yml

Terraform

Du musst Terraform gemäß der Anleitung auf deren Website hashicorp.com installieren.

Wenn du Terraform unter Linux manuell installieren möchtest:

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

Du benötigst die AWS CLI, um deine Zugriffsschlüssel für AWS zu konfigurieren. Folge der Installationsanleitung auf deren Website docs.aws.amazon.com

Für Linux:

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

Start / Einrichtung

Die Standarddomäne ist middle-earth.local, im Subnetz 10.0.1.0/24, und jede Maschine hat nur 1 CPU und 1024 MB Arbeitsspeicher (t2.micro) zugewiesen bekommen. Wenn du einige dieser Leistungseinstellungen ändern möchtest, kannst du die Datei terraform/ami-instance.tf bearbeiten.

Um das Lab zum Laufen zu bringen, solltest du die folgenden Befehle ausführen:

Erstellung der VMs

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

Die nächsten Schritte zeigen, wie du deine VMs auf AWS konfigurierst:

  1. Kopiere var.tf.example nach var.tf und ändere die Werte:

    • REGION : ändere sie entsprechend deiner bevorzugten Region
    • MANAGEMENT_IPS : füge deine IPv4-Adressen hinzu, die auf dein Lab zugreifen können
  2. In deiner AWS-Konsole solltest du einen Terraform-Benutzer erstellen und deine AWS-Schlüssel erhalten:

    • Gehe zu https://us-east-1.console.aws.amazon.com/iamv2/home#/users
    • Benutzername : terraform
    • Wähle den AWS-Anmeldedatentyp : Access key - Programmatic access
    • Füge die gewünschten Berechtigungen hinzu
    • Erstelle den Benutzer
    • Kopiere Access key ID und Secret access key
  3. Füge die Schlüssel auf deinem Rechner mit der AWS CLI hinzu:

root@kitploit:~
aws configure --profile terraform
    AWS Access Key ID [None]: <access_key_id>
    AWS Secret Access Key [None]: <secret_access_key>
  1. Erstelle SSH-Schlüssel für Terraform:
root@kitploit:~
cd LOAD
ssh-keygen -t rsa -N "" -b 2048 -C "TerraformKey" -f ./terraform/keys/TerraformKey.pem
  1. Führe Terraform aus
root@kitploit:~
terraform init
terraform apply

Wenn du dein Lab zerstören möchtest:

root@kitploit:~
terraform destroy

Provisionierung der VMs

Jedes Mal, wenn deine EC2-Instanzen starten, musst du ihre öffentliche IP in der Datei ansible/hosts ändern. Füge die Ausgabe dieses Befehls am Ende der Datei hinzu:

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))"]"};'

Um die VMs zu konfigurieren, verwende den Befehl ansible-playbook. Übliche Laufzeit: 1h30

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

Um die Provisionierung aus dem Docker-Container auszuführen (du solltest dich im selben Ordner wie die Dockerfile befinden; noch nicht getestet):

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

Während der Installation kann manchmal ein Fehler auftreten. In den meisten Fällen kannst du das Playbook einfach erneut ausführen, dann sollte es funktionieren. Um Playbooks einzeln auszuführen:

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

Wenn du nur einen bestimmten Teil eines Playbooks ausführen möchtest, kannst du Tags verwenden (setze immer data als Tag):

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

AWS CLI

Einige Befehle, die dir bei der Verwaltung deines AWS-Labs helfen (es ist hässlich, funktioniert aber):

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))"]"};'

VPN-Server

Optional kannst du einen VPN-Server auf dem Linux-Host hinzufügen und so viele Clients konfigurieren, wie du möchtest. Beginne damit, Schlüssel für den VPN-Server zu erzeugen, und ändere die Anzahl der 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.

Führe das VPN-Playbook mit diesem Befehl aus (er ändert die Clientschlüssel bei jedem Ausführen des Befehls):

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

Wenn dieser Fehler Timeout (12s) waiting for privilege escalation prompt auftritt, führe den Befehl einfach erneut aus.

Deine Client-Konfigurationsdatei findest du in ansible/wireguard/lab_client[0-9].conf.

Um eine Verbindung zum VPN herzustellen, musst du die Client-Dateien mit dem privaten Schlüssel auf deinen lokalen Host in /etc/wireguard/ kopieren.

Du startest die VPN-Verbindung für den ersten Client mit:

root@kitploit:~
sudo wg-quick up lab_client1

Du erhältst eine IP im Bereich 10.0.20.0/24

Schwachstellen

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

Computer

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:

ToDo

  • Linux-Server für SSH an AD anbinden
  • RemotePotato0 auf sam
  • GLPI-Zugangsdaten automatisch ändern
  • LAPS
Tool herunterladen