Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
LOAD — Lord Of Active Directory - Active Directory vulnerável automático na AWS | Kitploit
Ferramentas/GitHubGitHub/0xballpoint/load
Segurança de Infraestrutura em NuvemVirtualização para SegurançaTestes de PenetraçãoAprendizado e EducaçãoRed TeamingLabs e Prática
GitHub0xballpoint/load

LOAD

Lord Of Active Directory - Active Directory vulnerável automático na AWS

Ver Repositório
15613há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

load.jpg

Introdução

Baseado em AWS-Redteam-Lab e OCD GOAD

O custo para executar o laboratório por 125 horas durante um mês é de aproximadamente 14$. Com o Free Tier você obtém 750h de EC2 por mês; como há 6 máquinas, são 125h. Mas você só obtém 30Gb de armazenamento. Então você precisa de armazenamento para as outras 5 VMs : 30Gb * 5 = 150Gb = 14$ / mês

Instalação

Assim como o projeto GOAD, a instalação é dividida em duas partes :

  • providing : é feito com terraform, ele configura sua VPC, rede e EC2 (máquinas virtuais) na AWS
  • provisioning : é feito com ansible, ele instalará todo o necessário para deixar o laboratório funcionando como uma rede Active Directory

Provisionamento

Requisitos

Até agora, o laboratório só foi testado em uma máquina Linux, mas deve funcionar também no macOS. O Ansible tem alguns problemas com hosts Windows, então não sei quanto a isso.

Para que a configuração funcione corretamente, você precisa instalar:

Ansible

Ansible com docker

Se você quiser fazer o provisionamento a partir de um container docker, pode executar o seguinte comando para preparar o container

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

Ansible no seu host

Se você quiser executar o ansible a partir do seu host, deve executar os seguintes comandos :

  1. Crie um virtualenv com 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. Instale ansible e pywinrm no .venv
    • ansible seguindo o guia completo no site deles ansible.
    • Testado com ansible-core (2.12)
    • pywinrm: certifique-se de que o pacote pywinrm está instalado
root@kitploit:~
python3 -m pip install --upgrade pip
python3 -m pip install ansible-core==2.12.6
python3 -m pip install pywinrm
  1. Instale todos os requisitos do ansible-galaxy
    • ansible windows
    • ansible community.windows
    • ansible community.general
root@kitploit:~
ansible-galaxy install -r requirements.yml

Terraform

Você precisa instalar o Terraform seguindo o guia no site deles hashicorp.com

Se quiser instalar o Terraform manualmente no 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

Você precisará do AWS CLI para configurar suas chaves de acesso à AWS. Você deve seguir o guia de instalação no site deles docs.aws.amazon.com

Para Linux :

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

Início / Configuração

O domínio padrão será middle-earth.local, na sub-rede 10.0.1.0/24, e cada máquina foi alocada com apenas 1 CPU e 1024MB de memória (t2.micro). Se quiser alterar algumas dessas configurações de desempenho, você pode modificar o arquivo : terraform/ami-instance.tf

Para deixar o laboratório funcionando, estes são os comandos que você deve executar:

Criação das VMs

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

As próximas etapas mostram como configurar suas VMs na AWS:

  1. Copie o var.tf.example para var.tf e altere os valores :

    • REGION : altere de acordo com a sua região favorita
    • MANAGEMENT_IPS : adicione seus endereços IPv4 que podem acessar seu laboratório
  2. No console da AWS, você deve criar um usuário terraform e obter suas chaves da AWS:

    • Vá para https://us-east-1.console.aws.amazon.com/iamv2/home#/users
    • No campo user name : terraform
    • Selecione o tipo de credencial AWS : Access key - Programmatic access
    • Adicione as permissões que desejar
    • Crie o usuário
    • Copie Access key ID e Secret access key
  3. Adicione as chaves na sua máquina com o 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. Crie chaves SSH para o terraform:
root@kitploit:~
cd LOAD
ssh-keygen -t rsa -N "" -b 2048 -C "TerraformKey" -f ./terraform/keys/TerraformKey.pem
  1. Execute o Terraform
root@kitploit:~
terraform init
terraform apply

Se quiser destruir seu laboratório :

root@kitploit:~
terraform destroy

Provisionamento das VMs

Sempre que suas instâncias EC2 iniciarem, você precisa alterar o IP público delas no arquivo ansible/hosts. Adicione a saída deste comando no final do arquivo :

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

Para configurar as VMs, use o comando ansible-playbook. Tempo normal de execução : 1h30

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

Para executar o provisionamento a partir do container docker, execute (você deve estar na mesma pasta do Dockerfile. Ainda não testado):

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

Às vezes, um erro pode ocorrer durante a instalação. Na maioria das vezes, você pode simplesmente executar o playbook novamente e deve funcionar. Para executar os playbooks um por um :

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

Se quiser executar apenas uma parte específica de um playbook, você pode usar tags (sempre coloque data como tag):

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

AWS CLI

Alguns comandos para ajudar você a gerenciar seu laboratório AWS (é feio, mas funciona):

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

Servidor VPN

Opcionalmente, você pode adicionar um servidor VPN no host Linux e configurar quantos clientes quiser. Comece gerando as chaves para o servidor VPN e altere o número de clientes:

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.

Execute o playbook VPN com este comando (ele alterará as chaves dos clientes toda vez que você executar o comando):

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

Se você obtiver este erro Timeout (12s) waiting for privilege escalation prompt, basta executar o comando novamente.

Você encontrará o arquivo de configuração do seu cliente em ansible/wireguard/lab_client[0-9].conf.

Para se conectar à VPN, você precisa copiar os arquivos de cliente com a chave privada para o seu host local em /etc/wireguard/.

Você inicia a conexão VPN para o primeiro cliente com :

root@kitploit:~
sudo wg-quick up lab_client1

Você receberá um IP em 10.0.20.0/24

Vulnerabilidades

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

Computadores

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:

A fazer

  • conectar o servidor Linux ao AD para SSH
  • RemotePotato0 no sam
  • Alterar as credenciais do GLPI automaticamente
  • LAPS
Baixar ferramenta