GeekyBlessing/Cloudsentinel
GitHub: GeekyBlessing/Cloudsentinel
CloudSentinel 是一个将 AWS 错误配置映射到 MITRE ATT&CK 攻击路径和多项合规框架的云安全态势管理平台。
Stars: 1 | Forks: 0
# CloudSentinel CSPM




## 独有优势
大多数 CSPM 工具只会告诉你存在*哪些*配置错误。而 CloudSentinel 会告诉你*攻击者能利用它做什么*。
每一项发现都丰富了以下内容:
- **MITRE ATT&CK® 技术映射** — 附带通俗易懂的解释,说明为什么这种特定的错误配置会促成这种特定的技术
- **爆炸半径评分** — 量化横向移动路径、数据泄露风险以及提权潜力
- **杀伤链构建** — 给定一组未解决的发现,CloudSentinel 会重建攻击者在 ATT&CK 杀伤链中可能进展的最远路径
- **合规控制** — 每个发现都同时映射到 CIS、NIST CSF、SOC 2 和 PCI DSS
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ React Dashboard │
│ Overview │ Findings │ ATT&CK Heatmap │ Compliance │
└─────────────────────┬───────────────────────────────────────┘
│ REST API
┌─────────────────────▼───────────────────────────────────────┐
│ FastAPI Backend │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Scan Engine │ │ MITRE Engine │ │ Risk Scorer │ │
│ │ 15 rules │ │ 30+ technique│ │ Composite 0-10 │ │
│ │ AWS live │ │ mappings │ │ Blast radius │ │
│ │ Azure stub │ │ Kill chain │ │ Exposure mult │ │
│ │ GCP stub │ │ constructor │ │ │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Compliance Mapper: CIS │ NIST CSF │ SOC 2 │ PCI DSS │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ DynamoDB Findings Store │
│ SHA-256 fingerprinting │ GSI filtering │ TTL auto-expiry │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────────────┐
│ Terraform IaC │
│ Scanner IAM role │ DynamoDB │ Lambda │ EventBridge │ KMS │
└─────────────────────────────────────────────────────────────┘
```
## 检测到的攻击场景
### 场景 1 — SSRF 到账户接管的路径
*以 Capital One 数据泄露事件(2019)为模型*
**错误配置:** 启用了 IMDSv1 + Lambda 角色权限过大
**攻击路径:**
1. 攻击者在 EC2 上的 Web 应用程序中发现 SSRF 漏洞
2. IMDSv1 (CS-EC2-003) 允许未经身份验证的 GET 请求访问 `169.254.169.254`
3. 返回实例角色凭证 — 无需 session token
4. 角色具有 `iam:*` 通配符 (CS-IAM-003) — 提权轻而易举
5. 攻击者调用 `iam:CreatePolicyVersion` 附加 AdministratorAccess
6. 仅凭一个 SSRF 漏洞即可实现全面的账户接管
**可利用的 ATT&CK 技术:**
- T1552 — 不安全的凭证(IMDSv1 凭证窃取)
- T1548 — 滥用提权控制机制(通配符 IAM 提权)
- T1098 — 账户操纵(创建持久化后门 IAM 用户)
**CloudSentinel 检测:** CS-EC2-003 和 CS-IAM-003 均被标记为 HIGH(高危),并指出存在提权爆炸半径。杀伤链显示为:凭证访问 → 提权 → 持久化。
### 场景 2 — 隐蔽数据泄露路径
*公开的 S3 + 禁用的日志记录 = 没有取证证据*
**错误配置:** S3 公开访问 + S3 日志记录已禁用 + CloudTrail 已禁用
**攻击路径:**
1. 自动化扫描器 (GrayhatWarfare) 发现公开的 S3 存储桶 (CS-S3-001)
2. 攻击者将整个存储桶同步到外部 AWS 账户 — 零身份验证
3. S3 访问日志记录已禁用 (CS-S3-003) — 没有 S3 层面的取证证据
4. CloudTrail 已禁用 (CS-LOG-001) — 没有 API 层面的审计追踪
5. 整个数据湖的泄露未产生任何可检测的痕迹
6. 数周后通过第三方通知才发现数据泄露
**可利用的 ATT&CK 技术:**
- T1530 — 来自云存储的数据(未经身份验证的存储桶访问)
- T1537 — 将数据传输到云账户(同步到攻击者账户)
- T1070 — 痕迹清除(无日志 = 无证据)
**CloudSentinel 检测:** 这三个规则均被标记。杀伤链达到“数据泄露”阶段,并带有数据泄露爆炸半径标志。叙述中明确指出数据丢失是一种现实可能的结果。
### 场景 3 — 勒索软件暂存路径
*开放的 RDP + 无 VPC Flow Logs = 在暗处进行横向移动*
**错误配置:** 无限制的 RDP + VPC Flow Logs 已禁用 + EBS 未加密
**攻击路径:**
1. Shodan 索引到面向 0.0.0.0/0 开放的 RDP 端口 3389 (CS-EC2-002)
2. 攻击者对 RDP 凭证进行暴力破解或凭证填充
3. VPC Flow Logs 已禁用 (CS-LOG-003) — 横向移动不可见
4. 攻击者使用内部 RDP 移动到其他 EC2 实例
5. 部署勒索软件 — EBS 卷未加密 (CS-ENC-001)
6. 在加密之前将快照泄露到攻击者账户
**可利用的 ATT&CK 技术:**
- T1190 — 利用面向公众的应用程序(开放的 RDP)
- T1021 — 远程服务(内部 RDP 横向移动)
- T1570 — 横向工具传输(勒索软件暂存,无网络日志)
- T1530 — 来自云存储的数据(未加密快照泄露)
**CloudSentinel 检测:** 跨 EC2、VPC 和 EBS 标记了三个规则。杀伤链跨越初始访问 → 横向移动 → 收集。爆炸半径同时标记了横向移动和数据泄露路径。
## 安全规则
## | 规则 ID | 标题 | 严重性 | 服务 | CIS |
|---------|-------|----------|---------|-----|
| CS-IAM-001 | Root 账户拥有活跃的访问密钥 | CRITICAL | IAM | 1.4 |
| CS-IAM-002 | 未启用 MFA 的 IAM 用户拥有控制台访问权限 | HIGH | IAM | 1.10 |
| CS-IAM-003 | IAM 策略授予了通配符权限 | HIGH | IAM | 1.16 |
| CS-IAM-004 | 访问密钥超过 90 天未轮换 | MEDIUM | IAM | 1.14 |
| CS-S3-001 | S3 存储桶可公开访问 | CRITICAL | S3 | 2.1.5 |
| CS-S3-002 | S3 加密已禁用 | MEDIUM | S3 | 2.1.1 |
| CS-S3-003 | S3 访问日志记录已禁用 | MEDIUM | S3 | 2.1.4 |
| CS-EC2-001 | 无限制的 SSH (0.0.0.0/0) | HIGH | EC2 | 5.2 |
| CS-EC2-002 | 无限制的 RDP (0.0.0.0/0) | HIGH | EC2 | 5.3 |
| CS-EC2-003 | 启用了 IMDSv1 | HIGH | EC2 | 5.6 |
| CS-LOG-001 | CloudTrail 已禁用 | HIGH | CloudTrail | 3.1 |
| CS-LOG-002 | CloudTrail 日志验证已禁用 | MEDIUM | CloudTrail | 3.2 |
| CS-LOG-003 | VPC Flow Logs 已禁用 | MEDIUM | VPC | 3.9 |
| CS-ENC-001 | EBS 加密已禁用 | MEDIUM | EBS | 2.2.1 |
| CS-ENC-002 | RDS 加密已禁用 | HIGH | RDS | 2.3.1 |
## 快速开始
```
# 克隆并安装
git clone https://github.com/GeekyBlessing/cloudsentinel
cd cloudsentinel
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 针对你的 AWS 账户运行 (只读)
export PYTHONPATH=$(pwd)
python3 -c "
from cloudsentinel.scanner.engine import ScanEngine
engine = ScanEngine(regions=['eu-north-1'], persist=False)
result = engine.scan_account()
print(result.summary())
for f in result.findings:
print(f'{f.severity.value:<8} {f.risk_score}/10 {f.title}')
"
# 启动 API
uvicorn cloudsentinel.main:app --reload --port 8000
# 使用 Docker 运行
docker-compose up
```
## 运行测试
```
# 全套
python3 -m pytest tests/ -v
# 带覆盖率
python3 -m pytest tests/ --cov=cloudsentinel --cov-report=term-missing
# 单个 module
python3 -m pytest tests/test_mitre.py -v
```
## **跨越 6 个模块的 142 个测试。零失败。**
## 实时扫描结果
针对真实的 AWS 账户 (eu-north-1) 进行了扫描 — 检测到 6 个发现,5 个 ATT&CK 战术处于活动状态,杀伤链达到**收集**阶段。
有关完整输出,请参阅 [LIVE_SCAN_RESULTS.md](LIVE_SCAN_RESULTS.md)。
| 发现 | 严重性 | 风险 | ATT&CK 技术 |
|---------|----------|------|-------------------|
| 未启用 MFA 的 IAM 用户 | HIGH | 7.3/10 | T1078, T1528 |
| CloudTrail 验证已禁用 | MEDIUM | 5.9/10 | T1070 |
| VPC Flow Logs 已禁用 | MEDIUM | 5.9/10 | T1562, T1570 |
| EBS 加密已禁用 | MEDIUM | 5.0/10 | T1530 |
| S3 访问日志记录已禁用 (×2) | MEDIUM | 5.0/10 | T1070 |
**杀伤链:** 初始访问 → 防御规避 → 凭证访问 →
横向移动 → 收集
## 基础设施部署
```
cd terraform/
# 初始化
terraform init
# 预览
terraform plan -var="account_id=YOUR_ACCOUNT_ID"
# 部署
terraform apply -var="account_id=YOUR_ACCOUNT_ID"
```
## 项目结构
## 作者
**Toriola Opeyemi** — 云安全工程师
[LinkedIn](https://linkedin.com/in/toriola-opeyemi) ·
[GitHub](https://github.com/GeekyBlessing)
标签:AV绕过, AWS, CSPM, DPI, FastAPI, Python, TinkerPop, 无后门, 漏洞利用检测, 请求拦截, 逆向工具