DanderSpritz Lab
目的
DanderSpritz Lab 的目标是让研究人员和防御者能够快速搭建一个完整功能的 DanderSpritz 环境——方程式组织的后渗透工具集,并设置一台 Windows Server 2008 域控制器和一台客户端作为目标。Windows 目标上预装了一些我在研究 DanderSpritz 及其能力时觉得有用的逆向工程工具。
关于 DanderSpritz Lab 的更多内容,请阅读:https://medium.com/@francisck/introducing-danderspritz-lab-461912313d7c
我创建了一个网站来记录 DanderSpritz 的能力和工具:https://danderspritz.com
注意:此实验环境未进行任何加固(故意设计为脆弱),并使用默认的 vagrant 凭据运行。请不要将其连接或桥接到您关心的任何网络。
要求
- 20GB+ 可用磁盘空间
- 8GB+ 内存
- 20GB 带宽消耗(用于下载 ISO、更新、服务包等)
- Packer v1.2.3 或更新版本
- Vagrant v2.1.1 或更新版本
- Vagrant-Reload 插件
- Virtualbox(VMWare Fusion/Workstation 将在 稍后 支持)
启动 DanderSpritz Lab
DanderSpritz 使用 Packer、Vagrant 和 Vagrant-reload 插件的从 零 安装和配置实验环境。Packer 会直接从 Microsoft 下载 Windows ISO,并安装试用版软件以供研究使用。
- 将此仓库克隆到您的本地机器
git clone [email protected]:francisck/DanderSpritz_lab.git
- 确保已安装 Vagrant-reload 插件
vagrant plugin install vagrant-reload
- 为了下载 ISO 并构建 Vagrant box,请运行以下命令:
packer build danderspritz_lab.json
- Vagrant box 构建完成后,启动虚拟机并让它们继续执行一些额外配置:
vagrant up
创建 FuzzBunch 项目
- 启动 Windows 命令提示符(cmd)并运行以下命令:
D:\
python fb.py
- 将默认 目标 地址设为 192.168.40.3
- 将默认 回调 地址设为 192.168.40.4
- 不要 使用重定向(开始时)
- 保留默认日志目录
- 创建新项目(选项 0)
- 为项目命名
- 保留默认日志目录

利用目标机器
- 使用 EternalBlue 利用目标机器,运行以下命令:
use eternalblue
- 选择所有默认选项,除了 传递机制。使用 "FB"(传统部署)作为传递机制
- 一旦 EternalBlue 成功,配置 DanderSpritz 和 PeddleCheap
配置并启动 DanderSpritz
- 启动另一个 Windows 命令提示符(cmd)并运行以下命令:
D:\
python configure_lp
- 允许 Java 通过防火墙
- 选择 "日志目录" 旁边的
浏览,然后选择您创建的 FuzzBunch 项目的名称

- 点击 "Go"
PeddleCheap 准备(配置植入程序)
- 在 DanderSpritz 控制台中运行以下命令:
pc_prep
- 选择标准的 x64-winnt level 3 sharedlib payload
5
- 不要 选择高级设置
- 选择立即回连
- 使用默认 PC ID(0)
- 选择 "是" 以回答 "是否要监听?"
- 不要 更改监听端口
- 保留默认 "回调" 地址(127.0.0.1)
- 不要更改 exe 名称
- 使用默认密钥(选项 2)
- 验证 PeddleCheap 配置是否有效
- 不要 使用 FC(felonycrowbar)进行配置
- 复制配置后的二进制文件的路径:

通过 DoublePulsar 后门传递植入程序(PeddleCheap):
- 在原始的 Fuzzbunch 窗口中输入:
use doublepulsar
- 当询问是否希望提示变量设置时,选择 "是"
- 选择所有默认变量设置,除了 目标架构(选择选项 1)
1) x64 x64 64-bits
- 选择 "RunDLL" 功能(选项 2)
2) RunDLL Use an APC to inject a DLL into a user mode process.

- 保留其他所有选项为默认,当询问是否执行插件时选择 "是"
- 您应该会看到 "Doublepulsar succeeded"
使用 DanderSpritz 连接到 PeddleCheap 植入程序
- 在 DanderSpritz 中,选择屏幕顶部的 "PeddleCheap"
- 从密钥下拉菜单中选择 "default" 密钥
- 输入目标机器的地址(192.168.40.3)
- 选择 "Connect to target"

- 选择您的 Fuzzbunch 项目名称
- 等待 DanderSpritz Survey 完成(将花费较长时间),期间您需要回答一些问题
- 收获成功!
用于善,而非恶!
此项目的目的是让 安全研究人员 能够轻松构建和配置一个功能完整的 DanderSpritz 实验环境,用于逆向工程和测试。
- 不要 将此环境用于除本实验外的任何目标。
- 不要 将此用于 "红队演练"
- 请 将您的研究成果回馈给社区
- 请 通过 我 提出任何问题 :)
日常使用
一旦运行过 Packer,就不需要再次运行。Vagrant box 将保留,您可以随时重建、拆除或重启实验环境。
以下是一些您在实验过程中可能会用到的常用命令:
基本 Vagrant 使用
- 启动所有 DanderSpritz Lab 主机:
vagrant up
- 启动特定主机:
vagrant up <主机名>
- 重启特定主机:
vagrant reload <主机名>
- 重启特定主机并重新执行配置过程:
vagrant reload <主机名> --provision
- 销毁特定主机:
vagrant destroy <主机名>
- 销毁整个 DanderSpritz Lab 环境:
vagrant destroy
- 创建虚拟机快照:
vagrant snapshot save <主机名> <快照名>
- 恢复虚拟机快照:
vagrant snapshot restore <主机名> <快照名>
- 查看每台主机的状态:
vagrant status
- 挂起实验环境:
vagrant suspend
- 恢复实验环境:
vagrant resume
重新激活过期的 Windows 主机
如果遇到测试许可证过期的问题,您可以在管理员命令提示符下运行以下命令来重新激活主机(最多 3 次,共 90 天 Windows 许可证有效期):
之后需要重启机器。
实验环境信息
实验网络拓扑图

其他实验环境信息
- 域名:windomain.local
- 管理员登录(所有机器):vagrant:vagrant
- DC(域控制器):192.168.40.2/24
- 目标:192.168.40.3/24
- DanderSpritz:192.168.40.4/24
实验主机
- DC - Windows 2008 R2 域控制器
- Windomain.local 的 Windows 域控制器
- WEF 服务器配置 GPO
- PowerShell 日志记录 GPO
- 增强的 Windows 审核策略 GPO
- 目标 - Windows 7 工作站
- 模拟目标工作站/机器
- 已加入 Windomain.local Windows AD 域
- 预装了一些逆向/可视化工具
- 可通过 Chocolatey(使用 FireEye Flare REPO)安装更多工具
- DanderSpritz 主机 - Windows 10
- 预装 DanderSpritz 和 Fuzzbunch
目标(Windows 7 SP1)上预装的工具
- Sysmon
- Sysinternal 工具(Procmon、TCPview 等)
- API Monitor
- InfoPe
- HxD
- PEView
- Windbg
- WireShark
- Binary Ninja
- HashCalc
- IDA 7 Free
- Ollydbg
- 增强审核 GPO
- PowerShell 日志记录 GPO
- Windows 事件转发到域控制器(WEC)
致谢/资源
本项目中相当一部分代码借自并改编自 Chris Long 的 DetectionLab 项目,以及 Stefan Scherer 的 packer-windows 和 adfs2 GitHub 仓库。衷心感谢所有贡献代码,使得此类项目更易实现(甚至成为可能)的各位。
感谢