BadZure 是一个 Python 工具,可自动创建错误配置的 Azure 环境,帮助安全团队模拟对手技术、开发和测试检测控制,并在 Entra ID 与 Azure 基础设施上运行紫队演练。它使用 Terraform 在 Entra ID 租户和 Azure 订阅中填充实体及有意设置的错误配置,生成横跨身份和云基础设施层的完整攻击路径。
BadZure 自动化创建用户、组、应用程序注册、服务主体、管理单元,以及 Azure 资源(例如 Key Vault、存储帐户、虚拟机、逻辑应用、自动化帐户、函数应用、Cosmos DB 帐户和资源组)。为模拟逼真的租户,它会随机向选定的安全主体分配 Entra ID 角色、Graph 权限和 Azure 资源访问权限,模仿真实环境中常见的权限扩散。在此逼真基线上,BadZure 通过可配置的攻击路径叠加有意设置的错误配置,生成可供对手模拟利用的权限提升链。
BadZure 的关键优势在于能够快速填充和清除带配置、预配置初始访问和有意攻击路径的租户,促进持续迭代的对手模拟和检测开发。它专为有兴趣探索和理解 Entra ID 与 Azure 安全、云资源配置错误以及现代云原生攻击技术的安全从业者设计。
BadZure 最初是为在 X33fcon 2023 上举办 Azure AD Battle School: Hands-on Attack and Defense 工坊而编写的。
一个通过 BadZure 填充的 Azure 环境现在使红蓝队能够:
BadZure 创建的攻击路径假设初始访问身份已被攻陷。每条攻击路径从一个被攻陷的用户帐户或服务主体开始,模拟攻击者通过凭证盗窃、钓鱼、中间人攻击或其他初始访问技术获得访问权的真实场景。
BadZure 提供这些被攻陷身份的凭证,让安全从业者无需模拟初始入侵即可立即开始探索权限提升路径。这种方法使团队能够专注于理解并防御 Azure 和 Entra ID 环境中的入侵后攻击技术。
BadZure 支持七条不同的权限提升攻击路径,这些路径在 Entra ID 身份和 Azure 云基础设施层中引入错误配置:
每条攻击路径可配置特定或随机角色分配,并根据技术类型支持多种主体类型。有关详细配置选项和攻击路径说明,请参阅文档。
下图为 BloodHound 生成的图谱,展示了 BadZure 可以创建的攻擊路径。
创建 Azure 订阅也会为您提供一个 Entra ID 租户。
注意: BadZure 仅使用 Entra ID 免费层功能,不会产生额外许可费用,但虚拟机、函数应用等 Azure 资源将产生标准计算费用。
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# 在 Windows 上
venv\Scripts\activate
# 在 Unix 或 MacOS 上
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
您必须以 Entra ID 中的全局管理员身份登录,并在 Azure 订阅上拥有所有者 RBAC 角色:
az login
# 显示帮助菜单
python badzure.py --help
# 使用默认的 badzure.yml 配置文件填充租户并配置所有攻击路径
python badzure.py build
# 使用不同的配置文件填充租户并配置所有攻击路径
python badzure.py build --config config.yml
# 显示 Entra ID 租户中已创建的资源
python badzure.py show
# 销毁所有已创建的身份(详细日志输出)
python badzure.py destroy --verbose
完整文档位于 www.badzure.com,包括入门指南、配置参考以及详细的攻击路径说明。
本项目采用 Apache 2.0 许可证授权 - 详见 LICENSE 文件。