
Lord Of Active Directory - Active Directory vulnerabile automatica su AWS

Basato su AWS-Redteam-Lab e OCD GOAD
Il prezzo per eseguire il lab per 125 ore in un mese è di circa 14$. Con il Free Tier ottieni 750 ore di EC2 al mese, ci sono 6 macchine, quindi 125 ore. Ma ottieni solo 30 GB di storage. Quindi ti serve storage per le altre 5 VM: 30 GB * 5 = 150 GB = 14$ / mese
Proprio come il progetto GOAD, l'installazione è in due parti:
Finora il lab è stato testato solo su una macchina linux, ma dovrebbe funzionare anche su macOS. Ansible ha alcuni problemi con host Windows, quindi non ne so nulla.
Per far funzionare correttamente il setup devi installare:
Se vuoi eseguire il provisioning da un container docker, puoi lanciare il seguente comando per preparare il container
sudo docker build -t loadansible .
Se vuoi eseguire ansible dal tuo host, dovresti lanciare i seguenti comandi:
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
ansible e pywinrm nel .venv
python3 -m pip install --upgrade pip
python3 -m pip install ansible-core==2.12.6
python3 -m pip install pywinrm
ansible-galaxy install -r requirements.yml
Devi installare Terraform seguendo la loro guida sul sito hashicorp.com
Se vuoi installare Terraform manualmente su Linux:
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
Avrai bisogno della AWS CLI per configurare le tue chiavi di accesso su AWS. Dovresti seguire la guida all'installazione sul loro sito docs.aws.amazon.com
Per Linux:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
Il dominio predefinito sarà middle-earth.local, sulla subnet 10.0.1.0/24 e a ogni macchina sono state allocate solo 1 CPU e 1024 MB di memoria (t2.micro). Se vuoi modificare alcune di queste impostazioni di prestazioni, puoi modificare il file: terraform/ami-instance.tf
Per avere il lab attivo e funzionante, questi sono i comandi che devi eseguire:
pwd
/opt/LOAD # place yourself in the LOAD folder (where you cloned the project)
cd terraform # start with AWS configuration
I passaggi successivi mostrano come configurare le tue VM su AWS:
Copia var.tf.example in var.tf e modifica i valori:
Nella tua console AWS, dovresti creare un utente terraform e ottenere le tue chiavi AWS:
terraformAccess key - Programmatic accessAccess key ID e Secret access keyAggiungi le chiavi sulla tua macchina con la AWS CLI:
aws configure --profile terraform
AWS Access Key ID [None]: <access_key_id>
AWS Secret Access Key [None]: <secret_access_key>
cd LOAD
ssh-keygen -t rsa -N "" -b 2048 -C "TerraformKey" -f ./terraform/keys/TerraformKey.pem
terraform init
terraform apply
Se vuoi distruggere il tuo lab:
terraform destroy
Ogni volta che le tue istanze EC2 si avviano, devi cambiare il loro IP pubblico nel file ansible/hosts. Aggiungi l'output di questo comando alla fine del file:
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))"]"};'
Per configurare le VM usa il comando ansible-playbook. Tempo di esecuzione abituale: 1h30
ansible-playbook main.yml # this will configure the vms in order to play ansible when the vms are ready
Per eseguire il provisioning dal container docker, esegui (dovresti essere nella stessa cartella del Dockerfile. Non ancora testato):
sudo docker run -ti --rm --network host -h loadansible -v $(pwd):/load -w /load/ansible loadansible ansible-playbook main.yml
A volte può verificarsi un errore durante l'installazione. Nella maggior parte dei casi, puoi semplicemente eseguire di nuovo il playbook e dovrebbe funzionare. Per eseguire i playbook uno alla volta:
# 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 vuoi eseguire solo una parte specifica di un playbook, puoi usare i tag (metti sempre data come tag):
ansible-playbook servers.yml
ansible-playbook servers.yml --tags data,iis
ansible-playbook linux.yml --tags data,glpi
Alcuni comandi per aiutarti a gestire il tuo lab AWS (è brutto ma funziona):
# aws cli profile : terraform
# region : eu-central-1