Seanfrvr/gcp-iam-threat-hunting
GitHub: Seanfrvr/gcp-iam-threat-hunting
演示如何在 GCP 中通过 Security Command Center 和审计日志狩猎 IAM 身份持久化威胁并重构攻击时间线的实战项目。
Stars: 0 | Forks: 0
# 云端威胁狩猎:调查 GCP 中的身份持久化
## 目标
完成了一次注重实践的应急响应调查,重点是在 Google Cloud Platform 中检测和分析基于身份的威胁。在云环境中,攻击者不仅会窃取数据,还会试图建立持久化。本项目演示了如何发现高危的权限提升事件,并从原始审计日志中重构完整的攻击时间线。
## 渗透点
在 IAM & Admin 中发现了一个配置漏洞:一个未经授权的外部邮箱地址 (`bad.actor.demo@gmail.com`) 被明确授予了 GCP 中破坏性最大的角色——**Owner**——从而获得了几乎所有项目资源的完全访问权限。
## 通过 Security Command Center 进行检测
Google Cloud 的 Security Command Center 自动将此行为标记为 **High Severity**(高危)发现,归类于 **Persistence: IAM anomalous grant**(持久化:IAM 异常授权)。
SCC 提取的关键细节:
| 字段 | 值 |
|---|---|
| 描述 | 通过 `InsertProjectOwnershipInvite` API 邀请外部成员成为项目 Owner |
| 严重性 | High |
| 调用者 IP | xxx.xxx.xxx.xxx (南非) |
| 方法名称 | `InsertProjectOwnershipInvite` |
| 主账号邮箱 | `student-02-4ea97df26394@qwiklabs.net` |
| 服务名称 | `cloudresourcemanager.googleapis.com` |
这证实了授权发生的**确切时间**以及签发该授权所使用的**被盗用主账号**。
## 转向取证 —— Logs Explorer
为了准确证明这是如何发生的,转入 Logs Explorer 并构建了针对性的 LQL (Logging Query Language) 查询,以便从数千个正常事件中精确分离出攻击者的行为:
此查询专门过滤通过 ownership-invite API 进行的 IAM 政策更改——穿透常规的审计噪音,仅呈现相关的身份事件。
## 根因分析
展开了匹配日志条目的 JSON payload,为事件文档提取确凿证据:
- 确认了用于签发授权的确切**调用者 IP**
- 确认了用于绕过标准角色分配工作流的**方法名称**
- 识别了被滥用于授权恶意授权的**被盗用主账号邮箱**
## 查询验证
重新运行了针对性的 LQL 查询,确认它能可靠地分离出恶意操作——验证了该取证查询能正确呈现隐藏的身份威胁,而不仅仅是这个特定实例。
## 发现
- 确认了通过外部 IAM Owner 授权进行的未经授权的权限提升
- 将攻击路径溯源到特定的被盗用主账号
- 构建了可重用的 LQL 检测查询,用于检测 `InsertProjectOwnershipInvite` 滥用——这种模式可以转化为固定的检测规则
## 展示的技能
- Cloud IAM 安全分析
- 通过 Security Command Center 进行威胁检测
- 在 Google Cloud Logs Explorer 中进行日志分析和查询编写 (LQL)
- 从原始审计日志重构事件时间线
- 根因分析和取证文档记录
## 截图
**未经授权的 IAM 授权 —— 渗透点**

**SCC 发现 —— 检测到高危异常授权**

**Logs Explorer 中的 LQL 查询 —— 转向取证**

**JSON payload 分析 —— 根因证据**

**确认检测的查询验证**

标签:GCP, IAM, 库, 应急响应