
Azure में Terraform और Ansible का उपयोग करके बनाया गया ब्लू टीम डिटेक्शन लैब।
यह प्रोजेक्ट Terraform और Ansible स्क्रिप्ट्स का एक सेट प्रदान करता है, जो एक व्यवस्थित ब्लूटीम लैब (BlueTeam Lab) बनाने के लिए है। इस प्रोजेक्ट का उद्देश्य रेड और ब्लू टीमों को नवीनतम Windows वातावरण पर विभिन्न हमलों और फोरेंसिक आर्टिफैक्ट्स का परीक्षण करने के लिए एक एड-हॉक डिटेक्शन लैब तैनात करने की क्षमता प्रदान करना है, और फिर उत्पन्न डेटा में एक 'SOC-जैसा' दृश्य प्राप्त करना है।
नोट: यह लैब जानबूझकर असुरक्षित बनाई गई है। कृपया इस सिस्टम को किसी भी ऐसे नेटवर्क से न जोड़ें जिसकी आपको परवाह है।

इस सेटअप का उपयोग करने के लिए आपके सिस्टम पर कई सुविधाएँ इंस्टॉल होनी चाहिए।
# Step 1 - Install Azure CLI. More details on https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Step 2 - Install Terraform. More details on 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
# Step 3 - Install Ansible. More details on 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
# Step 4 - Finally install python and various packages needed for remote connections and other activities
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
एक बार सभी पूर्वापेक्षाएँ इंस्टॉल हो जाने के बाद, निम्नलिखित चरणों का पालन करें:
# Log in to Azure from command line to ensure that the access token is valid
az login
# Clone Repository and move to BlueTeam.Lab folder
git clone https://github.com/op7ic/BlueTeam.Lab.git && cd BlueTeam.Lab
# Initialize Terraform and begin planning
terraform init && terraform plan
# Create your lab using the following command.
terraform apply -auto-approve
# Verify the layout of your environment using Ansible
cd ansible && ANSIBLE_CONFIG=./ansible.cfg ansible-inventory --graph -i inventory.azure_rm.yml -vvv && cd ../
# To see IPs of individual hosts and other setup details use the following command:
cd ansible && ANSIBLE_CONFIG=./ansible.cfg ansible-inventory -i inventory.azure_rm.yml -vvv --list && cd ../
# Once done, destroy your lab using the following command:
terraform destroy -auto-approve
# If you would like to time the execution us following command:
start_time=`date +%s` && terraform apply -auto-approve && end_time=`date +%s` && echo execution time was `expr $end_time - $start_time` s
#NOTE: It will take about two hours to configure it all, depending on your selected hardware.
Terraform चर इस तैनाती के लिए उपयोग किए जाने वाले ऑपरेटिंग सिस्टम के प्रकार को निर्धारित करते हैं। रनटाइम चरों में एक साधारण संशोधन संपूर्ण Active Directory (AD) को चलाने के लिए विभिन्न OS निर्दिष्ट करने की अनुमति देता है। डिफ़ॉल्ट विकल्प Windows 10 Enterprise का उपयोग वर्कस्टेशन के लिए और Windows Server 2019 Datacenter का उपयोग डोमेन कंट्रोलर के लिए करना है। यहाँ कुछ सामान्य कॉन्फ़िगरेशन विकल्पों के उदाहरण दिए गए हैं जिनका उपयोग विभिन्न OS संस्करणों का उपयोग करने के लिए संपूर्ण वातावरण को संशोधित करने के लिए किया जा सकता है:
# Use Windows 10 Enterprise for Workstations and Server 2019 Datacenter for DC (default option)
terraform apply -auto-approve
# Use Windows 11 Enterprise for Workstations and Server 2019 Datacenter for DC
terraform apply -auto-approve -var="workstation_os=Windows-11" -var="workstation_SKU=win11-21h2-ent" -var="workstations_vm_size=Standard_DC2s_v2"
# Use Windows 11 Enterprise for Workstations and Server 2012 Datacenter for 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"
# Use Windows 11 Enterprise for Workstations and Server 2016 Datacenter for 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"
# Use Windows 10 Pro N for Workstations and Server 2012 Datacenter for 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 का उपयोग तैनाती के लिए विभिन्न OS संस्करणों की पहचान करने के लिए किया जा सकता है।
निम्नलिखित अनुभाग इस लैब को बनाने वाले विभिन्न घटकों का वर्णन करता है, साथ ही सेटअप को संशोधित करने के लिए कॉन्फ़िगरेशन फ़ाइलों को कैसे बदलें, इसके विवरण भी शामिल हैं:
लैब के निर्माण के बाद, Terraform सिस्टम का वास्तविक स्थान और संबंधित क्रेडेंशियल प्रिंट करेगा। एक उदाहरण आउटपुट नीचे पाया जा सकता है।
Network Setup:
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/
Credentials:
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 वातावरण में लागू फ़ायरवॉल नियमों के एक सेट का सारांश प्रस्तुत करती है। कृपया Firewall Rule Setup अनुभाग में आवश्यकतानुसार नए फ़ायरवॉल नियम जोड़ने के लिए main.tf फ़ाइल को संशोधित करें।
आंतरिक रूप से, इस वातावरण के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन में निम्नलिखित स्थिर 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 Server, साथ ही 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%%% | Wazuh सर्वर के लिए SSH क्रेडेंशियल |
| 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 ही क्यों?
मैं नेटवर्क सेगमेंट, तैनाती आकार या अन्य चर को कैसे संशोधित करूँ?
terraform apply में -var जोड़कर बदला जा सकता है। उदाहरण के लिए, terraform apply --auto-approve -var="region=East US 2" डिफ़ॉल्ट चर फ़ाइल में निर्धारित क्षेत्र से भिन्न क्षेत्र को संशोधित करेगा। संपूर्ण सेटअप, जिसमें नेटवर्क रेंज, ऑपरेटिंग सिस्टम और VM आकार शामिल हैं, -var मापदंडों की एक श्रृंखला का उपयोग करके बदला जा सकता है।किसी विशिष्ट तैनाती के लिए SKU कैसे खोजें?
अपनी तैनाती के लिए उपलब्ध SKU खोजने के लिए Azure कमांड az vm list-skus --location westeurope --all --output table का उपयोग करें।
सिस्टम बनाते समय मुझे Max retries exceeded with url: /wsman मिलता है और फिर कनेक्शन अस्वीकार हो जाता है।
terraform apply -auto-approve को पुनः चलाएँ।