
Лаборатория обнаружения для Blue Team, созданная с помощью Terraform и Ansible в Azure.
Этот проект содержит набор скриптов Terraform и Ansible для создания оркестрированной лаборатории BlueTeam. Цель проекта — предоставить красным и синим командам возможность развернуть ad-hoc лабораторию обнаружения для тестирования различных атак и криминалистических артефактов в новейшей среде Windows, а затем получить представление о сгенерированных данных, похожее на 'SOC'.
ПРИМЕЧАНИЕ: Эта лаборатория намеренно спроектирована небезопасной. Пожалуйста, не подключайте эту систему к любой сети, о которой вы заботитесь.

Для использования этой настройки на вашей системе должны быть установлены некоторые компоненты.
# Шаг 1 — Установите Azure CLI. Подробнее на https://docs.microsoft.com/ru-ru/cli/azure/install-azure-cli-linux?pivots=apt
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Шаг 2 — Установите Terraform. Подробнее на https://learn.hashicorp.com/tutorials/terraform/install-cli
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
# Шаг 3 — Установите Ansible. Подробнее на https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt update
sudo apt install ansible
# Шаг 4 — Наконец, установите python и различные пакеты, необходимые для удаленных подключений и других действий
sudo apt install python3 python3-pip
pip3 install pywinrm requests msrest msrestazure azure-cli
pip3 install -r https://raw.githubusercontent.com/ansible-collections/azure/refs/heads/dev/requirements.txt
После установки всех предварительных требований выполните следующие шаги:
# Войдите в Azure из командной строки, чтобы убедиться, что токен доступа действителен
az login
# Клонируйте репозиторий и перейдите в папку BlueTeam.Lab
git clone https://github.com/op7ic/BlueTeam.Lab.git && cd BlueTeam.Lab
# Инициализируйте Terraform и начните планирование
terraform init && terraform plan
# Создайте свою лабораторию с помощью следующей команды.
terraform apply -auto-approve
# Проверьте структуру вашего окружения с помощью Ansible
cd ansible && ANSIBLE_CONFIG=./ansible.cfg ansible-inventory --graph -i inventory.azure_rm.yml -vvv && cd ../
# Чтобы просмотреть IP-адреса отдельных хостов и другие детали настройки, используйте следующую команду:
cd ansible && ANSIBLE_CONFIG=./ansible.cfg ansible-inventory -i inventory.azure_rm.yml -vvv --list && cd ../
# После завершения уничтожьте лабораторию с помощью следующей команды:
terraform destroy -auto-approve
# Если вы хотите замерить время выполнения, используйте следующую команду:
start_time=`date +%s` && terraform apply -auto-approve && end_time=`date +%s` && echo execution time was `expr $end_time - $start_time` s
# ПРИМЕЧАНИЕ: На полную настройку уйдет около двух часов, в зависимости от выбранного оборудования.
Переменные Terraform (variables.tf) задают типы операционных систем, используемых для этого развертывания. Простое изменение переменных времени выполнения позволяет указать другую ОС для работы всего Active Directory (AD). По умолчанию используется Windows 10 Enterprise для рабочих станций и Windows Server 2019 Datacenter для контроллера домена. Вот несколько примеров распространенных вариантов конфигурации, которые можно использовать для изменения всего окружения на разные версии ОС:
# Использовать Windows 10 Enterprise для рабочих станций и Server 2019 Datacenter для DC (вариант по умолчанию)
terraform apply -auto-approve
# Использовать Windows 11 Enterprise для рабочих станций и Server 2019 Datacenter для DC
terraform apply -auto-approve -var="workstation_os=Windows-11" -var="workstation_SKU=win11-21h2-ent" -var="workstations_vm_size=Standard_DC2s_v2"
# Использовать Windows 11 Enterprise для рабочих станций и Server 2012 Datacenter для DC
terraform apply -auto-approve -var="workstation_os=Windows-11" -var="workstation_SKU=win11-21h2-ent" -var="workstations_vm_size=Standard_DC2s_v2" -var="dc_os=WindowsServer" -var="dc_SKU=2012-Datacenter"
# Использовать Windows 11 Enterprise для рабочих станций и Server 2016 Datacenter для DC
terraform apply -auto-approve -var="workstation_os=Windows-11" -var="workstation_SKU=win11-21h2-ent" -var="workstations_vm_size=Standard_DC2s_v2" -var="dc_os=WindowsServer" -var="dc_SKU=2016-Datacenter"
# Использовать Windows 10 Pro N для рабочих станций и Server 2012 Datacenter для DC
terraform apply -auto-approve -var="workstation_os=Windows-10" -var="workstation_SKU=21h1-pron" -var="dc_os=WindowsServer" -var="dc_SKU=2012-Datacenter"
Команда az vm image list может быть использована для определения различных версий ОС для развертывания.
В следующем разделе описываются различные компоненты, из которых состоит эта лаборатория, а также подробности о том, как изменить файлы конфигурации для модификации настройки:
После создания лаборатории Terraform выведет фактическое расположение систем и связанные с ними учетные данные. Пример вывода приведен ниже.
Настройка сети:
Domain Controller = xx.xx.xx.xx
Workstation DETECTION1: xx.xx.xx.xx
Workstation DETECTION2: xx.xx.xx.xx
Wazuh Server IP = xx.xx.xx.xx
Wazuh Web Interface = https://xx.xx.xx.xx:443/
Velociraptor Web Inteface: = https://xx.xx.xx.xx:10000/
FleetDM Web Interface: = https://xx.xx.xx.xx:9999/
Учетные данные:
Domain Admin:
blueteam.lab\blueteam BlueTeamDetection0%%%
Local Admin on Workstations:
blueteam BlueTeamDetection0%%%
Wazuh Server SSH Login:
blueteam BlueTeamDetection0%%%
Wazuh Logins:
wazuh BlueTeamDetection0%%%
admin BlueTeamDetection0%%%
kibanaserver BlueTeamDetection0%%%
kibanaro BlueTeamDetection0%%%
logstash BlueTeamDetection0%%%
readall BlueTeamDetection0%%%
snapshotrestore BlueTeamDetection0%%%
wazuh_admin BlueTeamDetection0%%%
wazuh_user BlueTeamDetection0%%%
Velociraptor Web Inteface Login:
blueteam BlueTeamDetection0%%%
FleetDM Web Inteface Login:
[email protected] BlueTeamDetection0%%%
RDP to Domain Controller:
xfreerdp /v:xx.xx.xx.xx /u:blueteam.lab\\blueteam '/p:BlueTeamDetection0%%%' +clipboard /cert-ignore
RDP to Workstation DETECTION1: xx.xx.xx.xx
xfreerdp /v:xx.xx.xx.xx /u:blueteam '/p:BlueTeamDetection0%%%' +clipboard /cert-ignore
RDP to Workstation DETECTION2: xx.xx.xx.xx
xfreerdp /v:xx.xx.xx.xx /u:blueteam '/p:BlueTeamDetection0%%%' +clipboard /cert-ignore
В следующей таблице приведен набор правил брандмауэра, применяемых в среде BlueTeamLab в конфигурации по умолчанию. Измените файл main.tf, чтобы добавить новые правила брандмауэра по мере необходимости в разделе Firewall Rule Setup.
Внутри этой среды в конфигурации по умолчанию используются следующие статические IP-адреса и имена хостов в диапазоне 10.0.0.0/16:
Во время установки создаются следующие учетные данные по умолчанию. После завершения полного процесса развертывания будет отображена распечатка фактически настроенных учетных данных.
Чтобы изменить учетные данные по умолчанию, измените имена пользователей и пароли в файле domain_setup.yml.







Вклады, исправления и улучшения могут быть отправлены напрямую для этого проекта в виде проблемы GitHub или запроса на включение изменений.
| - ansible
| | - ansible.cfg
| | - domain-controller.yml
| | - domain-member.yml
| | - domain_setup.yml
| | - group_vars
| | | - all
| | | - wazuh
| | - inventory.azure_rm.yml
| | - roles
| | | - domain-controller
| | | | - tasks
| | | | | - main.yml
| | | - domain-member
| | | | - tasks
| | | | | - main.yml
| | | - fleetserver
| | | | - tasks
| | | | | - main.yml
| | | | - templates
| | | | | - config.yml.j2
| | | | | - ssl.crt
| | | | | - ssl.key
| | | | | - systemd-fleetm.service.j2
| | | - monitor
| | | | - tasks
| | | | | - main.yml
| | | - osqueryagent
| | | | - tasks
| | | | | - main.yml
| | | | - templates
| | | | | - osquery.conf
| | | | | - osquery.flags.j2
| | | | | - osquery.key.j2
| | | | | - ssl.crt
| | | | | - ssl.key
| | | | - vars
| | | | | - main.yml
| | | - sysmon
| | | | - handlers
| | | | | - main.yml
| | | | - tasks
| | | | | - main.yml
| | | | - vars
| | | | | - main.yml
| | | - velociraptorclient
| | | | - tasks
| | | | | - main.yaml
| | | | - templates
| | | | | - clientconfig.yml.j2
| | | | - vars
| | | | | - main.yml
| | | - velociraptorserver
| | | | - tasks
| | | | | - main.yaml
| | | | - templates
| | | | | - serverconfig.yml.j2
| | | | | - systemd-velociraptor.service.j2
| | | | - vars
| | | | | - main.yml
| | | - wazuhagent
| | | | - tasks
| | | | | - main.yml
| | | | - templates
| | | | | - ossec.conf.j2
| | | | - vars
| | | | | - main.yml
| | | - wazuhserver
| | | | - tasks
| | | | | - main.yaml
| | | | - templates
| | | | | - sysmon_rules.xml
| | | | | - unattended-installation.sh
| | | | | - wazuh-passwords-tool.sh.j2
| | | - winlogbeat
| | | | - tasks
| | | | | - main.yml
| | | | - templates
| | | | | - config.yml.j2
| | | | - vars
| | | | | - main.yml
| | - wazuh-server.yml
| - documentation
| | - osquery.md
| | - pic
| | | - map.png
| | | - wazuh-logs.PNG
| | | - wazuh-pdc.PNG
| | | - winlogbeat.PNG
| | - sysmon.md
| | - velociraptor.md
| | - wazuh.md
| | - winlogbeat.md
| | - winmember.md
| - main.tf
| - README.md
| - terraform.tfstate
| - terraform.tfstate.backup
| - variables.tf
Я получаю Disk wks-1-os-disk already exists in resource group BLUETEAM-LAB. Only CreateOption.Attach is supported. или что-то похожее на эту ошибку.
terraform destroy -auto-approve && terraform apply -auto-approve, чтобы уничтожить и воссоздать лабораторию. Эта ошибка, похоже, возникает, когда Azure не очищает все диски должным образом, поэтому остаются ресурсы с тем же именем.Я получаю Operation 'startTenantUpdate' is not allowed on VM 'domain-controller' since the VM is marked for deletion. You can only retry the Delete operation (or wait for an ongoing one to complete). или что-то похожее на эту ошибку.
terraform destroy -auto-approve && terraform apply -auto-approve, чтобы уничтожить и воссоздать лабораторию. Эта ошибка, похоже, возникает, когда Azure не очищает все ресурсы должным образом, поэтому остаются остатки, которые необходимо уничтожить перед созданием лаборатории из-за конфликтов имен и/или расположений.Я получаю Network security group windows-nsg cannot be deleted because old references for the following Nics или что-то похожее на эту ошибку.
terraform destroy -auto-approve && terraform apply -auto-approve, чтобы уничтожить и воссоздать лабораторию. Эта ошибка, похоже, возникает, когда Azure не очищает все ресурсы должным образом, поэтому остаются остатки, которые необходимо уничтожить перед созданием лаборатории из-за конфликтов имен и/или расположений.Значительная часть этого кода была заимствована и адаптирована из Adaz Кристофа Тафани-Дерепера. Огромное спасибо за создание основы, которая позволила мне спроектировать эту лабораторную среду.
| Имя правила | Группа безопасности сети | Исходный хост | Исходный порт | Целевой хост | Целевой порт |
|---|
| Allow-RDP | windows-nsg | Ваш публичный IP | * | PDC-1, DETECTION1, DETECTION2 | 3389 |
| Allow-WinRM | windows-nsg | Ваш публичный IP | * | PDC-1, DETECTION1, DETECTION2 | 5985 |
| Allow-WinRM-secure | windows-nsg | Ваш публичный IP | * | PDC-1, DETECTION1, DETECTION2 | 5986 |
| Allow-SMB | windows-nsg | Ваш публичный IP | * | PDC-1, DETECTION1, DETECTION2 | 445 |
| Allow-SSH | wazuh-nsg | Ваш публичный IP | * | Wazuh | 22 |
| Allow-Wazuh-Manager | wazuh-nsg | Ваш публичный IP | * | Wazuh | 1514-1516 |
| Allow-Wazuh-Elasticsearch | wazuh-nsg | Ваш публичный IP | * | Wazuh | 9200 |
| Allow-Wazuh-API | wazuh-nsg | Ваш публичный IP | * | Wazuh | 55000 |
| Allow-Elasticsearch-Cluster | wazuh-nsg | Ваш публичный IP | * | Wazuh | 9300-9400 |
| Allow-Wazuh-GUI | wazuh-nsg | Ваш публичный IP | * | Wazuh | 443 |
| Allow-Velociraptor-Client-Connections | wazuh-nsg | Ваш публичный IP | * | Wazuh | 8000 |
| Allow-Velociraptor-GUI | wazuh-nsg | Ваш публичный IP | * | Wazuh | 10000 |
| Allow-Fleet-GUI | wazuh-nsg | Ваш публичный IP | * | Wazuh | 9999 |
| Хост | Роль | Внутренний IP |
|---|
| PDC-1 | Основной контроллер домена | 10.0.10.10 |
| Wazuh | Сервер Wazuh, также размещает установку Velocidex Velociraptor и FleetDM | 10.0.10.100 |
| DETECTION1 | Рабочая станция Windows 10 1 | 10.0.11.11 |
| DETECTION2 | Рабочая станция Windows 10 2 | 10.0.11.12 |
| Хост | Логин | Пароль | Роль |
|---|
| PDC-1 | blueteam.lab\blueteam | BlueTeamDetection0%%% | Администратор домена для домена blueteam.lab |
| DETECTION1 | localadministrator | BlueTeamDetection0%%% | Локальный администратор рабочей станции DETECTION1 |
| DETECTION2 | localadministrator | BlueTeamDetection0%%% | Локальный администратор рабочей станции DETECTION2 |
| Wazuh | blueteam | BlueTeamDetection0%%% | Учетные данные SSH для сервера Wazuh |
| Wazuh | wazuh | BlueTeamDetection0%%% | Администратор Wazuh |
| Wazuh | admin | BlueTeamDetection0%%% | Администратор Wazuh |
| Wazuh | kibanaserver | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | kibanaro | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | logstash | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | readall | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | snapshotrestore | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | wazuh_admin | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | wazuh_user | BlueTeamDetection0%%% | Сервисная учетная запись Wazuh |
| Wazuh | blueteam | BlueTeamDetection0%%% | Логин веб-портала Velociraptor |
| Wazuh | [email protected] | BlueTeamDetection0%%% | Логин веб-портала FleetDM |
Почему Azure?
Как изменить сетевые сегменты, размер развертывания или другие переменные?
-var к terraform apply. Например, terraform apply --auto-approve -var="region=East US 2" изменит регион на отличный от заданного по умолчанию в файле variables.tf. Всю настройку, включая диапазоны сетей, операционные системы и размер виртуальной машины, можно изменить, используя цепочку параметров -var.Как найти SKU для конкретного развертывания?
az vm list-skus --location westeurope --all --output table, чтобы найти доступные для вашего развертывания SKU.Я получаю Max retries exceeded with url: /wsman, и затем соединение отклоняется при сборке системы.
terraform apply -auto-approve, чтобы восстановить поврежденный хост.