使用Terraform在Azure上构建应用型紫队实验室(含Windows域控、成员服务器及HELK)

本文详细介绍了如何利用Terraform在Azure云平台自动化部署包含Windows域控制器、成员服务器和HELK安全分析平台的紫队测试环境,包含完整的身份验证配置、资源部署步骤及成本估算。

如何:使用Terraform在Azure上构建应用型紫队实验室(Windows域控、成员服务器及HELK!)

Jordan Drysdale & Kent Ickler

摘要

Ubuntu基础系统,安装AZCLI,解压terraform,获取认证令牌,运行脚本,即可获得新域环境。 项目地址:https://github.com/DefensiveOrigins/APT-Lab-Terraform

对于持续关注我们工作的同仁们——现已发布三个网络研讨会、周六的四小时入门培训课程以及参加虚拟课程的学员们——实验室现已正式可用。通过以下简单步骤即可在Azure上部署使用。下述指令将使用Terraform在Azure上创建三个系统,完美复现我们倡导的课堂环境(域控制器+成员服务器+HELK)。它们具有相同的IP地址、相同的凭据,一切您已熟悉的配置。

以下步骤假设您已拥有Microsoft Azure账户。若尚未注册,请访问https://azure.microsoft.com/en-us/free/ 领取200美元信用额度。

根据估算,仅凭信用额度即可运行本指南构建的实验室约30天。感谢您的阅读、关注与支持。

分步指南

步骤1

在Digital Ocean上创建新的Ubuntu 18.04实例(月费5美元)

步骤2

安装AZCLI

1
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

步骤3

获取terraform二进制文件,解压并添加到PATH。建议将工具包存放于/opt/目录(源自Fletch的实践习惯)。注意:二进制文件位置会随时间变化,请从https://www.terraform.io/downloads.html 获取最新terraform包地址。

1
2
3
4
cd /opt/
wget https://releases.hashicorp.com/terraform_0.12.29_linux_amd64.zip
unzip terraform_0.12.29_linux_amd64.zip
mv terraform /usr/local/bin/

验证安装:

1
terraform -v

步骤4

此步骤较为复杂,可能在部署过程中引发问题。需收集必要的令牌信息通过AZCLI验证Azure订阅。

1
az login

该命令将提示进行AZ云认证。可访问现有Azure会话并按指示操作。

设置认证会话到指定订阅:

1
az account set --subscription="您的订阅ID"

创建具有基于角色访问控制的服务主体:

1
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/您的订阅ID"

此命令将输出敏感信息(下图中以零值显示,源自微软参考文章)。这些值需填入LabBuilder.py脚本:

  • appId → client_id
  • password → client_secret
  • tenant → tenant_id

步骤5

获取仓库并配置LabBuilder脚本以适应您的订阅和服务主体。

1
2
git clone https://github.com/DefensiveOrigins/APT-Lab-Terraform.git
cd APT-Lab-Terraform

使用任意编辑器修改LabBuilder.py:

1
vi/vim/nano/emacs/word/textpad/mousepad/leafpad/notepad/ LabBuilder.py

步骤6

开始构建!

1
python3 LabBuilder.py -m <公网IP>

预计完整构建时间约27分钟(实际测试耗时23分53.8秒)。

输出结果为微软分配的公网IP地址。该地址提供远程桌面服务,使用labs.local\itadmin用户登录,密码为"APTClass!"(无引号)。请注意:此时光学栈未配置(Elastic中无数据,未安装Sysmon等)。

代码库详细说明(包含所有底层系统、服务、用户等)请参见git仓库。实验室环境高级概览如下(同样记录于git仓库):

  • Windows域控制器:10.10.98.10
  • 公网IP限制访问Windows成员系统
  • Windows工作站:10.10.98.14
  • HELK:10.10.98.20

服务端口:

  • Kafka:9092
  • Logstash:5044
  • Elastic:443
  • SSH:22

成本说明:该实验室在Azure上每日运行成本约6-8美元(AWS测试成本为此两倍以上)。Azure新用户可获得200美元信用额度。

实用链接

后续计划

下一步将使用两个独立脚本安装完整Windows光学栈并传输日志。运行这些脚本后,监听的Apache Kafka代理将开始工作,您将在Elastic中看到日志数据。相关脚本将在同一仓库中发布。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计