dhruvvv55/cloud-threat-detection-lab
GitHub: dhruvvv55/cloud-threat-detection-lab
一个 GCP 云威胁检测实验室,通过模拟 IAM 攻击场景并分析审计日志,实现基于 MITRE ATT&CK 映射的检测与 Splunk 告警。
Stars: 0 | Forks: 0
# 云威胁检测实验室
在 GCP 上模拟的 IAM 攻击场景,使用 Python pipeline 和 Splunk SPL 规则进行检测。
## 架构

## 我所做的工作
设置了一个 GCP project,创建了一个低权限的 service account,然后模拟攻击者通过 `SetIamPolicy` 将其权限提升至 `roles/owner`。GCP Cloud Audit Logs 捕获了每一次 API 调用。在此基础上,我构建了两样东西:
1. **gcp_detector.py** — 通过 Cloud Logging API 拉取审计日志,运行检测规则,将发现结果映射到 MITRE ATT&CK,并输出结构化的事件报告
2. **gcp_to_splunk.py** — 通过 HEC 将这些日志转发到 Splunk,我在其中编写了 SPL 检测查询并设置了每小时调度的警报
## 攻击场景
**IAM 权限提升 (T1078.004)**
创建了一个仅有查看权限的 service account,然后为其授予 `roles/owner`:
```
# 低权限启动
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:attacker-sa@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/viewer"
# Escalate 为 owner
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:attacker-sa@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/owner"
```
Cloud Audit Logs 记录了 `SetIamPolicy` 调用,包含调用者 IP、principal 和确切的策略增量 (policy delta)。
## 检测规则 (Python)
| 严重程度 | 规则 | MITRE |
|---|---|---|
| CRITICAL | IAM 权限提升 | T1078.004 |
| HIGH | Service Account Key 创建 | T1528 |
| MEDIUM | 异常 SA API 活动 | T1078.004 |
| LOW | IAM Policy 修改 | T1098 |
`gcp_detector.py` 的示例输出:
```
[CRITICAL] IAM Privilege Escalation
ID : PRIV-ESC-001
Principal : attacker@gmail.com
Caller IP : 34.124.220.91
Method : SetIamPolicy
MITRE : T1078.004 - Valid Accounts: Cloud Accounts
Action : Revoke roles/owner. Check for lateral movement.
```
## Splunk 集成
通过 HEC 将 22 条真实的 GCP 审计日志事件转发到 Splunk。检测查询:
```
index=main source="gcp:cloudaudit" method="SetIamPolicy"
| eval severity="CRITICAL", mitre="T1078.004 - Valid Accounts: Cloud Accounts"
| table timestamp, principal, caller_ip, method, severity, mitre
| sort -timestamp
```
保存为每小时调度的 Splunk 警报,在结果数 > 0 时触发。
## 技术栈
- GCP Cloud Audit Logs
- Python 3.9+ / google-cloud-logging
- Splunk Enterprise (本地) / HEC
- SPL
## 设置
```
# Auth
gcloud auth application-default login
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
# 安装
pip install google-cloud-logging google-auth python-dotenv requests
# 运行 detector
python gcp_detector.py --hours 1
# 转发至 Splunk
python gcp_to_splunk.py --hours 1
```
## 作者
**Dhruv Patel** — 南加州大学 (USC) 网络安全工程硕士
标签:AMSI绕过, GCP, IAM, 威胁检测, 逆向工具