shashanksn-413/CloudSentinel

GitHub: shashanksn-413/CloudSentinel

基于 AWS 无服务器架构的开源云安全 SIEM/SOAR 平台,集成 GPT-4o AI 分诊与自动化事件响应,实现秒级威胁检测与遏制。

Stars: 0 | Forks: 0

# 🛡️ CloudSentinel **基于云的 SIEM/SOAR 平台,可接入 AWS 安全事件,使用映射到 MITRE ATT&CK 的自定义规则检测威胁,通过 AI 代理对警报进行分类,并实时自动化事件响应。** CloudSentinel 监控 AWS CloudTrail、GuardDuty 和 VPC Flow Logs,通过 8 个自定义检测规则运行事件,使用一个可追踪参与者历史的有状态 GPT-4o-mini 分类代理评估严重程度,并在初始事件发生后的几秒钟内执行自动化遏制操作。 ## 架构 ``` CloudTrail ──────┐ GuardDuty ───────┤ VPC Flow Logs ───┘ │ ▼ EventBridge │ ▼ Lambda (Detection Engine) ┌──────┬──┴──┬────────┐ │ │ │ │ ▼ ▼ ▼ ▼ DynamoDB SNS AI Triage Response (Alerts) (GPT-4o) (Revoke/Isolate) │ ▼ Streamlit Dashboard ``` ## 技术栈 | 技术 | 用途 | |---|---| | AWS CloudTrail | 跨所有 AWS 服务的 API 活动日志记录 | | AWS GuardDuty | 针对云工作负载的托管式威胁检测 | | AWS VPC Flow Logs | 网络流量元数据捕获和分析 | | AWS EventBridge | 事件路由和到 Lambda 的编排 | | AWS Lambda | 无服务器检测、分类和响应执行 | | AWS DynamoDB | 警报存储、参与者历史追踪、响应审计日志 | | AWS SNS | 包含完整上下文的实时电子邮件警报通知 | | OpenAI GPT-4o-mini | 具有有状态参与者分析的 AI 驱动警报分类 | | Streamlit | 安全运营仪表板和可视化 | | Python | 所有检测逻辑、Lambda 函数和框架代码 | ## 检测规则 | 规则 | 描述 | MITRE ATT&CK | 严重程度 | |---|---|---|---| | 暴力破解登录 | 检测 10 分钟内 5 次以上的 ConsoleLogin 失败尝试 | T1110 — Brute Force | HIGH | | Root 账户使用 | 标记来自 root 账户的任何 API 调用或登录 | T1078.004 — Valid Accounts: Cloud Accounts | CRITICAL | | IAM 权限提升 | 检测非管理员用户执行的 AttachUserPolicy、PutRolePolicy、CreateAccessKey、AddUserToGroup 操作 | T1548 — Abuse Elevation Control Mechanism | HIGH | | S3 存储桶枚举 | 检测 5 分钟内 10 次以上的 ListBuckets/GetBucketAcl 调用 | T1530 — Data from Cloud Storage | MEDIUM | | 安全组修改 | 检测向 0.0.0.0/0 开放敏感端口 (22, 3389, 3306, 445, 5432) 的行为 | T1562.007 — Impair Defenses: Disable or Modify Cloud Firewall | HIGH | | 不可能旅行 | 检测同一 IAM 用户在 1 小时内从不同 IP 进行身份验证的行为 | T1078 — Valid Accounts | HIGH | | 新 IP 访问密钥使用 | 检测来自以前未见过的 IP 地址的访问密钥使用情况 | T1078.004 — Valid Accounts: Cloud Accounts | MEDIUM | | 网络扫描 | 根据 VPC Flow Logs 检测 5 分钟内跨 5 个以上端口的 20 次以上拒绝连接 | T1046 — Network Service Scanning | MEDIUM | ## 自动化响应动作 | 动作 | 触发条件 | 具体作用 | |---|---|---| | IAM 访问密钥撤销 | 暴力破解、不可能旅行、IAM 提权、新 IP 使用、S3 枚举 | 列出受感染用户的所有活跃访问密钥并将其设置为 Inactive | | EC2 网络隔离 | 网络扫描 | 创建一个拒绝所有的安全组并替换实例的安全组,切断所有入站和出站流量 | | SNS 警报通知 | 所有检测 | 发送包含规则名称、严重程度、MITRE 技术、参与者、源 IP、描述以及完整 AI 分类输出的电子邮件 | | DynamoDB 审计日志 | 所有检测和响应 | 存储带有时间戳的每个警报、参与者历史记录和响应动作,以提供审计跟踪 | ## AI 分类代理 CloudSentinel 集成了一个由 OpenAI GPT-4o-mini 驱动的有状态 AI 分类代理: - 接收完整的警报上下文,包括事件类型、参与者、源 IP、MITRE ATT&CK 映射和时间戳 - 查询 DynamoDB 获取参与者历史记录,以确定 IP 或 IAM 用户是否曾触发过之前的警报 - 返回结构化的评估结果:严重性评分 (1-5)、建议动作 (isolate/revoke_keys/escalate/monitor/dismiss)、置信度水平和推理依据 - 针对重复违规者自动提升严重性,并在参与者跨多个规则类型触发警报时标记上报 - 将分类输出与警报一起存储在 DynamoDB 中,用于审计和仪表板显示 ## 模拟攻击场景 针对该平台执行了 12 个攻击场景,涵盖了所有 7 个基于 CloudTrail 的检测规则: | # | 场景 | MITRE 技术 | 触发规则 | AI 严重程度 | AI 动作 | |---|---|---|---|---|---| | 1 | Root 账户创建访问密钥 | T1078.004 | root_account_usage | 5/5 CRITICAL | isolate | | 2 | 初级开发人员附加 AdministratorAccess 策略 | T1548 | iam_privilege_escalation | 5/5 CRITICAL | escalate | | 3 | 攻击者枚举 S3 存储桶 (10 次快速调用) | T1530 | s3_enumeration | 4/5 HIGH | escalate | | 4 | 恶意管理员向 0.0.0.0/0 开放 SSH 和 RDP | T1562.007 | security_group_modification | 5/5 CRITICAL | escalate | | 5 | 用户在几分钟内分别从美国和东欧登录 | T1078 | impossible_travel | 5/5 CRITICAL | isolate | | 6 | 10 分钟内 5 次控制台登录失败 | T1110 | brute_force_login | 5/5 CRITICAL | escalate | | 7 | 从新 IP 地址使用访问密钥 | T1078.004 | new_ip_access_key_usage | 4/5 HIGH | escalate | | 8 | 实习生为后门账户创建访问密钥 | T1548 | iam_privilege_escalation | 5/5 CRITICAL | escalate | | 9 | 承包商向 Lambda 角色注入管理员策略 | T1548 | iam_privilege_escalation | 5/5 CRITICAL | escalate | | 10 | 从 Tor 出口节点进行 Root 控制台登录 | T1078.004 | root_account_usage | 5/5 CRITICAL | escalate | | 11 | DevOps 用户向互联网开放 MySQL 端口 3306 | T1562.007 | security_group_modification | 5/5 CRITICAL | escalate | | 12 | 被入侵的开发人员将自己添加到 Administrators 组 | T1548 | iam_privilege_escalation | 5/5 CRITICAL | escalate | ## 仪表板 ### 安全运营概览 ![仪表板概览](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/4062817a14121914.png) ### 实时警报源 ![警报源](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/81e2086808121921.png) ### 带有 AI 分类的警报详情 ![警报详情](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/55e8b7ffe4121928.png) ### 参与者历史追踪 ![参与者历史](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ca0a287d03121933.png) ### 响应动作日志 ![响应日志](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ffc3526d3e121938.png) ### 指标和 MITRE 覆盖范围 ![指标](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/8cbfcb73bb121943.png) ## 电子邮件警报示例 ### Root 账户使用 (CRITICAL) ![Root 警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/bcd8b9325d121950.png) ### 暴力破解登录 (HIGH) ![暴力破解警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/e9b92aa64d121955.png) ### 不可能旅行 (HIGH) ![不可能旅行警报](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/68a98a6f11122002.png) ## 指标摘要 | 指标 | 数值 | |---|---| | 生成的警报总数 | 13 | | 活跃的检测规则数 | 8 (7 个 CloudTrail + 1 个 VPC Flow Logs) | | 模拟攻击场景数 | 12 | | 执行的自动化响应动作 | 8 | | 平均检测时间 | < 2 秒 | | 平均遏制时间(从警报到响应) | < 15 秒 | | AI 分类置信度(平均) | 0.91 | | 覆盖的 MITRE ATT&CK 技术 | 7 | ## 部署 ### 前置条件 - 启用了 CloudTrail、GuardDuty 和 VPC Flow Logs 的 AWS 账户 - OpenAI API 密钥 (GPT-4o-mini) - Python 3.12+ - 配置了适当 IAM 权限的 AWS CLI ### 设置步骤 1. 克隆仓库 2. 创建 DynamoDB 表:`cloudsentinel-alerts`、`cloudsentinel-actor-history`、`cloudsentinel-response-log`(按需容量,分区键 + 排序键如源代码中所述) 3. 创建 SNS 主题 `cloudsentinel-alerts-topic` 并订阅您的电子邮件 4. 将 `lambda_function.py` 连同 `src/` 一起部署为 Lambda 函数(Python 3.12,256MB,60 秒超时) 5. 将 `OPENAI_API_KEY` 设置为 Lambda 环境变量 6. 附加 IAM 策略:为 Lambda 执行角色授予 DynamoDB、SNS、IAM、EC2 的完全访问权限 7. 在默认总线上创建一个 EventBridge 规则,其事件模式需筛选 `aws.iam`、`aws.s3`、`aws.ec2`、`aws.signin` 源 8. 在本地配置 AWS 凭证并运行仪表板:`streamlit run dashboard/app.py` ## 项目结构 ``` ├── lambda_function.py # Main Lambda entry point ├── src/ │ ├── detection/ │ │ ├── detection_engine.py # Core detection engine │ │ └── rules/ │ │ ├── brute_force.py │ │ ├── root_account_usage.py │ │ ├── iam_privilege_escalation.py │ │ ├── s3_enumeration.py │ │ ├── security_group_modification.py │ │ ├── impossible_travel.py │ │ ├── new_ip_access_key.py │ │ └── network_scanning.py │ ├── triage/ │ │ └── ai_triage.py # GPT-4o-mini triage agent │ ├── response/ │ │ ├── response_handler.py # Routes alerts to response actions │ │ ├── iam_key_revoke.py # Disables compromised IAM keys │ │ └── ec2_isolate.py # Isolates EC2 with deny-all SG │ └── shared/ │ ├── constants.py # MITRE mappings and thresholds │ └── db_helpers.py # DynamoDB helpers ├── dashboard/ │ └── app.py # Streamlit dashboard └── docs/ └── screenshots/ ```
标签:AI智能体, AMSI绕过, AWS, Cloudflare, CloudTrail, DPI, DynamoDB, EventBridge, FTP漏洞扫描, GPT-4o, GuardDuty, HTTP/HTTPS抓包, Kubernetes, Lambda, MITRE ATT&CK, OpenAI, Python, SecOps, Serverless, SNS, SOAR, Streamlit, VPC Flow Logs, 云安全架构, 仪表盘, 免杀技术, 内存规避, 威胁检测, 子域名变形, 安全告警, 安全编排, 安全运营, 异常检测, 态势感知, 扫描框架, 插件系统, 无后门, 暴力破解检测, 网络安全, 网络安全审计, 自动化响应, 访问控制, 逆向工具, 隐私保护