Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
LOAD — Lord Of Active Directory — автоматическая уязвимая Active Directory в AWS | Kitploit
Инструменты/GitHubGitHub/0xballpoint/load
Безопасность облачной инфраструктурыВиртуализация для безопасностиТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingЛаборатории и Практика
GitHub0xballpoint/load

LOAD

Lord Of Active Directory — автоматическая уязвимая Active Directory в AWS

Репозиторий
156132 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

load.jpg

Введение

На основе AWS-Redteam-Lab и OCD GOAD

Цена за работу лаборатории в течение 125 часов в месяц составляет примерно 14$. С Free Tier вы получаете 750 часов EC2 в месяц, у вас 6 машин, значит 125 часов. Но вы получаете только 30 ГБ хранилища. Поэтому вам нужно хранилище для остальных 5 ВМ: 30 ГБ * 5 = 150 ГБ = 14$ в месяц

Установка

Как и в проекте GOAD, установка состоит из двух частей:

  • предоставление: выполняется с помощью terraform, настраивает вашу AWS VPC, сеть и EC2 (виртуальные машины)
  • провижининг: выполняется с помощью ansible, установит всё необходимое для работы лаборатории как сети Active Directory

Провижининг

Требования

Пока лаборатория тестировалась только на Linux-машине, но должна работать и на macOS. У Ansible есть некоторые проблемы с Windows-хостами, так что насчёт этого не знаю.

Для корректной работы настройки вам нужно установить:

Ansible

Ansible с docker

Если вы хотите выполнить провижининг из docker-контейнера, вы можете запустить следующую команду для подготовки контейнера

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

Ansible на вашем хосте

Если вы хотите запускать ansible с вашего хоста, выполните следующие команды:

  1. Создайте виртуальное окружение 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. Установите ansible и pywinrm в .venv
    • ansible, следуя подробному руководству на их сайте ansible.
    • Проверено с ansible-core (2.12)
    • pywinrm: убедитесь, что у вас установлен пакет pywinrm
root@kitploit:~
python3 -m pip install --upgrade pip
python3 -m pip install ansible-core==2.12.6
python3 -m pip install pywinrm
  1. Установите все требования ansible-galaxy
    • ansible windows
    • ansible community.windows
    • ansible community.general
root@kitploit:~
ansible-galaxy install -r requirements.yml

Terraform

Вам нужно установить Terraform, следуя их руководству на сайте hashicorp.com

Если вы хотите вручную установить Terraform на 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

Вам понадобится AWS CLI для настройки ваших ключей доступа к AWS. Следуйте руководству по установке на их сайте docs.aws.amazon.com

Для Linux:

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

Запуск / Настройка

Доменом по умолчанию будет middle-earth.local, в подсети 10.0.1.0/24, и каждой машине выделено только 1 CPU и 1024 МБ памяти (t2.micro). Если вы хотите изменить некоторые из этих параметров производительности, вы можете изменить файл: terraform/ami-instance.tf

Чтобы поднять лабораторию, выполните следующие команды:

Создание ВМ

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

Следующие шаги показывают, как настроить ваши ВМ в AWS:

  1. Скопируйте var.tf.example в var.tf и измените значения:

    • REGION: измените в соответствии с вашим предпочитаемым регионом
    • MANAGEMENT_IPS: добавьте ваши IPv4-адреса, которые могут получить доступ к вашей лаборатории
  2. В вашей AWS-консоли создайте пользователя terraform и получите ваши AWS-ключи:

    • Перейдите на https://us-east-1.console.aws.amazon.com/iamv2/home#/users
    • Имя пользователя: terraform
    • Выберите тип учётных данных AWS: Access key - Programmatic access
    • Добавьте нужные разрешения
    • Создайте пользователя
    • Скопируйте Access key ID и Secret access key
  3. Добавьте ключи на вашу машину с помощью 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. Создайте SSH-ключи для terraform:
root@kitploit:~
cd LOAD
ssh-keygen -t rsa -N "" -b 2048 -C "TerraformKey" -f ./terraform/keys/TerraformKey.pem
  1. Запустите Terraform
root@kitploit:~
terraform init
terraform apply

Если вы хотите уничтожить вашу лабораторию:

root@kitploit:~
terraform destroy

Провижининг ВМ

Каждый раз, когда ваши EC2-инстансы запускаются, вам нужно изменять их публичные IP-адреса в файле ansible/hosts. Добавьте вывод этой команды в конец файла:

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

Для настройки ВМ используйте команду ansible-playbook. Обычное время выполнения: 1 час 30 минут

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

Чтобы запустить провижининг из docker-контейнера, выполните (вы должны находиться в той же папке, что и Dockerfile. Пока не тестировалось):

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

Иногда во время установки может возникнуть ошибка. В большинстве случаев вы можете просто запустить плейбук снова, и всё должно заработать. Чтобы запускать плейбуки по одному:

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

Если вы хотите запустить только определённую часть плейбука, вы можете использовать теги (всегда добавляйте data в качестве тега):

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

AWS CLI

Некоторые команды, которые помогут вам управлять вашей AWS-лабораторией (это некрасиво, но работает):

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-сервер

При желании вы можете добавить VPN-сервер на Linux-хост и настроить столько клиентов, сколько захотите. Начните с генерации ключей для VPN-сервера и измените количество клиентов:

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.

Запустите VPN-плейбук этой командой (при каждом запуске команды ключи клиентов будут меняться):

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

Если вы получите эту ошибку Timeout (12s) waiting for privilege escalation prompt, просто запустите команду снова.

Вы найдёте файл конфигурации клиента в ansible/wireguard/lab_client[0-9].conf.

Для подключения к VPN вам нужно скопировать файлы клиента с приватным ключом на ваш локальный хост в /etc/wireguard/.

Вы запускаете VPN-подключение для первого клиента с помощью:

root@kitploit:~
sudo wg-quick up lab_client1

Вы получите IP-адрес в сети 10.0.20.0/24

Уязвимости

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

Компьютеры

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:

Задачи

  • подключить linux-сервер к AD для SSH
  • RemotePotato0 на sam
  • Автоматически менять учётные данные GLPI
  • LAPS
Скачать инструмент