CloudFox 帮助你在陌生的云环境中获得态势感知。它是一个开源命令行工具,旨在帮助渗透测试人员和其他攻击性安全专业人员发现云基础设施中可利用的攻击路径。
CLOUDFOX 更新必要提示:(2025年12月): 如果你正在使用
cloudfox,你需要使用 v1.17.0 或更高版本。所有早期版本 在 AWS 公共服务映射文件格式变更后已停止工作。
概述
加入我们的 RedSec Discord 服务器
CloudFox 是模块化的(你可以一次运行一个命令),但有一个 aws all-checks 命令可以使用合理的默认值为你运行其他 aws 命令:
cloudfox aws --profile [profile-name] all-checks

CloudFox 设计为由具有有限只读权限的主体执行,但其目的是帮助你在模拟失陷场景(即基于目标的渗透测试)中发现可被利用的攻击路径。
CloudFox 可以与"已发现"的凭据一起使用,类似于使用 weirdAAL 或 enumerate-iam。失败的检查会静默处理,因此返回的任何数据意味着你的"已发现"凭据具有检索该数据所需的访问权限。
完整文档请参考我们的 wiki。
| 提供商 | CloudFox 命令数 |
|---|---|
| AWS | 34 |
| Azure | 4 |
| GCP | 60 |
| Kubernetes | 计划支持 |
选项 1: 下载适用于你平台的最新二进制发行版。
选项 2: 如果你使用 homebrew:brew install cloudfox
选项 3: 安装 Go,使用 go install github.com/BishopFox/cloudfox@latest 从远程源安装
选项 4: 开发者模式:
安装 Go,克隆 CloudFox 仓库并从源代码编译 ```
**Option 5:** 测试一个 bug 修复 ```
git clone [email protected]:BishopFox/cloudfox.git
git checkout seth-dev
go build .
./cloudfox [rest of the command options]
-l 标志指定一个包含配置文件名称列表的文件路径(每行一个名称),或者使用 -a 标志传入所有已存储的配置文件。SecurityAudit + CloudFox 自定义策略其他策略说明(截至 2022 年 9 月):
gcloud auth application-default login)最小化权限(单个项目):
对于单个项目的基本枚举,roles/viewer 角色提供了对大多数资源的读取权限(包括日志、监控和计算/网络查看)。
全面权限(整个组织):
针对整个组织进行全面的安全评估:
注意: 基本的
roles/viewer角色已包含来自roles/logging.viewer、roles/monitoring.viewer和roles/compute.networkViewer的权限,因此无需单独授予这些角色。
必须在你要评估的每个项目中启用相关 API。 GCP API 是项目作用域的。
有关详细的设置说明,请参阅 GCP 设置指南。
关于每个 GCP 命令的详细文档,请参阅 GCP 命令 Wiki。| 提供者 | 命令名称 | 描述 | | - | - | - | | GCP | whoami | 显示已认证 GCP 用户/服务账号的身份上下文 | | GCP | iam | 枚举跨组织、文件夹和项目的 GCP IAM 主体 | | GCP | permissions | 枚举每个 IAM 实体的所有权限,包含完整的继承展开 | | GCP | serviceaccounts | 枚举 GCP 服务账号并进行安全分析 | | GCP | service-agents | 枚举 Google 管理的服务代理 | | GCP | keys | 枚举所有 GCP 密钥(服务账号密钥、HMAC 密钥、API 密钥) | | GCP | resource-iam | 枚举 GCP 资源上的 IAM 策略(存储桶、数据集、密钥等) | | GCP | domain-wide-delegation | 查找具有 Google Workspace 全域委派权限的服务账号 | | GCP | privesc | 识别 GCP 项目中的权限提升路径 | | GCP | hidden-admins | 识别可以修改 IAM 策略的主体(隐藏管理员) | | GCP | identity-federation | 枚举工作负载身份联合(外部身份) | | GCP | instances | 枚举 GCP Compute Engine 实例及其安全配置 | | GCP | gke | 枚举 GKE 集群并进行安全分析 | | GCP | cloudrun | 枚举 Cloud Run 服务及任务并进行安全分析 | | GCP | functions | 枚举 GCP Cloud Functions 并进行安全分析 | | GCP | app-engine | 枚举 App Engine 应用及安全配置 | | GCP | composer | 枚举 Cloud Composer 环境 | | GCP | dataproc | 枚举 Dataproc 集群 | | GCP | | 枚举 Dataflow 任务及管道 | | GCP | | 枚举 Vertex AI Workbench 笔记本 | | GCP | | 枚举 GKE 工作负载身份及工作负载身份联合 | | GCP | | 快速资源清单 — 无需 Cloud Asset API | | GCP | | 枚举 GCP Cloud Storage 存储桶及其安全配置 | | GCP | | 枚举 GCS 存储桶中的敏感文件(凭据、密钥、配置) | | GCP | | 枚举 GCP BigQuery 数据集及表并进行安全分析 | | GCP | | 枚举 Cloud SQL 实例并进行安全分析 | | GCP | | 枚举 Cloud Spanner 实例及数据库 | | GCP | | 枚举 Cloud Bigtable 实例及表 | | GCP | | 枚举 Filestore NFS 实例 | | GCP | | 枚举 Memorystore (Redis) 实例 | | GCP | | 枚举 VPC 网络 | | GCP | | 枚举 VPC 网络及防火墙规则并进行安全分析 | | GCP | | 枚举负载均衡器 | | GCP | | 枚举 Cloud DNS 区域及记录并进行安全分析 | | GCP | | 枚举所有网络端点(外部及内部),包括 IP、端口和主机名 | | GCP | | 枚举 Private Service Connect 端点及服务附加组件 | | GCP | | 可视化 VPC 网络拓扑、对等关系及信任边界 | | GCP | | 枚举 VPC Service Controls | | GCP | | 枚举 Access Context Manager 访问级别 | | GCP | | 枚举 Cloud Armor 安全策略并发现弱点 | | GCP | | 枚举 Identity-Aware Proxy 配置 | | GCP | | 枚举 BeyondCorp Enterprise 配置 | | GCP | | 枚举 Cloud KMS 密钥环及加密密钥并进行安全分析 | | GCP | | 枚举 GCP Secret Manager 密钥及其安全配置 | | GCP | | 枚举 SSL/TLS 证书并查找即将过期或配置错误的证书 | | GCP | | 枚举组织策略并识别安全弱点 | | GCP | | 枚举 GCP Artifact Registry 及 Container Registry 及其安全配置 | | GCP | | 枚举 Cloud Build 触发器及构建 | | GCP | | 枚举 Cloud Source Repositories | | GCP | | 枚举 Cloud Scheduler 任务并进行安全分析 | | GCP | | 枚举 Pub/Sub 主题及订阅并进行安全分析 | | GCP | | 枚举 Cloud Logging 接收器及指标并进行安全分析 | | GCP | | 枚举 GCP 组织层级结构 | | GCP | | 枚举 Cloud Asset Inventory,可附带依赖分析 | | GCP | | 枚举备份策略、受保护资源并识别备份缺口 | | GCP | | 绘制横向移动路径、凭据窃取向量及跳板机会 | | GCP | | 识别数据外泄路径、潜在向量及缺失的安全加固 | | GCP | | 在 16 个 GCP 服务中查找具有 allUsers/allAuthenticatedUsers 访问权限的资源 | | GCP | | 分析跨项目的 IAM 绑定、日志接收器及 Pub/Sub 导出以实现横向移动 | | GCP | | 运行 FoxMapper(基于图的 IAM 分析)以发现权限提升路径 | | GCP | | 扫描 Cloud Logging 条目中的敏感数据(凭据、令牌、PII) | | GCP | | 扫描 BigQuery 数据集、表及列中的敏感数据指示符 | | GCP | | 扫描 Bigtable 实例、表及列族中的敏感数据指示符 | | GCP | | 扫描 Spanner 数据库模式中的敏感表名和列名 |
CloudFox 与 ScoutSuite、Prowler、Steampipe 的 AWS 合规模块、AWS Security Hub 等相比如何?
CloudFox 不生成任何警报或发现,也不检查您的环境是否符合基准或标准。相反,它只是让您在手动渗透测试活动中更高效。它为您提供验证攻击路径是否可能所需的信息。
为什么我在某些 CloudFox 命令中看到错误?
您可以随时查看 ~/.cloudfox/cloudfox-error.log 文件以获取更多错误信息。
endpoints 命令的灵感来源endpoints 命令的灵感来源iam-simulator 命令的灵感来源,并强烈推荐与之一同使用permissions 命令的灵感来源instances 命令中的 --userdata 功能、permissions 命令等提供了灵感。inventory 命令以及整个 CloudFox 的灵感来源。| 策略 | 说明 |
|---|
| CloudFox 自定义策略 | 包含了 cloudfox 使用的所有权限的完整列表,无其他多余权限 |
arn:aws:iam::aws:policy/SecurityAudit | 覆盖了 cloudfox 的大部分检查,但缺少较新的服务或权限,如 apprunner:*、grafana:*、lambda:GetFunctionURL、lightsail:GetContainerServices |
arn:aws:iam::aws:policy/job-function/ViewOnlyAccess | 覆盖了 cloudfox 的大部分检查,但缺少较新的服务或权限,如 AppRunner:*、grafana:*、lambda:GetFunctionURL、lightsail:GetContainerServices —— 同时还缺少 iam:SimulatePrincipalPolicy。 |
arn:aws:iam::aws:policy/ReadOnlyAccess | 仅缺少 AppRunner,但同时也授予了诸如 "s3:Get*" 等权限,这可能过于宽松。 |
arn:aws:iam::aws:policy/AdministratorAccess | CloudFox 可以正常使用,但如果你以渗透测试人员的身份获得了这一级别的访问权限,这本身可能就是一个发现项 :) |
| 范围 | 角色 | 用途 |
|---|
| 组织 | roles/resourcemanager.organizationViewer | 查看组织结构和元数据 |
| 组织 | roles/iam.securityReviewer | 审查整个组织的 IAM 策略 |
| 组织 | roles/cloudasset.viewer | 查询 Cloud Asset Inventory 获取所有资源 |
| 组织 | roles/cloudidentity.groupsViewer | 枚举 Google 群组和成员资格 |
| 文件夹 | roles/resourcemanager.folderViewer | 查看文件夹层级和元数据 |
| 项目 | roles/viewer | 对大多数项目资源的读取权限(包含 logging.viewer、monitoring.viewer、compute.viewer) |
| 工具项目 | roles/serviceusage.serviceUsageAdmin | (可选)管理 CloudFox 操作的 API 配额 |
| API | 服务名称 | 用途 |
|---|
| Cloud Identity API | cloudidentity.googleapis.com | 群组枚举、继承角色分析 |
| Cloud Asset API | cloudasset.googleapis.com | 跨项目资源发现 |
| Cloud Resource Manager API | cloudresourcemanager.googleapis.com | 组织映射、IAM 枚举 |
| IAM API | iam.googleapis.com | IAM 分析、权限提升检测 |
| Compute Engine API | compute.googleapis.com | 实例枚举、网络安全 |
| Secret Manager API | secretmanager.googleapis.com | 密钥枚举 |
| Cloud Functions API | cloudfunctions.googleapis.com | 无服务器枚举 |
| Cloud Run API | run.googleapis.com | 无服务器枚举 |
| Kubernetes Engine API | container.googleapis.com | 容器安全分析 |
| BigQuery API | bigquery.googleapis.com | 数据安全分析 |
| 提供商 | 命令名称 | 描述 |
|---|
| AWS | all-checks | 使用合理的默认值运行所有其他命令。你仍然需要检查每个命令的非默认选项,但这是一个很好的起点。 |
| AWS | access-keys | 列出所有用户的活跃访问密钥。有助于交叉引用你找到的密钥属于哪个作用域内的账户。 |
| AWS | api-gw | 列出 API 网关端点,并提供自定义 curl 命令,如果 API 令牌存储在元数据中,还会包含它们。 |
| AWS | buckets | 列出账户中的存储桶,并提供方便的命令以进一步检查它们。 |
| AWS | cape | 枚举跨账户权限提升路径。需要先运行 pmapper |
| AWS | cloudformation | 列出账户中的 CloudFormation 堆栈。生成包含堆栈详情、堆栈参数和堆栈输出的 loot 文件——查找其中的机密信息。 |
| AWS | codebuild | 枚举 CodeBuild 项目 |
| AWS | databases | 枚举 RDS 数据库。获取包含连接字符串的 loot 文件。 |
| AWS | ecr | 列出所有仓库中最新的镜像 URI。使用 loot 文件通过 docker/nerdctl 拉取选定镜像进行检查。 |
| AWS | ecs-tasks | 列出所有 ECS 任务。返回 ECS 任务列表及关联的集群、任务定义、容器实例、启动类型和关联的 IAM 主体。 |
| AWS | eks | 列出所有 EKS 集群,检查其端点是否公开,并检查附加到集群或节点组的关联 IAM 角色。生成包含连接到每个集群所需的 aws eks update-kubeconfig 命令的 loot 文件。 |
| AWS | elastic-network-interfaces | 列出所有 ENI 信息。返回 ENI ID、类型、外部 IP、私有 IP、VPC ID、附加实例和描述。 |
| AWS | endpoints | 枚举各种服务的端点。从内部和外部位置扫描这些端点,以查找无需认证、配置错误等的情况。 |
| AWS | env-vars | 从具有环境变量的服务中获取环境变量(支持 App Runner、ECS、Lambda、Lightsail 容器、Sagemaker。如果你发现敏感密钥,请使用 cloudfox iam-simulator 和 pmapper 查看谁有权访问它们。 |
| AWS | filesystems | 枚举 EFS 和 FSx 文件系统,你可以在没有凭据的情况下挂载它们(如果你有正确的网络访问权限)。例如,当你拥有 ec2:RunInstance 但没有 iam:PassRole 时非常有用。 |
| AWS | iam-simulator | 类似于 pmapper,但使用 IAM 策略模拟器。它使用 AWS 的评估逻辑,但值得注意的是,它不考虑通过权限提升获得的传递性访问,这就是为什么你还应该始终使用 pmapper 的原因。 |
| AWS | instances | 枚举所有区域 EC2 实例的有用信息,如名称、公有/私有 IP 和实例配置文件。生成可供 nmap 和其他工具进行服务枚举的 loot 文件。 |
| AWS | inventory | 大致了解账户的大小和首选区域。 |
| AWS | lambda | 列出账户中的 Lambda 函数,包括哪些函数附带了管理员角色。还提供用于下载每个函数的有用命令。 |
| AWS | network-ports | 枚举可能暴露网络服务的 AWS 服务。解析每个资源的安全组和网络 ACL,以确定可能暴露的端口。 |
| AWS | orgs | 枚举组织中的账户 |
| AWS | outbound-assumed-roles | 列出已被此账户中的主体承担的角色的列表。这是发现通向其他账户的出站攻击路径的绝佳方式。 |
| AWS | permissions | 枚举与所有用户和角色关联的 IAM 权限。通过 grep 输出来确定特定主体拥有哪些权限,而无需登录 AWS 控制台并逐一扩展附加到被调查主体的每个策略。 |
| AWS | pmapper | 在本地文件系统上查找 pmapper 数据,位置参见 此处定义的位置。如果找到了 pmapper 数据(你已经运行了 pmapper graph create),那么此命令将使用这些数据在 cloudfox 内存中构建一个图,让你知道谁能通过权限提升达到管理员权限。 |
| AWS | principals | 枚举 IAM 用户和角色,以便你随时掌握数据。 |
| AWS | ram | 列出此账户中与其他账户共享的所有资源,或其他账户与此账户共享的资源。用于发现跨账户攻击路径。 |
| AWS | resource-trusts | 检查多个支持资源策略的服务,帮助你发现任何过于宽松的资源信任关系。KMS 默认受支持但默认禁用。要在输出中包含 KMS 资源策略,请在命令中添加此标志:cloudfox aws resource-trusts --include-kms。 |
| AWS | role-trusts | 枚举 IAM 角色信任策略,以便你查找过于宽松的角色信任关系或找到信任特定服务的角色。 |
| AWS | route53 | 枚举所有 route53 托管区域中的所有记录。用于应用程序和服务枚举。 |
| AWS | secrets | 列出 SecretsManager 和 SSM 中的密钥。在列表中查找感兴趣的密钥,然后使用 cloudfox iam-simulator 和/或 pmapper 查看谁有权访问它们。 |
| AWS | sns | 此命令枚举所有 SNS 主题,并提供用于订阅主题或向主题发送消息的命令(前提是你具备所需的权限)。此命令仅处理主题,不涉及 SMS 功能。此命令还会尝试总结主题资源策略(如果存在)。 |
| AWS | sqs | 此命令枚举所有 SQS 队列,并提供用于从队列接收消息和向队列发送消息的命令(前提是你具备所需的权限)。此命令还会尝试总结队列资源策略(如果存在)。 |
| AWS | tags | 列出所有带有标签的资源及其所有标签。这可以像 inventory 一样用于识别账户中存在哪些类型的资源。 |
| AWS | workloads | 列出所有计算工作负载及其关联的角色。提示哪些角色是管理员(不良),如果你本地有 pmapper 数据,它会提示哪些角色可以通过权限提升达到管理员权限(同样不良) |
| AWS | ds | 列出所有 AWS 管理的目录及其属性。同时总结当前信任关系及其方向和类型。 |
| 提供商 | 命令名称 | 描述 |
|---|
| Azure | whoami | 显示当前 Azure CLI 会话可用的租户、订阅和资源组信息。有助于了解当前会话的租户和订阅 ID,以便与其他子命令配合使用。 |
| Azure | inventory | 按位置显示所有资源的清单表。 |
| Azure | rbac | 列出订阅或租户级别的 Azure RBAC 角色分配 |
| Azure | storage | storage 命令仍在开发中。目前仅显示存储账户的有限数据 |
| Azure | vms | 枚举所有可用资源组和订阅中计算实例的有用信息 |