
🔧 Разверните настраиваемые лаборатории Active Directory в Azure - автоматически.
Этот проект позволяет легко разворачивать лаборатории Active Directory в Azure с компьютерами, входящими в домен, Windows Event Forwarding, Kibana и Sysmon с помощью Terraform/Ansible.
Он предоставляет высокоуровневый конфигурационный файл для вашего домена, позволяющий настраивать пользователей, группы и компьютеры.
dns_name: hunter.lab
dc_name: DC-1
initial_domain_admin:
username: hunter
password: MyAdDomain!
organizational_units: {}
users:
- username: christophe
- username: dany
groups:
- dn: CN=Hunters,CN=Users
members: [christophe]
default_local_admin:
username: localadmin
password: Localadmin!
workstations:
- name: XTOF-WKS
local_admins: [christophe]
- name: DANY-WKS
local_admins: [dany]
enable_windows_firewall: yes
Вот неполное и предвзятое сравнение с DetectionLab:
| Adaz | DetectionLab | |
|---|---|---|
| Поддержка публичного облака | Azure | AWS, Azure (бета) |
| Ожидаемое время развёртывания лаборатории | 15-20 минут | 25 минут |
| Управление журналами и запросы к ним | Elasticsearch+Kibana | Splunk Enterprise |
| WEF | ✔️ | ✔️ |
| Политики аудита | ✔️ | ✔️ |
| Sysmon | ✔️ | ✔️ |
| YAML-файл конфигурации домена | ✔️ | 🚫 |
| Поддержка нескольких Windows 10 компьютеров | ✔️ | 🚫 |
| Поддержка VirtualBox/VMWare | 🚫 | ✔️ |
| osquery / fleet | 🚫(голосуйте!) | ✔️ |
| Ведение журнала транскриптов Powershell | 🚫 (голосуйте!) | ✔️ |
| Журналы IDS | 🚫 (голосуйте!) | ✔️ |
Detection engineering: Доступ к чистой лаборатории со стандартной конфигурацией — отличный способ понять, какие следы оставляют распространённые атаки и техники горизонтального перемещения.
Изучение Active Directory: У меня часто возникает потребность тестировать GPO или различные функции AD (AppLocker, LAPS...). Наличие одноразовой лаборатории — обязательное условие для этого.


Подписка Azure. Вы можете создать её бесплатно и получить $200 кредитов на первые 30 дней. Обратите внимание, что у такого типа подписки есть лимит в 4 vCPU на регион, что всё ещё позволяет запустить 1 контроллер домена и 2 рабочих станции (при стандартной конфигурации лаборатории).
SSH-ключ в ~/.ssh/id_rsa.pub. Ваш закрытый ключ должен быть либо добавлен в ssh-agent (обычно, выполнив ssh-add ~/.ssh/id_rsa один раз и добавив eval "$(ssh-agent -s)" в ваш .bashrc), либо быть не зашифрованным парольной фразой.
Terraform >= 0.12
Вы должны быть авторизованы в своей учётной записи Azure, выполнив az login. Вы можете использовать az account list, чтобы убедиться, что у вас есть доступ к вашей подписке Azure
git clone https://github.com/christophetd/Adaz.git
# Примечание: виртуальное окружение должно находиться в ansible/venv
python3 -m venv ansible/venv
source ansible/venv/bin/activate
pip install -r ansible/requirements.txt
deactivate
cd terraform
terraform init
При желании отредактируйте domain.yml в соответствии с вашими потребностями (справочник здесь), затем выполните:
terraform apply
Создание ресурсов и provisioning занимает 15-20 минут. После завершения вы получите вывод, похожий на:
dc_public_ip = 13.89.191.140
kibana_url = http://52.176.3.250:5601
what_next =
####################
### WHAT NEXT? ###
####################
Check out your logs in Kibana:
http://52.176.3.250:5601
RDP to your domain controller:
xfreerdp /v:13.89.191.140 /u:hunter.lab\\hunter '/p:Hunt3r123.' +clipboard /cert-ignore
RDP to a workstation:
xfreerdp /v:52.176.5.229 /u:localadmin '/p:Localadmin!' +clipboard /cert-ignore
workstations_public_ips = {
"DANY-WKS" = "52.165.182.15"
"XTOF-WKS" = "52.176.5.229"
}
Не беспокойтесь, если во время provisioning вы увидите несколько сообщений вида
FAILED - RETRYING: List Kibana index templates (xx retries left)
По умолчанию ресурсы разворачиваются в регионе West Europe в группе ресурсов ad-hunting-lab. Вы можете управлять регионом с помощью переменной Terraform:
terraform apply -var 'region=East US 2'
Доклады / публикации, ссылающиеся на Adaz:
Я буду сильно полагаться на количество ваших голосов «палец вверх» на feature-proposal issues для следующих функций!
Не стесняйтесь открывать issue или написать в твиттере @christophetd.