GeekyBlessing/Cloudsentinel

GitHub: GeekyBlessing/Cloudsentinel

CloudSentinel 是一个将 AWS 错误配置映射到 MITRE ATT&CK 攻击路径和多项合规框架的云安全态势管理平台。

Stars: 1 | Forks: 0

# CloudSentinel CSPM ![Python](https://img.shields.io/badge/Python-3.11%2B-blue) ![Tests](https://img.shields.io/badge/Tests-142%20passing-brightgreen) ![Coverage](https://img.shields.io/badge/Coverage-80%25%2B-green) ![License](https://img.shields.io/badge/License-MIT-lightgrey) ## 独有优势 大多数 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, 无后门, 漏洞利用检测, 请求拦截, 逆向工具