HarrierSecurity/HarrierOps-Azure

GitHub: HarrierSecurity/HarrierOps-Azure

一款面向 Azure 的攻击路径侦察 CLI 工具,聚焦身份关系与横向移动分析以辅助安全评估与威胁狩猎。

Stars: 1 | Forks: 0

# HarrierOps Azure 在信息过载淹没你之前,发现攻击路径、横向移动机会以及在 Azure 中的移动方式。 大多数 Azure 工具告诉你存在什么。 HarrierOps Azure 告诉你一个身份如何在那些资源之间移动。 大多数 Azure 工具倾倒权限。 HarrierOps Azure 优先突出显示哪些关系、横向移动和提升路径最重要。 附带的 CLI 二进制文件是 `ho-azure`。 ## 为什么这很重要 你拥有: - 一个 compromised user - 服务主体访问权限 - 托管身份 foothold - 部分订阅可见性 你需要快速回答: - 我实际持有的是哪个身份? - 它现在能控制什么? - 它接下来可以横向移动到哪? - 哪条路径最可能成为权限提升或更广 Azure 控制? HarrierOps Azure 就是为这个工作流而构建的。 ## 为什么与众不同 - 以攻击路径思维,而非以清单优先的报告 - 以横向移动为先的工作流,而非孤立命令输出 - 关注身份与权限关系,而不仅仅是原始角色列表 - 提供操作指引,指向值得调查的下一步路径 - 比单纯的 foothold 检查更全面:适用于移动、影响与后续访问 ## 核心能力 - 显示当前活动的 Azure 身份、令牌上下文与作用域 - 暴露高影响 RBAC 与权限关系,这些关系会改变当前身份的能力 - 映射身份信任、服务主体所有权、联合凭证与跨租户边界 - 突出通过工作负载、托管身份、部署系统与承载密钥的配置所构成的横向移动路径 - 暴露提升机会与可能的下一步操作,而不是让你去整理原始 Azure 数据 ## 安装 从源码构建: ``` go build -o ho-azure ./cmd/azurefox ``` 如果你想在不先创建本地二进制文件的情况下运行: ``` go run ./cmd/azurefox help ``` ## 操作员工作流 从你拥有的身份开始,然后向外推进以实现移动与影响。 典型流程: - `whoami`:确认当前的 foothold、令牌上下文与订阅范围 - `permissions`:识别该身份已经拥有的控制权限 - `privesc`:暴露当前访问权限下的直接滥用或提升路径 - `role-trusts` 和 `cross-tenant`:查找身份控制转换与租户边界横向移动 - `tokens-credentials` 和 `chains`:跟踪令牌、密钥与部署线索,寻找下一个可用的路径 ## 操作员结果 一次完整运行后,你应该知道: - 哪个身份最重要 - 哪些访问是真实的,而不仅仅是可见的 - 最佳的横向移动机会在哪里 - 哪条攻击路径值得优先跟进 HarrierOps Azure 通过优先排序影响来减少噪音,而不仅仅是返回 Azure 对象。 ## 使用场景 - 对 compromised user、服务主体或托管身份进行故障排查,并确定其能启用的 Azure 控制 - 评估服务主体或应用关系是否创建了横向移动或提升路径 - 从订阅或租户可见性向外推进,识别跨资源与跨租户的移动 ## 运行 从当前 Azure 身份与最强可见控制路径开始: ``` ho-azure whoami ho-azure permissions ``` ## 当前支持的 Azure 命令 ### 编排 | 分组命令 | 实时家族 | | --- | --- | | `chains`
分组路径视图,将最强的 Azure 横向移动故事置顶。 | `credential-path`
将暴露的密钥与令牌线索转化为最可能扩大访问的下游目标。

`deployment-path`
暴露最可能让攻击者变更 Azure 的构建、流水线与自动化路径。

`escalation-path`
突出显示从当前 foothold 到更强 Azure 控制的最清晰可见路径。

`compute-control`
查找已经可以生成身份支持访问并横向扩展到更广控制的工作负载。 | ### 平铺命令 | 分类 | 命令 | | --- | --- | | `core` | `inventory` | | `identity` | `whoami`, `rbac`, `principals`, `permissions`, `privesc`, `role-trusts`, `lighthouse`, `cross-tenant`, `auth-policies`, `managed-identities` | | `config` | `arm-deployments`, `env-vars` | | `secrets` | `keyvault`, `tokens-credentials` | | `resource` | `automation`, `devops`, `acr`, `api-mgmt`, `databases`, `resource-trusts` | | `storage` | `storage` | | `network` | `application-gateway`, `nics`, `dns`, `endpoints`, `network-effective`, `network-ports` | | `compute` | `workloads`, `app-services`, `functions`, `container-apps`, `container-instances`, `aks`, `vms`, `vmss`, `snapshots-disks` | ## 需要测试环境? 使用配套的 HarrierOps Azure 实验仓库进行实时验证,当你希望获得后端真实行为时。 本仓库中的静态提供者用于确定性本地检查与测试,**不能替代**真实的 Azure 支持实验环境。 ## CLI 调用 共享标志如 `--tenant`、`--subscription`、`--output`、`--outdir`、`--debug` 和 `--devops-organization` 在命令前后均可使用。 以下形式等价: ``` ho-azure dns --output json --outdir ./ho-azure-demo ho-azure --output json --outdir ./ho-azure-demo dns ``` 使用 `ho-azure --help` 或 `ho-azure help ` 获取命令特定帮助。 ## 安装配置 HarrierOps Azure 默认构建实时 Azure 运行时路径,因此普通源码构建即可用于真实的 Azure 命令执行。 对于本地二进制文件: ``` go build -o ho-azure ./cmd/azurefox ``` 对于直接从检出运行: ``` go run ./cmd/azurefox whoami ``` 对于本地开发: ``` go test ./... ``` HarrierOps Azure 在 macOS、Linux 与 Windows 上均可运行。下面的命令示例使用可移植的相对路径如 `./ho-azure-demo`;shell 语法主要因环境变量导出与二进制调用而不同。 实时操作指引内建于 `ho-azure help` 与 `ho-azure help `。 - `go build -o ho-azure ./cmd/azurefox` 从本地检出构建标准操作二进制文件 - `go run ./cmd/azurefox ...` 直接从源码运行相同的实时 Azure 命令配置 - `go test ./...` 运行 Go 仓库的贡献者验证基线 ## 认证优先级 1. Azure CLI 凭据 2. 环境凭据 ### 支持的身份验证矩阵 | 路径 | 启动方式 | 当前支持 | 元数据 `auth_mode` | | --- | --- | --- | --- | | 通过 Azure CLI 的交互式用户 | `az login` | 支持 | `azure_cli` | | 通过 Azure CLI 的服务主体 | `az login --service-principal ...` | 通过 Azure CLI 支持 | `azure_cli` | | 通过 Azure CLI 的托管身份 | `az login --identity` | 通过 Azure CLI 支持 | `azure_cli` | | 通过环境变量使用服务主体客户端密钥 | `AZURE_TENANT_ID` + `AZURE_CLIENT_ID` + `AZURE_CLIENT_SECRET` | 支持 | `environment` | | 通过环境变量使用服务主体证书 | `AZURE_TENANT_ID` + `AZURE_CLIENT_ID` + `AZURE_CLIENT_CERTIFICATE_PATH` | 支持 | `environment` | | Azure CLI 失败后的环境回退 | 当 CLI 认证不可用但环境认证成功时自动回退 | 支持 | `environment_fallback` | HarrierOps Azure 不会启动自己的浏览器或托管身份登录流程。它依赖 Azure Identity: - `AzureCliCredential` 用于活跃的 Azure CLI 登录状态 - `EnvironmentCredential` 用于支持的服务主体环境变量 ### 通过 Azure CLI 的交互式用户 如果你希望使用基于 Web 的认证,请先在外部的 `az login` 运行,然后运行 `ho-azure`。 Azure CLI 示例: ``` az login az account set --subscription ho-azure inventory --subscription ``` ### 通过 Azure CLI 的服务主体 这适用于希望 Azure CLI 保持活跃登录状态的无人值守自动化。 使用客户端密钥: ``` az login --service-principal \ --username \ --password \ --tenant az account set --subscription ho-azure whoami --subscription ``` 使用证书: ``` az login --service-principal \ --username \ --certificate /path/to/certificate.pem \ --tenant az account set --subscription ho-azure whoami --subscription ``` ### 通过环境变量使用服务主体客户端密钥 如果你不想使用 Azure CLI 登录状态,设置服务主体环境变量并 传递用于目标租户或订阅的 CLI 标志。 环境客户端密钥示例: ``` # macOS/Linux export AZURE_TENANT_ID= export AZURE_CLIENT_ID= export AZURE_CLIENT_SECRET= export AZUREFOX_DEVOPS_ORG= # only needed for the devops command ho-azure whoami --tenant --subscription ``` ``` # Windows PowerShell $env:AZURE_TENANT_ID="" $env:AZURE_CLIENT_ID="" $env:AZURE_CLIENT_SECRET="" $env:AZUREFOX_DEVOPS_ORG="" # only needed for the devops command ho-azure whoami --tenant --subscription ``` ### 通过环境变量使用服务主体证书 ``` # macOS/Linux export AZURE_TENANT_ID= export AZURE_CLIENT_ID= export AZURE_CLIENT_CERTIFICATE_PATH=/path/to/certificate.pem export AZURE_CLIENT_CERTIFICATE_PASSWORD= ho-azure whoami --tenant --subscription ``` ``` # Windows PowerShell $env:AZURE_TENANT_ID="" $env:AZURE_CLIENT_ID="" $env:AZURE_CLIENT_CERTIFICATE_PATH="C:\\path\\to\\certificate.pem" $env:AZURE_CLIENT_CERTIFICATE_PASSWORD="" ho-azure whoami --tenant --subscription ``` ### 通过 Azure CLI 的 Azure 托管身份 这适用于已在 Azure 资源上附加了托管身份的运行情况。 ``` az login --identity az account set --subscription ho-azure whoami --subscription ``` 对于用户分配的托管身份: ``` az login --identity --client-id az account set --subscription ho-azure whoami --subscription ``` `AZUREFOX_DEVOPS_ORG` 仅在运行 `devops` 命令时需要。`devops` 使用的身份仍需要对 Azure DevOps 组织有访问权限,而不仅仅是对租户或订阅的 ARM 访问。 ## 输出模式 - `--output table`(默认) - `--output json` - `--output csv` 所有命令都会在 `/` 下写入工件: - `loot/.json` - `json/.json` - `table/.txt` - `csv/.csv` 工件意图: - `json/` 是完整的命令结构化记录 - `loot/` 是较小的关键交接,专注于最高优先级的目标以便快速后续操作与链式工作流 - `table/` 和 `csv/` 是从同一底层命令结果渲染的便捷视图 ## 分区与链条 HarrierOps Azure 同时支持独立扁平命令与通过 `chains` 进行分组执行。 对于当前专注的工作: - 直接运行扁平命令,当你已知要使用的路径 - 使用 `chains`,当你希望获得更高价值的分组答案,而非逐个执行所有源命令 当前分区映射: - `identity`: `whoami`, `rbac`, `principals`, `permissions`, `privesc`, `role-trusts`, `lighthouse`, `cross-tenant`, `auth-policies`, `managed-identities` - `config`: `arm-deployments`, `env-vars` - `secrets`: `keyvault`, `tokens-credentials` - `resource`: `automation`, `devops`, `acr`, `api-mgmt`, `databases`, `resource-trusts` - `storage`: `storage` - `network`: `application-gateway`, `nics`, `dns`, `endpoints`, `network-effective`, `network-ports` - `compute`: `workloads`, `app-services`, `functions`, `container-apps`, `container-instances`, `aks`, `vms`, `vmss`, `snapshots-disks` - `core`: `inventory` - `orchestration`: `chains` 当前 `chains` 家族: - `credential-path` - `deployment-path` - `escalation-path` - `compute-control` ## 帮助 HarrierOps Azure 支持通用与命令专属帮助: ``` ho-azure help ho-azure help identity ho-azure help permissions ho-azure dns --help ho-azure -h identity ho-azure -h permissions ``` 命令帮助包含 ATT&CK 云指引作为调查提示,而非证明某技术已发生。 帮助也指向相关的 `chains` 作为分组后续路径。 对于临时演示或本地测试,使用专用路径如 `--outdir ./ho-azure-demo`,以便工件不会堆积在仓库根目录。 ## 静态提供者模式 设置 `AZUREFOX_PROVIDER=static` 以使用确定性静态提供者而非实时 Azure API。 ``` # macOS/Linux AZUREFOX_PROVIDER=static ho-azure rbac --output json ``` ``` # Windows PowerShell $env:AZUREFOX_PROVIDER="static" ho-azure rbac --output json ``` 如果未设置 `AZUREFOX_PROVIDER`,HarrierOps Azure 默认使用实时 Azure 收集。 ## 开发 ``` gofmt -w ./cmd ./internal go test ./... bash scripts/setup_local_guardrails.sh ``` CI 应覆盖确定性命令表面,再推进发布门控变更。 ## 致谢 HarrierOps Azure 基于 AzureFox 移植工作构建,并受 [CloudFox](https://github.com/BishopFox/cloudfox) 启发(由 Bishop Fox 创建)。 ## 许可证 HarrierOps Azure 在 MIT 许可证下授权。请参见 [LICENSE](LICENSE)。
标签:Azure, EVTX分析, FTP漏洞扫描, Go语言, PB级数据处理, RBAC, 云侦察, 云资产发现, 协议分析, 威胁建模, 安全编排, 安全运维, 托管身份, 攻击路径, 文档结构分析, 日志审计, 服务主体, 权限关系, 权限提升, 横向移动, 程序破解, 编程规范, 跨租户, 路径分析, 身份信任, 身份管理