Chike-dev/CloudSentinel-SOC-Project

GitHub: Chike-dev/CloudSentinel-SOC-Project

一个 AWS 原生的威胁检测与事件响应流水线,通过 GuardDuty、EventBridge、Lambda 等服务实现云安全告警的自动路由与响应记录,并已通过真实凭据外泄攻击验证。

Stars: 0 | Forks: 0

# CloudSentinel — AWS 威胁检测与响应流水线 ![AWS](https://img.shields.io/badge/AWS-Cloud-orange) ![GuardDuty](https://img.shields.io/badge/GuardDuty-Threat%20Detection-red) ![Security%20Hub](https://img.shields.io/badge/Security%20Hub-Findings%20Aggregation-blue) ![EventBridge](https://img.shields.io/badge/EventBridge-Event%20Routing-purple) ![Lambda](https://img.shields.io/badge/Lambda-Python-green) ## 执行摘要 CloudSentinel 是一个小型 AWS 安全运营流水线,旨在模拟云安全团队如何收集遥测数据、检测高可信度威胁、路由发现结果并启动响应工作流。 该系统使用 CloudTrail 进行审计日志记录,使用 S3 和 CloudWatch Logs 保存证据,使用 GuardDuty 进行托管威胁检测,使用 Security Hub 聚合发现结果,使用 EventBridge 路由事件,使用 SNS 通知分析师,并使用 Lambda 记录结构化的事件响应日志。 该流水线分两个阶段进行了验证: 1. **综合集成验证** — 生成 GuardDuty 样本发现,以确认 EventBridge、SNS 和 Lambda 已正确连接。 2. **真实检测验证** — 针对实验环境的 EC2 实例执行了授权的凭据外泄场景。GuardDuty 独立生成了严重性为高的 `UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS` 发现,并触发了告警和响应路径。 ## 架构 ![CloudSentinel 架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/52/526a57b5eecd82e7a8c26b621e3d3b3bdb13040a2d594517e0f762d09483e5cc.png) ### 数据流 ``` AWS account activity │ ├── CloudTrail → S3 + CloudWatch Logs │ └── audit evidence and investigation logs │ └── GuardDuty └── managed threat detection from AWS telemetry │ ├── Security Hub → centralized findings dashboard │ └── EventBridge rule: severity >= 7 ├── SNS → SOC analyst email alert └── Lambda → incident parsing and response logging ``` CloudTrail 和日志存储提供了调查记录。GuardDuty 是主要的托管检测器。Security Hub 集中化可视性。EventBridge 将高严重性的发现路由到响应目标。 ## 设计目标 | 目标 | 实现 | |---|---| | 集中化 AWS 审计遥测数据 | CloudTrail,包含 S3 和 CloudWatch Logs 目标 | | 使用托管云威胁检测 | 在 `us-east-1` 中启用 GuardDuty | | 聚合安全发现结果 | Security Hub 仪表板和发现摄取 | | 自动化高严重性响应路由 | EventBridge 规则匹配严重性 `>= 7` 的 GuardDuty 发现 | | 通知人工分析师 | 订阅 SOC 分析师收件箱的 SNS 电子邮件订阅 | | 保持安全的响应行为 | Lambda 以模拟/日志模式运行,而不是修改基础设施 | | 展示最小权限原则 | 只读的 SOC 分析师 IAM 角色和限定范围的 EC2 侦察角色 | ## 核心组件 | 组件 | 用途 | |---|---| | **CloudTrail** | 记录 AWS API 活动,用于审计和调查。 | | **S3** | 在专用的私有存储桶中存储 CloudTrail 日志证据。 | | **CloudWatch Logs** | 为 CloudTrail 和 Lambda 执行输出提供近实时的日志可见性。 | | **GuardDuty** | 检测可疑的云活动并分配严重性评分的发现结果。 | | **Security Hub** | 将发现结果聚合到集中的 SOC 仪表板中。 | | **EventBridge** | 将高严重性的 GuardDuty 发现路由到下游响应目标。 | | **SNS** | 向分析师收件箱发送实时电子邮件告警。 | | **Lambda** | 解析 GuardDuty 发现,对严重性进行分类,识别受影响的资源,并记录模拟的响应操作。 | | **IAM** | 实施基于角色的访问和最小权限调查权限。 | ## 验证策略 CloudSentinel 采用两阶段方法进行了验证,以便分别评估流水线功能和检测保真度。 ### 阶段 1 — 综合流水线验证 生成了 GuardDuty 样本发现,以在依赖实时攻击者行为之前确认端到端集成路径正常工作。 | 验证点 | 结果 | 证据 | |---|---|---| | GuardDuty 生成发现结果 | 404 个样本发现,包含高和严重级别 | `screenshots/11-guardduty-sample-findings.png` | | Security Hub 聚合发现结果 | 样本发现出现在集中化仪表板中 | `screenshots/12-SecurityHub-sample-findings.png` | | SNS 交付告警 | 收到电子邮件通知 | `screenshots/13-sns-email-alert.png` | | Lambda 执行 | 事件输出出现在 CloudWatch Logs 中 | `screenshots/14-lambda-cloudwatch-logs.png` | 样本发现被记录为**集成测试**,而非真实的攻击证据。 ### 阶段 2 — 真实检测验证 实验室 EC2 实例配置了限定范围的 IAM 角色,并被视为受损的工作负载。初始枚举产生了低信号的侦察活动,但并未可靠地越过高严重性自动化阈值。随后,通过从外部机器使用实例角色凭据,该场景被升级为更高保真度的凭据外泄测试。 | 结果 | 值 | |---|---| | GuardDuty 发现 | `UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS` | | 严重性 | 8 / 10 — 高 | | 区域 | `us-east-1` | | 大致检测时间 | ~24 分钟 | | 流水线响应 | EventBridge 匹配严重性 `>= 7`,SNS 交付电子邮件,Lambda 记录事件 | ![GuardDuty 发现 — 严重性为 8 的真实凭据外泄检测](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/8901300e4f18b68b838892ceca5873f1f3c8123cfe258dfbe16e177fda195096.png) *GuardDuty 独立生成了严重性为 8 的 `UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`。账户、资源和凭据标识符已被隐去。* ![发送到分析师收件箱的 SNS 告警电子邮件](https://static.pigsec.cn/wp-content/uploads/repos/cas/82/82fbbb5b7e184d3f4c6622e2d4b0846ba5d5596848d8d648a3f26289b4ad2b37.png) *EventBridge 规则通过 SNS 路由了该发现。电子邮件在发现创建后的几秒钟内到达分析师收件箱。* 额外证据: - `screenshots/15-simulation-a-recon-commands.png` — 来自受损实例的内部枚举 - `screenshots/15b-credential-exfiltration-external.png` — 从外部机器使用的实例角色凭据 - `screenshots/18-securityhub-real-finding.png` — 在 Security Hub 中聚合的相同发现 完整报告:[`docs/attack-simulation-report.md`](docs/attack-simulation-report.md) ## 设计决策 | 决策 | 原理 | 权衡 | |---|---|---| | 使用 GuardDuty 作为主要检测器 | 无需部署代理即可提供 AWS 原生托管检测 | 自定义程度不如自定义检测工程 | | 仅在严重性 `>= 7` 时触发自动化 | 减少告警噪音,并将自动化集中在高可信度的发现上 | 中等严重性的发现需要人工审查 | | 在 EventBridge 中直接监听 GuardDuty | 简化路由并避免依赖 Security Hub 的摄取延迟 | Security Hub 仍用于聚合,但不作为自动化源 | | 使用 SNS 电子邮件进行通知 | 简单的 AWS 原生告警路径,设置最少 | 在操作丰富度上不如 Slack、PagerDuty 或 ServiceNow | | 保持 Lambda 处于模拟模式 | 安全地展示响应逻辑,而不会更改实时基础设施 | 尚未执行真正的遏制 | | 在 EC2 上使用 IAM 角色而不是长期密钥 | 建模临时凭据的最佳实践 | 需要设置实例配置文件 | | 在真实攻击之前使用样本发现进行验证 | 安全且可重复地确认集成路径 | 必须与真实检测证据明确区分 | 更多细节:[`docs/design-decisions.md`](docs/design-decisions.md) ## 检测覆盖范围 | 威胁行为 | 来源 | 状态 | |---|---|---| | GuardDuty 高严重性发现路由 | EventBridge | 已通过样本和真实发现验证 | | 电子邮件告警交付 | SNS | 已验证 | | 事件解析和响应日志记录 | Lambda + CloudWatch Logs | 已验证 | | EC2 角色凭据外泄 | GuardDuty | 已通过真实发现验证 | | 来自 EC2 的内部 AWS 枚举 | CloudTrail / GuardDuty 遥测 | 已观察到;但单独并未可靠地越过严重性 `>= 7` | 查看 [`docs/detection-coverage.md`](docs/detection-coverage.md)。 ## 事件响应经验教训 终止受损的 EC2 实例**不会**立即使已经外泄的临时凭据失效。这些凭据在过期之前一直有效,因为它们是 IAM 角色会话凭据,而不是由实例生命周期直接控制的凭据。 完整的响应计划必须考虑到: - 角色会话撤销, - 凭据过期窗口, - IAM 角色审查, - CloudTrail 调查, - 以及对受影响工作负载的遏制。 ## 仓库结构 ``` CloudSentinel-SOC-Project/ ├── README.md ├── architecture/ │ ├── cloudsentinel-architecture.png │ └── cloudsentinel-architecture.mmd ├── docs/ │ ├── attack-simulation-report.md │ ├── cleanup-and-cost-control.md │ ├── design-decisions.md │ ├── detection-coverage.md │ └── operational-runbook.md ├── eventbridge/ │ └── guardduty_high_severity_rule.json ├── lambda/ │ └── incident_responder.py └── screenshots/ └── build and validation evidence ``` ## 限制 - Lambda 目前执行事件解析和模拟响应日志记录;它不会自动隔离基础设施。 - EventBridge 自动化的范围限定为严重性 `>= 7` 的 GuardDuty 发现。 - 该部署是单区域的(`us-east-1`)。生产环境的部署将需要多区域事件路由或集中化聚合。 - Security Hub 用于可见性和聚合;当前的自动化源是直接来自 GuardDuty。 ## 清理和成本控制 临时 EC2 资源在验证后被终止,项目完成后应审查收费的安全服务。查看 [`docs/cleanup-and-cost-control.md`](docs/cleanup-and-cost-control.md)。 由 [Chike-dev](https://github.com/Chike-dev) 在 AWS 实验账户中构建。区域:`us-east-1`。
标签:AMSI绕过, AWS, DPI, PB级数据处理, StruQ, 威胁检测, 安全运维, 自动化响应, 逆向工具