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 |
## 仪表板
### 安全运营概览

### 实时警报源

### 带有 AI 分类的警报详情

### 参与者历史追踪

### 响应动作日志

### 指标和 MITRE 覆盖范围

## 电子邮件警报示例
### Root 账户使用 (CRITICAL)

### 暴力破解登录 (HIGH)

### 不可能旅行 (HIGH)

## 指标摘要
| 指标 | 数值 |
|---|---|
| 生成的警报总数 | 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, 云安全架构, 仪表盘, 免杀技术, 内存规避, 威胁检测, 子域名变形, 安全告警, 安全编排, 安全运营, 异常检测, 态势感知, 扫描框架, 插件系统, 无后门, 暴力破解检测, 网络安全, 网络安全审计, 自动化响应, 访问控制, 逆向工具, 隐私保护