网络安全渗透测试【免费下载链接】GOADgame of active directory项目地址https://gitcode.com/gh_mirrors/go/GOAD点击查看免费下载GOADGame of Active Directory在完成虚拟机创建之后还需要通过 Ansible 完成整个 Active Directory 攻防环境的自动化配置包括域控制器搭建、信任关系、用户/组数据导入、LAPS、ADCS、IIS/MSSQL、安全与漏洞场景等。本文以仓库中的 docs/olddocs/provisioning.md 为核心脉络结合仓库源码中的main.yml、inventory、Dockerfile、goad.sh等真实实现完整讲解从 Docker、Linux 主机或同网段 Linux VM 三种途径驱动 Ansible 配置 GOAD 的完整流程并给出可复制的逐条命令与分步 playbook 清单。读完本文你将能够独立完成 GOAD 实验室从vagrant up之后到实验室可用的全部配置工作并掌握故障重放、默认账户禁用等运维技巧。前置条件虚拟机必须处于运行状态Provisioning 的前提是虚拟机已经创建并处于运行状态。也就是说在执行任何ansible-playbook命令之前必须先在存放 Vagrantfile 的目录下完成pwd /opt/GOAD # 切换到克隆项目所在的 GOAD 目录 vagrant up # 创建并启动虚拟机必须在包含 Vagrantfile 的目录下执行只有vagrant up成功结束、所有 VM 处于 running 状态后才能开始 Ansible 配置。这一点在仓库的 ansible/main.yml 的 playbook 编排中也体现了main.yml首先通过 ansible/data.yml 读取每个实验室ad/LAB/data/config.json中的主机数据再逐阶段执行配置任务任何阶段都需要目标主机在线。三种 Ansible 运行环境GOAD 支持从以下任意一种环境发起配置选择哪种取决于你的宿主机条件Docker 容器使用仓库根目录的 Dockerfile 构建专用镜像容器通过--network host共享宿主机网络直接访问 192.168.56.1/24 网段上的实验虚拟机Linux 宿主机在本机创建 Python 3.8 虚拟环境并安装 ansible-core 与 pywinrm与实验室同网段的 Linux VM在装有 Host-Only 适配器的 Linux 虚拟机中以与上述宿主机相同的方式运行。官方实测的 Ansible 版本为ansible-core 2.12.6Windows 主机通过 WinRM 连接因此pywinrm是必需依赖。方式一在 Docker 容器中运行 Ansible构建配置镜像在项目根目录Dockerfile 所在目录执行cd /opt/goad sudo docker build -t goadansible .仓库根目录的 Dockerfile 定义了镜像内容其关键步骤包括基于ubuntu:22.04安装python3-pippip install ansible-core2.12.6与pip install pywinrm与官方文档中Tested with ansible-core (2.12)保持一致安装sshpass lftp rsync openssh-client等传输与同步工具实验室中 Linux 主机的连接与文件同步依赖它们COPY ./ansible/requirements.yml .后执行ansible-galaxy install -r requirements.yml把 ansible/requirements.yml 中声明的全部 Galaxy 依赖预装进镜像。启动配置sudo docker run -ti --rm --network host -h goadansible -v $(pwd):/goad -w /goad/ansible goadansible ansible-playbook -i ../ad/LAB/data/inventory -i ../ad/LAB/providers/PROVIDER/inventory main.yml逐项拆解这条命令参数作用-ti交互式终端可实时观察 ansible 输出并随时中断--rm容器退出后自动删除不残留容器--network host容器直接使用宿主机网络从而能访问 Host-Only 网段的 VM192.168.56.1/24-h goadansible设置容器主机名便于识别与日志分析-v $(pwd):/goad将包含 GOAD 仓库的本地目录挂载到容器内/goad-w /goad/ansible将容器工作目录设为/goad/ansible对应仓库的 ansible 目录第一个-i指定全局 inventoryad/LAB/data/inventory用于描述实验场景与主机分组不包含环境变量第二个-i指定provider inventoryad/LAB/providers/PROVIDER/inventory用于填充 IP 等 provider 相关变量main.yml配置入口 playbook即 ansible/main.yml例如对 VirtualBox 提供者、GOAD 主实验室实际命令为sudo docker run -ti --rm --network host -h goadansible -v $(pwd):/goad -w /goad/ansible goadansible ansible-playbook -i ../ad/GOAD/data/inventory -i ../ad/GOAD/providers/virtualbox/inventory main.yml方式二在宿主机 / 同网段 Linux VM 上运行 Ansible创建 Python 虚拟环境官方文档要求Python 3.8。以 Ubuntu 为例sudo apt install git git clone GOAD 仓库地址 cd GOAD/ansible sudo apt install python3.8-venv python3.8 -m virtualenv .venv source .venv/bin/activate从源码看goad.sh 会自动检测 Python 版本并处理虚拟环境python 3.8时继续python 3.11时改用 requirements_311.yml 作为依赖清单。你可以直接使用这条脚本也可以手动按下面步骤安装。安装 ansible-core 与 pywinrmpython3 -m pip install --upgrade pip python3 -m pip install ansible-core2.12.6 python3 -m pip install pywinrmansible-core 2.12.6是官方文档标注的测试版本pywinrm必不可少GOAD 的 Windows 域控制器与服务器全部通过 WinRM 协议连接见下文 inventory 中的ansible_connectionwinrm。安装 Ansible Galaxy 依赖仓库根目录的 requirements.yml与 requirements_311.yml 内容对应声明了以下集合与角色集合 / 角色说明ansible.windows1.11.0Windows 域相关操作的核心集合community.windows1.11.0Windows 生态补充集合chocolatey.chocolatey包管理文档注明不再需要可保留兼容community.general通用工具集合community.crypto、community.mysql、scicore.guacamole、ansible.posix证书、MySQL、Guacamole 网关与 POSIX 工具geerlingguy.mysql角色MySQL 部署角色安装命令ansible-galaxy install -r requirements.ymlInventory 结构全局清单与 Provider 清单GOAD 的 Ansible 设计采用双 inventory 叠加文档中反复出现的两条-i参数各有分工理解它们才能自由替换 LAB 与 PROVIDER。全局 inventory描述实验场景以 GOAD 主实验室为例ad/GOAD/data/inventory 负责声明domain_nameGOAD等全局变量如admin_user、键盘布局、代理开关、DNS 转发器设置WinRM 连接参数ansible_uservagrant、ansible_passwordvagrant、ansible_connectionwinrm、ansible_winrm_server_cert_validationignore以及两个重要的超时参数ansible_winrm_operation_timeout_sec400ansible_winrm_read_timeout_sec500这正是文档提到Windows 安装延迟导致报错等待几分钟重放即可的底层原因——Windows 重启、组策略生效等操作耗时较长需要放宽 WinRM 读写超时主机分组[domain]、[dc]、[server]、[parent_dc]、[child_dc]、[trust]、[adcs]、[iis]、[mssql]、[webdav]、[laps_*]、[update]、[no_update]、[defender_on]、[defender_off]、[extensions]等每个分组上方的注释都标明了它被哪些 playbook 使用如[adcs]用于adcs.yml[iis]用于servers.yml。Provider inventory描述运行环境以 VirtualBox 为例ad/GOAD/providers/virtualbox/inventory 定义了每台主机的 IP 与归属域信息[default] ; sevenkingdoms.local dc01 ansible_host{{ip_range}}.10 dns_domaindc01 dict_keydc01 ; north.sevenkingdoms.local dc02 ansible_host{{ip_range}}.11 dns_domaindc01 dict_keydc02 srv02 ansible_host{{ip_range}}.22 dns_domaindc02 dict_keysrv02 ; essos.local dc03 ansible_host{{ip_range}}.12 dns_domaindc03 dict_keydc03 srv03 ansible_host{{ip_range}}.23 dns_domaindc03 dict_keysrv03其中{{ip_range}}由 Terraform/Vagrant 生成的实际网段填充dns_domain与dict_key供 ansible/data.yml 中的set_fact逻辑使用例如根据ansible_host匹配出域适配器与 NAT 适配器的网卡名。每个实验室ad/下的DRACARYS、GOAD、GOAD-Light、GOAD-Mini、NHA、SCCM都带有自己的一套data/inventory与providers/PROVIDER/inventory替换LAB与PROVIDER即可适配不同场景。一键执行完整配置在宿主机或同网段 Linux VM上最直接的方式是一次性执行完整 playbookansible-playbook -i ../ad/LAB/data/inventory -i ../ad/LAB/providers/PROVIDER/inventory main.yml例如 VirtualBox GOAD 实验室ansible-playbook -i ../ad/GOAD/data/inventory -i ../ad/GOAD/providers/virtualbox/inventory main.yml # 当虚拟机就绪后配置它们适用于 virtualbox provider 与 goad 实验室分步执行 playbook完整顺序清单文档强调main.yml由多个独立部分构成每部分可以单独重跑但必须保持执行顺序。这适用于调试或安装中途出错后精确续跑的场景。以下是文档给出的完整清单以 GOAD virtualbox 为例可用ANSIBLE_COMMAND变量复用命令前缀ANSIBLE_COMMANDansible-playbook -i ../ad/GOAD/data/inventory -i ../ad/GOAD/providers/virtualbox/inventory $ANSIBLE_COMMAND build.yml # 安装基础组件并准备虚拟机 $ANSIBLE_COMMAND ad-servers.yml # 创建主域、子域并注册服务器 $ANSIBLE_COMMAND ad-parent_domain.yml # 创建父域 $ANSIBLE_COMMAND ad-child_domain.yml # 创建子域 sleep 5m $ANSIBLE_COMMAND ad-members.yml # 添加子域成员 $ANSIBLE_COMMAND ad-trusts.yml # 创建信任关系 $ANSIBLE_COMMAND ad-data.yml # 导入 AD 数据用户/组等 $ANSIBLE_COMMAND ad-gmsa.yml # 运行 gMSA $ANSIBLE_COMMAND laps.yml # 运行 LAPS $ANSIBLE_COMMAND ad-relations.yml # 设置权限与域间组关系 $ANSIBLE_COMMAND adcs.yml # 在 essos 安装 ADCS $ANSIBLE_COMMAND ad-acl.yml # 设置 ACE/ACL $ANSIBLE_COMMAND servers.yml # 安装 IIS 与 MSSQL $ANSIBLE_COMMAND security.yml # 配置安全项调整杀软开关 $ANSIBLE_COMMAND vulnerabilities.yml # 配置漏洞场景 $ANSIBLE_COMMAND reboot.yml # 全部重启注意ad-members.yml之前的sleep 5m父域与子域建立后需要时间完成 DNS 收敛与复制直接执行成员添加容易因网络/解析未就绪而失败。这一顺序与 ansible/main.yml 的import_playbook编排完全对应。从main.yml源码可以看到完整的依赖链设计# 加载数据 - import_playbook: data.yml # 读取 ad/{{domain_name}}/data/ 下的配置 - import_playbook: build.yml # 准备服务器common/键盘/更新等 # AD 阶段 - import_playbook: ad-servers.yml # 创建主域、子域并注册服务器 - import_playbook: ad-parent_domain.yml - import_playbook: ad-child_domain.yml - import_playbook: ad-members.yml - import_playbook: ad-trusts.yml # 信任关系 - import_playbook: ad-data.yml # 用户/组数据 - import_playbook: ad-gmsa.yml - import_playbook: laps.yml - import_playbook: localusers.yml # AD 关系与 ACL - import_playbook: ad-relations.yml - import_playbook: adcs.yml - import_playbook: ad-acl.yml # 服务器 - import_playbook: servers.yml # IIS MSSQL # 安全与漏洞 - import_playbook: security.yml - import_playbook: vulnerabilities.yml - import_playbook: reboot.yml其中被注释掉的ad.yml、servers.yml、elk.yml等体现了项目演进痕迹当前默认流程以ad-servers.yml为 AD 阶段的起点。main.yml同样先加载 ansible/data.yml后者通过vars_files: {{data_path}}/config.json将 ad/GOAD/data/config.json 中的主机级配置密码、主机名等注入为可缓存的 facts供ad-servers.yml中settings/admin_password、settings/hostname等角色消费。另外仓库 ansible/ansible.cfg 默认关闭了host_key_checking避免首次 SSH 连接交互与弃用警告并开启show_per_host_start让多主机执行输出更清晰。实验室生命周期管理配置完成后日常启停非常简单vagrant halt # 停止所有虚拟机 vagrant up # 再次启动实验室无需重新配置 Ansible再次启动时因为虚拟机磁盘上已保留了上次配置结果不需要重放 playbook直接vagrant up即可。故障处理重放 playbook文档给出明确的容错策略如果安装过程中出现错误不要犹豫直接重放主 playbook。绝大多数报错源于 Windows 安装过程的延迟重启、服务启动、组策略等待等待几分钟后重放即可恢复。这与 inventory 中放宽的 WinRM 超时operation 400s / read 500s相互印证——重试是最常用的恢复手段。启用 / 禁用默认 vagrant 用户重要安全说明由于底层模板的原因所有环境默认使用vagrant:vagrant凭据部署。这是实验环境本质上是不安全的。但你可能不希望这个默认凭据被用于非预期解法为此仓库提供了两个独立的 Ansible playbook 来开关该账户。禁用默认用户ansible-playbook -i ../ad/LAB/data/inventory -i ../ad/LAB/providers/PROVIDER/inventory disable_vagrant.yml需要再次管理实验室时重新启用ansible-playbook -i ../ad/LAB/data/inventory -i ../ad/LAB/providers/PROVIDER/inventory enable_vagrant.yml从实现看ansible/disable_vagrant.yml 对hosts: domain执行disable_user角色、对hosts: linux_domain以become: yes执行linux/disable_user角色二者都传入username: vagrantansible/enable_vagrant.yml 则对称地调用enable_user与linux/enable_user。这保证了 Windows 域成员与 Linux 域成员两类主机都能被统一管理。脚本化封装goad.sh 与 check.sh文档最后提到以上所有功能都被封装进了 goad.sh并伴随 scripts/check.sh 与各类setup*.sh脚本让环境准备更简单。goad.sh 会自动检测 Python 版本 3.8 且 3.11 使用 requirements.yml 3.11 使用 requirements_311.yml创建~/.goad/.venv、安装 Python 依赖与 Galaxy 集合最后调用 goad.py 交互式驱动整个流程。例如禁用 vagrant 用户的等价命令./goad.sh -t disablevagrant -l GOAD -p vmware_esxi -m localscripts/check.sh 是环境自检脚本源自 DetectionLab 项目按 provider 检查对应工具链VirtualBox 检查VBoxManage、vagrant要求 2.2.9、vagrant-reload插件与磁盘/内存空间VMware 额外检查vmrun、vagrant-vmware-desktop插件与vagrant-vmware-utilityVMware ESXi 检查ovftool、vagrant-vmware-esxi与vagrant-env插件Proxmox 检查packer、terraform云平台检查 AWS/Azure CLI、terraform与rsync。对 ansible 侧它会核对ansible-core版本、pywinrm、ansible/ansible-galaxy可执行文件以及community.windows、community.general、ansible.windows集合是否齐备。用法为./check.sh provider ansible_host其中ansible_host取docker或local与本文的两种运行方式一一对应。总结GOAD 的 provisioning 以双 inventory场景清单 环境清单main.yml多阶段编排为核心先vagrant up保证虚拟机在线再通过 Docker、宿主机或同网段 Linux VM 三种途径之一驱动 ansible-core 2.12.6 完成 AD 环境搭建日常可一键main.yml全量配置也可按 16 个步骤逐条续跑出错的通用解法是等待后重放 playbook最后用disable_vagrant.yml/enable_vagrant.yml控制默认凭据暴露面。结合 goad.sh 与 scripts/check.sh即可把整套流程自动化、可复现地跑通。赞分享网络安全渗透测试【免费下载链接】GOADgame of active directory项目地址https://gitcode.com/gh_mirrors/go/GOAD点击查看免费下载相关推荐GOAD SCCM 实验室基于 Ansible Terraform 自动搭建 MECM/SCCM 域渗透环境的完整实践GOAD SCCM 实验室基于 Ansible Terraform 自动搭建 MECM/SCCM 域渗透环境的完整实践 本文以 GOAD 仓库中的 SCC网络安全渗透测试InvenTree SCIM 2.0 用户/组自动供应Provisioning配置实战指南InvenTree SCIM 2.0 用户/组自动供应Provisioning配置实战指南 导读 本文基于 InvenTree 开源库存管理系统官方文档与仓后端前端企业应用ERPGOAD主动目录渗透测试实验室搭建指南GOAD主动目录渗透测试实验室搭建指南 项目介绍 GOAD是一个专为安全研究人员和渗透测试者设计的Active Directory渗透测试环境项目。它提供了一网络安全渗透测试上一篇B站评论区成分检测从人工筛选到智能识别的效率革命下一篇TranslumoWindows平台实时屏幕翻译终极指南5分钟上手跨越语言障碍创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考