用于授权 Azure 安全评估的 Go 工具包:枚举订阅和资源,审计错误配置,并匿名攻击公共 Blob 存储。
azpt)🚧 公开测试版。
azpt正在积极开发中——命令、标志和输出格式在版本之间仍可能发生变化。欢迎通过 GitHub issues 提交错误报告和反馈。
azpt 是一个用于授权 Azure 安全评估的 Go 工具包。它从两个视角工作:
⚠️ 仅限授权使用。 仅针对你拥有明确书面许可进行测试的租户、订阅和存储账户运行此工具。匿名
blob命令会通过互联网接触第三方基础设施——请将其限定在你的授权范围内。
以下所有示例均针对一个虚构的 Acme Corp,其静态营销站点托管在名为 acmewebsite 的 Azure 存储账户上(https://acmewebsite.blob.core.windows.net)。
完整文档位于 docs/:
docs/guides/)——按功能划分:该技术如何工作、它所需的确切 Azure RBAC / Microsoft Graph 权限、关键标志的说明、示例,以及 OPSEC / 检测注意事项——按交战阶段组织。docs/guides/scenarios/)——端到端的攻击叙述,跨阶段串联命令(令牌 → 全局管理员、Golden SAML 接管、PRT 窃取、同意钓鱼 → M365、托管身份横向移动、离线目录搜寻、设备代码钓鱼),每个都包含 OPSEC 和清理步骤。docs/reference/)——每个命令自动生成的页面,包含所有标志(名称、简写、类型、默认值、描述)。使用 azpt gen-docs docs/reference 重新生成;相同信息可通过 azpt <command> --help 打印。从最新发布下载适用于你平台的归档文件,验证并解压:```bash
tar -xzf azpt_.tar.gz sha256sum -c --ignore-missing SHA256SUMS
二进制文件是静态的(`CGO_ENABLED=0`),无需运行时依赖。
构建版本发布在 linux 和 darwin 上的 amd64 和 arm64 架构。
Windows 二进制文件未发布。仅限 Windows 的辅助工具(`prt extract`、
`adconnect sync-creds`、DPAPI)仍可在 Windows 主机上通过 `go build -o
azpt.exe .` 从源码构建。
### 从源码构建
需要 Go 1.26+。```bash
git clone https://github.com/hac01/azure-pentesting-suite.git
cd azure-pentesting-suite
go build -o azpt .
这会在仓库根目录生成一个自包含的 azpt 二进制文件。你也可以在仓库目录下通过 go run . <command> 直接运行,无需构建。
匿名 blob 命令无需 Azure 登录:```bash
./azpt blob hunt --account acmewebsite
使用 Azure 凭据(`az login`),从内部进行评估——包括资源平面(ARM)和目录(Entra ID / Graph):```bash
./azpt enum whoami # who am I authenticated as?
./azpt enum subscriptions # what subscriptions can this principal see?
./azpt audit storage # misconfigured storage accounts
./azpt enum users # dump the Entra ID directory (Graph)
一个常见的攻击链:使用 blob hunt 匿名恢复凭据,以该用户身份登录(az login),通过 enum access 检查其权限,然后掠夺任何你能访问到的 Key Vault:```bash
./azpt enum access # token scopes, directory roles, groups, RBAC roles
./azpt enum resources # find Key Vaults (type: vaults)
./azpt vault list --vault ext-contractors # secrets, keys, certs in that vault
./azpt vault dump --vault ext-contractors # read every secret value (the loot)
---
## 身份验证
匿名 `blob` 命令**无需**身份验证。其他所有操作均使用
Azure **默认凭据链**,该链按顺序尝试:环境变量、
工作负载标识、托管标识以及 Azure CLI(`az login`)。```bash
az login
./azpt enum subscriptions
强制使用显式的 service-principal 身份验证(适用于限定范围的评估身份),可通过标志或环境变量进行配置。还没有?az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id> 可以创建一个——完整操作步骤请参阅入门指南,其中包括仅靠 RBAC 无法授予的 Graph 权限:```bash
./azpt --tenant --client-id --client-secret
enum subscriptions
export AZURE_TENANT_ID=... AZURE_CLIENT_ID=... AZURE_CLIENT_SECRET=... ./azpt enum subscriptions
**基于证书的**认证(PFX 或 PEM):```bash
./azpt --tenant <tenant-id> --client-id <app-id> \
--certificate ./cert.pfx --cert-password 'P@ss' \
enum subscriptions
使用 --subscription 将经过身份验证的运行范围限定到特定订阅
(可重复);默认是主体能够访问的每个订阅:```bash
./azpt --subscription 00000000-1111-2222-3333-444444444444 audit storage
---
## 命令参考
🧪 表示该命令仍处于 **beta** 阶段:已实现且可用,但相比套件中的其他命令
未经充分实战检验——预计会有较粗糙的边缘情况,如遇到问题请反馈。