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

На основе AWS-Redteam-Lab и OCD GOAD
Цена за работу лаборатории в течение 125 часов в месяц составляет примерно 14$. С Free Tier вы получаете 750 часов EC2 в месяц, у вас 6 машин, значит 125 часов. Но вы получаете только 30 ГБ хранилища. Поэтому вам нужно хранилище для остальных 5 ВМ: 30 ГБ * 5 = 150 ГБ = 14$ в месяц
Как и в проекте GOAD, установка состоит из двух частей:
Пока лаборатория тестировалась только на Linux-машине, но должна работать и на macOS. У Ansible есть некоторые проблемы с Windows-хостами, так что насчёт этого не знаю.
Для корректной работы настройки вам нужно установить:
Если вы хотите выполнить провижининг из docker-контейнера, вы можете запустить следующую команду для подготовки контейнера
sudo docker build -t loadansible .
Если вы хотите запускать ansible с вашего хоста, выполните следующие команды:
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 и pywinrm в .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
Вам нужно установить Terraform, следуя их руководству на сайте hashicorp.com
Если вы хотите вручную установить Terraform на 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
Вам понадобится AWS CLI для настройки ваших ключей доступа к AWS. Следуйте руководству по установке на их сайте docs.aws.amazon.com
Для Linux:
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
Чтобы поднять лабораторию, выполните следующие команды:
pwd
/opt/LOAD # place yourself in the LOAD folder (where you cloned the project)
cd terraform # start with AWS configuration
Следующие шаги показывают, как настроить ваши ВМ в AWS:
Скопируйте var.tf.example в var.tf и измените значения:
В вашей AWS-консоли создайте пользователя terraform и получите ваши AWS-ключи:
terraformAccess key - Programmatic accessAccess key ID и Secret access keyДобавьте ключи на вашу машину с помощью 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
Если вы хотите уничтожить вашу лабораторию:
terraform destroy
Каждый раз, когда ваши EC2-инстансы запускаются, вам нужно изменять их публичные IP-адреса в файле ansible/hosts. Добавьте вывод этой команды в конец файла:
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 минут
ansible-playbook main.yml # this will configure the vms in order to play ansible when the vms are ready
Чтобы запустить провижининг из docker-контейнера, выполните (вы должны находиться в той же папке, что и Dockerfile. Пока не тестировалось):
sudo docker run -ti --rm --network host -h loadansible -v $(pwd):/load -w /load/ansible loadansible ansible-playbook main.yml
Иногда во время установки может возникнуть ошибка. В большинстве случаев вы можете просто запустить плейбук снова, и всё должно заработать. Чтобы запускать плейбуки по одному:
# 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 в качестве тега):
ansible-playbook servers.yml
ansible-playbook servers.yml --tags data,iis
ansible-playbook linux.yml --tags data,glpi
Некоторые команды, которые помогут вам управлять вашей AWS-лабораторией (это некрасиво, но работает):
# aws cli profile : terraform
# region : eu-central-1