逆向工程实战手册 第 87 章

第 87 章 云安全全景(AWS / Azure / GCP 权限与攻击面)

前几章讲了云元数据(68)、云原生容器(54);本章是云安全的"全景图":三大云厂商的权限模型、核心服务攻击面、云渗透方法论。云攻击的核心认知:云的边界是"身份与权限",不是"网络"。

📍 知识点地图 | 主题:云安全全景 | 前置:第54/68章 | 后续:— | 核心概念:IAM、Role、S3、凭证枚举、pacu

87.1 云安全模型(先懂范式转变)

传统 vs 云:
  传统: 网络边界(防火墙)→ 信任"网络内"
  云: 身份边界(IAM)→ 信任"谁有权限"

云的攻击面:
  □ 身份与访问管理(IAM): 凭证/角色/策略 ← 核心
  □ 计算: EC2/容器/函数
  □ 存储: S3/Blob/对象存储(配置错误高发)
  □ 数据库: RDS/托管 DB
  □ 网络: VPC/安全组
  □ 密钥管理: KMS/Secret
  □ 配置: 云配置错误(CloudMisconfiguration)

共性: 一切围绕"凭证 + 权限"——拿到有效凭证 = 进入云

87.2 AWS 权限模型(最常用,重点学)

核心概念

IAM 身份:
  IAM User(人/服务)
  IAM Role(临时凭证,EC2/Lambda 等绑定)
  IAM Policy(权限策略: 谁对什么资源有什么操作)

临时凭证链:
  资源绑定 Role → 资源运行时通过元数据/凭证服务获取临时凭证
  → 凭证有效期短(1h 内)+ 自动刷新

访问方式:
  AWS CLI(本地配置)/ 控制台 / API / SDK

攻击面与利用(按权限枚举)

拿到一组凭证后(第 68 章的起点):
  1. 身份确认: sts get-caller-identity
  2. 权限枚举: pacu / 手工(第 68.4)
  3. 服务攻击:
     S3: 列出/读/写(数据)
     EC2: 读用户数据/创建实例/SSM
     SecretsManager: 读密钥
     Lambda: 读环境变量/创建函数
     IAM: 加用户/加权限(持久化)
     CloudTrail: 读日志(发现其他凭证)
  4. 横向: 元数据凭证跳转/角色切换(sts assume-role)
  5. 持久化: IAM 后门/备用凭证

S3 配置错误(最常被扫到)

□ 公开读(公有桶): 直接下载数据
□ 公开写: 上传恶意文件(钓鱼/投毒)
□ 列举权限: 枚举所有对象
□ 错误策略: 通配符权限

枚举工具: awscli / cloudfox / s3scanner(批量扫公开桶)

87.3 Azure 权限模型

核心概念

身份: Entra ID(原 Azure AD)用户/服务主体/托管身份
资源层级: 管理组 → 订阅 → 资源组 → 资源
角色: Azure RBAC(角色分配: 谁对什么范围有什么权限)
特权身份: PIM(特权身份管理,JIT 提权)

托管身份(Managed Identity): 类似 AWS Role
  → 元数据端点: 169.254.169.254/metadata/identity/oauth2/token

攻击面

□ 密码喷洒(第 59 章): 对 Entra ID 登录
□ OAuth 应用滥用(第 69 章): App Consent
□ 托管身份凭证: 元数据获取 → 以服务身份访问
□ 角色分配错误: 过大的 RBAC 角色
□ 资源攻击: Blob 公开/密钥保管库(Key Vault)读取
□ Azure DevOps: CI/CD 凭证

工具: MicroBurst(Azure 枚举)、az cli、Stormspotter(可视化)

87.4 GCP 权限模型

身份: Google 账号/服务账号(SA)
层级: 组织 → 项目 → 资源
角色: IAM 角色(预定义/自定义)
服务账号: 类似 AWS Role(元数据端点获取 token)

攻击面:
  □ 服务账号密钥(JSON 文件,常泄露在 GitHub)
  □ 元数据 token(第 68 章)
  □ GCS 桶公开/错误配置
  □ Cloud Functions 环境变量(密钥)
  □ 组织策略错误

工具: gcloud CLI、GCPwn

87.5 云渗透方法论(通用流程)

Phase 1: 识别云环境
  □ 目标是否在云(IP 归属/CDN/响应头)
  □ 哪个厂商(AWS/Azure/GCP/阿里云)
  □ 资产盘点(子域→云资源映射)

Phase 2: 获取凭证(入口)
  □ 元数据(SSRF/容器内,第 68 章)
  □ 泄露(GitHub/前端/配置文件)
  □ 弱口令(云控制台/SSH 密钥)
  □ 供应链(第三方云集成)

Phase 3: 凭证利用(枚举+扩大)
  □ 身份确认 → 权限枚举(pacu/MicroBurst/GCPwn)
  □ 服务级攻击(数据/计算/密钥)
  □ 横向(角色切换/其他服务)

Phase 4: 持久化与影响
  □ 后门凭证/角色
  □ 数据影响评估
  □ 报告: 完整路径

工具总览:
  pacu(AWS 渗透框架)
  MicroBurst(Azure)
  GCPwn / gcloud
  cloudfox(跨厂商权限可视化)
  ScoutSuite(云配置审计,蓝队)

87.6 云配置审计(蓝队视角)

ScoutSuite / Prowler(AWS)/ 各云安全中心:
  □ IAM 策略审计(过宽权限/根用户无 MFA)
  □ 存储公开检查(S3/Blob/GCS)
  □ 密钥轮换(长期密钥)
  □ 日志缺失(CloudTrail 未开)
  □ 网络配置(安全组过宽)
  □ 托管身份滥用面

原则: 云安全 = 最小权限 + 全面审计 + 凭证保护

87.7 云攻击检查清单

□ 云环境识别(厂商/资产)
□ 凭证获取路径(元数据/泄露/弱口令)
□ 身份确认与权限枚举
□ 服务攻击(存储/计算/密钥/数据库)
□ 横向(角色/订阅/项目)
□ 持久化(后门凭证)
□ 数据影响评估
□ 报告: 完整攻击路径

动手练习

  1. 用 LocalStack 搭一个本地 AWS 模拟环境,练习 pacu 权限枚举。
  2. 分析一个公开的"云配置错误"案例(S3 数据泄露新闻),画出攻击面。
  3. 用 ScoutSuite 对本地云模拟环境做配置审计,找"超配"项。
  4. 对比三大云厂商的元数据端点与凭证获取方式(表格式整理)。

深入阅读

  • 仓库:CTF-Sandbox-Orchestrator/competition-cloud-metadata-path/(元数据路径)
  • 仓库:CTF-Sandbox-Orchestrator/competition-agent-cloud/(Agent+云)
  • 仓库:CTF-Sandbox-Orchestrator/competition-k8s-control-plane/(K8s 云)
  • 仓库:CTF-Sandbox-Orchestrator/competition-ssrf-metadata-pivot/(SSRF→云)
  • 外部: pacu 文档、ScoutSuite、云厂商安全文档