halilibrahimd27/goad-light-vmware-windows
GitHub: halilibrahimd27/goad-light-vmware-windows
该项目提供了一套完整的指南和修复脚本,用于在 Windows + VMware Workstation 上顺利部署 GOAD-Light Active Directory 渗透测试实验环境。
Stars: 0 | Forks: 0
# 🏰 在 VMware + Windows 上部署 GOAD-Light — 完整设置指南
**🌍 语言:** English (本文) · [🇹🇷 Türkçe](README.tr.md)
## 📖 这是什么?
[GOAD (Game of Active Directory)](https://github.com/Orange-Cyberdefense/GOAD) 由 Orange Cyberdefense 开发,是一个刻意设计存在漏洞的 Active Directory 实验环境——非常适合用于 **OSCP / OSCP+ AD 练习**、渗透测试培训以及红队演练。
在 **Windows + VMware Workstation** 上部署它会遇到几个未记录的陷阱,可能会浪费你整整一天的时间。本仓库就是我希望当初能拥有的指南:它将**每一个修复都融入到主流程**中,并提供了可直接运行的**修复脚本**。
## ⚡ 为什么本指南与众不同
大多数教程只让你执行 `install` 然后就不管了。本指南预先解决了在 Windows 上破坏 GOAD 的**五个陷阱**:
| # | 陷阱 | 症状 | 修复 |
|---|------|---------|-----|
| 1 | **Python 3.13/3.14 太新** | `configparser.InvalidWriteError ... delimiter :` | 使用 Python 3.12 |
| 2 | **GOAD `windows.py` bug** | `TypeError: is_in_path() takes 2 positional arguments but 3` | [`01-fix-windows-py.ps1`](scripts/01-fix-windows-py.ps1) |
| 3 | **宿主机不在实验网络中** | Kali/宿主机无法 ping 通 DC(虚拟机之间可以互相 ping 通) | [`02-setup-host-network.ps1`](scripts/02-setup-host-network.ps1) |
| 4 | **PROVISIONING 虚拟机没有 IP** | `ssh: connect to 192.168.56.3 ... timed out` | [`03-fix-provisioning-ip.sh`](scripts/03-fix-provisioning-ip.sh) |
| 5 | **SSMS 安装卡住** | 在 `Install SSMS on srv02` 处卡住超过 30 分钟 | [`04-disable-ssms.sh`](scripts/04-disable-ssms.sh) |
好消息:**vagrant-vmware-desktop 插件不再需要付费许可**(于 2025 年末在 MPL 许可下开源),并且供个人使用的 **VMware Workstation Pro 是免费的**。
## 🗺️ 架构
```
┌─────────────────────────────────────────────────────────────┐
│ WINDOWS HOST (VMware Workstation) │
│ • goad.py + Vagrant (orchestrator — runs on the host) │
│ • host-only vmnet adapter: 192.168.56.1 │
│ │
│ ┌──────────────── VMware (host-only 192.168.56.0/24) ────┐ │
│ │ Kali (.250) ← attacker │ │
│ │ PROVISIONING (.3) ← temp Ubuntu box, runs Ansible │ │
│ │ DC01 kingslanding (.10) sevenkingdoms.local │ │
│ │ DC02 winterfell (.11) north.sevenkingdoms.local │ │
│ │ SRV02 castelblack (.22) north.* (Defender OFF) │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
`goad.py` + Vagrant 必须在**宿主机**上运行(`vagrant-vmware-desktop` 插件驱动宿主机的 VMware)。Ansible 在自动创建的 **PROVISIONING** 虚拟机内运行(`-m vm` 方法)。
## ✅ 前置条件
- Windows 10/11 宿主机,建议有 **~80–120 GB 可用磁盘空间**和 **32 GB RAM**
- 在 BIOS 中启用 CPU 虚拟化 (VT-x/AMD-V)
- 宿主机电源设置 → **永不休眠**(以免下载/重启被中断)
- 已经在 VMware 中作为虚拟机安装好的 Kali
## 🚀 设置
### 阶段 1 — Windows 宿主机工具
1. [Visual C++ 2019 Redistributable](https://aka.ms/vs/17/release/vc_redist.x64.exe)
2. [Vagrant](https://developer.hashicorp.com/vagrant/install) → **重启**
3. [Vagrant VMware Utility (驱动)](https://developer.hashicorp.com/vagrant/install/vmware) — 强制必装
4. 插件(管理员 PowerShell):
vagrant plugin install vagrant-reload vagrant-vmware-desktop winrm winrm-fs winrm-elevated
### 阶段 2 — Python 3.12 + GOAD
```
:: install Python 3.12 first (py install 3.12 OR python.org classic installer)
cd C:\lab
git clone https://github.com/Orange-Cyberdefense/GOAD.git
cd GOAD
py -3.12 -m venv .env
.env\Scripts\python.exe --version :: MUST say 3.12.x
.env\Scripts\python.exe -m pip install --upgrade pip
.env\Scripts\python.exe -m pip install -r noansible_requirements.yml
```
### 阶段 2.5 — 修复 GOAD windows.py bug(必做)
```
powershell -ExecutionPolicy Bypass -File scripts\01-fix-windows-py.ps1
```
### 阶段 3 — 网络(关键部分)
实验环境使用 **192.168.56.0/24**。在 **VMware → 编辑 → 虚拟网络编辑器**(管理员)中:
- 选择/创建位于 `192.168.56.0/24` 的 host-only vmnet,子网掩码 `255.255.255.0`
- ☑ **“将主机虚拟适配器连接到此网络”** ← 很容易漏掉,如果关闭会破坏一切
- ☐ **“使用本地 DHCP 服务”** → 关闭(GOAD 使用静态 IP)
然后为宿主机适配器分配 IP + 添加防火墙规则:
```
:: Run as Administrator
powershell -ExecutionPolicy Bypass -File scripts\02-setup-host-network.ps1
```
在 Kali 中添加**第二块网卡**(虚拟机关机状态):网卡 1 = NAT,网卡 2 = 56.x vmnet。在 Kali 中:
```
sudo nmcli con add type ethernet con-name goad-net ifname eth1 ip4 192.168.56.250/24
sudo nmcli con up goad-net
```
### 阶段 4 — 安装
```
.env\Scripts\python.exe goad.py -m vm
```
```
> check # everything green
> set_provider vmware
> set_lab GOAD-Light
> set_ip_range 192.168.56
> install # confirm with y
```
### 阶段 4.6 — 修复 PROVISIONING IP(在 Windows 上你一定会遇到这个)
当你看到 `ssh: connect to host 192.168.56.3 port 22: Connection timed out` 时:
1. `Ctrl+C` 中断安装(虚拟机**不会**被销毁)
2. VMware 托盘图标 → **“打开所有后台虚拟机”** → 打开 **PROVISIONING** → 登录 `vagrant`/`vagrant`
3. 运行(把脚本复制过去,或者手动输入命令):
sudo bash 03-fix-provisioning-ip.sh # 或者 --persist 用于 netplan
4. 回到宿主机:`ping 192.168.56.3`,然后重新运行 `install`。
### 阶段 4.7 — 如果 SSMS 卡住则禁用它
如果在 `Install SSMS on srv02` 处停滞超过 30 分钟:
```
# 在 PROVISIONING 内部(即 ~/GOAD/ansible 所在位置)
bash 04-disable-ssms.sh
```
然后重新运行 `install`。SSMS 是可选的——MSSQL 和所有漏洞都会在它之前安装。
### 阶段 5 — 验证 + 快照
```
# 来自 Kali
nxc smb 192.168.56.10 192.168.56.11 192.168.56.22
```
你应该看到 `sevenkingdoms.local`、`north.sevenkingdoms.local` 以及三个主机名。然后:
```
:: in workspace\-goad-light-vmware\provider
vagrant snapshot save clean-goad
```
## 🩹 修复脚本
| 脚本 | 运行于 | 用途 |
|--------|---------|---------|
| [`01-fix-windows-py.ps1`](scripts/01-fix-windows-py.ps1) | 🪟 宿主机 (GOAD 根目录) | 修补 `is_in_path()` bug |
| [`02-setup-host-network.ps1`](scripts/02-setup-host-network.ps1) | 🪟 宿主机 (管理员) | 宿主机 vmnet IP + 防火墙 |
| [`03-fix-provisioning-ip.sh`](scripts/03-fix-provisioning-ip.sh) | 🐧 PROVISIONING 虚拟机 | 设置 `192.168.56.3` |
| [`04-disable-ssms.sh`](scripts/04-disable-ssms.sh) | 🐧 PROVISIONING 虚拟机 | 注释掉 SSMS play |
| [`check-network.ps1`](scripts/check-network.ps1) | 🪟 宿主机 | 连接诊断 |
## 🎯 攻击快速入门 (Kali)
添加到 `/etc/hosts`:
```
192.168.56.10 kingslanding.sevenkingdoms.local kingslanding sevenkingdoms.local
192.168.56.11 winterfell.north.sevenkingdoms.local winterfell north.sevenkingdoms.local
192.168.56.22 castelblack.north.sevenkingdoms.local castelblack
```
| 技术 | 目标用户 | 工具 |
|-----------|-------------|------|
| AS-REP Roasting | `brandon.stark` | `impacket-GetNPUsers` → hashcat `-m 18200` |
| Kerberoasting | `jon.snow` | `impacket-GetUserSPNs` → hashcat `-m 13100` |
| 密码喷洒 | `hodor` (用户=密码) | `nxc smb ... spray` |
| LLMNR + NTLM Relay | responder bots | `responder` + `ntlmrelayx` |
| ACL 滥用链 | jaime→joffrey→…→varys→DA | BloodHound + `bloodyAD` |
| MSSQL + 模拟 | `jon.snow`, `arya.stark` | `impacket-mssqlclient` |
| GPO 滥用 | `STARKWALLPAPER` | `SharpGPOAbuse` |
**推荐工具包:** mimikatz · chisel · evil-winrm · impacket · proxychains · **BloodHound legacy 4.2/4.3**(不要用较新的 CE 版本——大多数指南/考试材料都是针对旧版的)。
## 🔒 安全提示
GOAD 是故意设计存在漏洞的。这些漏洞**存在于虚拟机内部**,由 VMware 在 **host-only** 网络上进行沙盒隔离。你的宿主机不会变得脆弱——**只是千万不要将实验虚拟机桥接到你的真实网络中。**
## 📄 许可证
MIT — 见 [LICENSE](LICENSE)。这是社区文档;GOAD 本身由 Orange Cyberdefense 单独授权。
标签:AI合规, IPv6, IP 地址批量处理, Libemu, PowerShell, VMware, 应用安全, 数据展示, 活动目录, 系统提示词, 红队, 逆向工具, 靶场环境