thtcsec/AWS-Serverless-SOAR

GitHub: thtcsec/AWS-Serverless-SOAR

基于AWS原生Serverless架构的开源安全编排与自动化响应平台,实现从威胁检测、自动隔离到取证分析的全流程闭环。

Stars: 2 | Forks: 5

SOAR Logo

# 🚀 AWS Serverless 安全编排、自动化与响应 (SOAR) ![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge&logo=amazon-aws&logoColor=white) ![Terraform](https://img.shields.io/badge/terraform-%235835CC.svg?style=for-the-badge&logo=terraform&logoColor=white) ![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) ![Checkov](https://img.shields.io/badge/Checkov-IaC%20Scan-blueviolet?style=for-the-badge) ![Serverless](https://img.shields.io/badge/serverless-%23FD5750.svg?style=for-the-badge&logo=serverless&logoColor=white) 自动化安全事件响应平台,可检测威胁并自动隔离受损资源,同时保留取证证据。 **[🇬🇧 English Architecture Guide](./ARCHITECTURE.md) | [🇻🇳 Bản giải thích tiếng Việt](./ARCHITECTURE_vi.md)** ## 架构概览 ### 系统架构 ``` Threat Detection → Event Router → Message Queue → Workflow Engine → Workers ↓ ↓ ↓ ↓ ↓ GuardDuty/SCC → EventBridge/Eventarc → SQS/PubSub → Step Functions/Cloud Workflows → Container Workers ``` ### 逻辑数据流 ``` sequenceDiagram participant Attacker participant EC2 as AWS EC2 participant GD as GuardDuty participant SQS as AWS SQS participant SFN as Step Functions participant ECS as Fargate Workers participant Sec as Security Team Attacker->>EC2: Exploits RCE vulnerability Attacker->>EC2: Downloads Crypto Miner EC2->>Internet: Makes unauthorized DNS queries (Mining Pool) rect rgb(255, 200, 200) Note over GD,EC2: Detection Phase GD->>EC2: Analyzes VPC Flow Logs & DNS GD-->>SQS: Generates High Severity Finding (Score: 8.5) end rect rgb(200, 220, 255) Note over SQS,SFN: Orchestration Phase SQS-->>SFN: Triggers Incident Response State Machine SFN->>SFN: Validates Finding & Extracts Instance ID end rect rgb(255, 230, 200) Note over SFN,ECS: Automated Response Phase SFN->>EC2: Modifies Security Group (Isolate) SFN->>EC2: Enforces IMDSv2 SFN->>IAM: Detaches Instance Profile Roles SFN->>IAM: Attaches Deny-All Session Policy SFN->>EC2: Triggers EBS Volume Snapshot SFN->>EC2: Executes stop_instances() end rect rgb(200, 255, 200) Note over SFN,Sec: Forensic & Notification Phase SFN->>ECS: Dispatches Forensics Worker Task ECS->>ECS: Mounts Snapshot & Scans for Malware ECS-->>SFN: Returns Forensic Report SFN->>Sec: Sends Slack/Jira Alert with Report end ``` ### 工作流流程 1. **检测:** GuardDuty 检测威胁(严重性 >= 7.0) 2. **事件路由:** EventBridge 路由至 SQS 队列 3. **工作流引擎:** Step Functions 编排响应 4. **容器工作者:** ECS Fargate 执行长时间运行的操作 5. **人工审批:** 对关键操作进行人工审批 6. **集成:** Slack, Jira, SIEM 通知 ### 🖼️ 高层架构 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/a8b7acf84c150220.png) ## 🕵️ 威胁场景 **场景:** 攻击者发现您面向公众的应用程序存在远程代码执行 (RCE) 漏洞,并安装了 Monero 加密货币挖矿程序。 **检测:** 恶意软件开始向已知的矿池发出出站 DNS 请求(例如 `pool.minexmr.com`)。GuardDuty 分析 DNS 日志并将该实例标记为*高严重性*发现 (`CryptoCurrency:EC2/BitcoinTool.B`)。 **响应流程:** 1. 在几秒钟内,SOAR 工作流执行。 2. 实例被切断网络。 3. 其元数据端点被锁定。 4. 所有活跃的 AWS 权限被显式撤销。 5. 其硬盘被制作快照供蓝队分析。 6. 服务器关闭。 ### 时间线/响应流程 ``` gantt title SOAR Incident Response Timeline dateFormat s axisFormat %S section Detection GuardDuty Analyzes Logs :a1, 0, 10s EventBridge Routes Finding :a2, after a1, 2s section Automated Response SQS Buffers Message :a3, after a2, 1s SFN Validates Event :a4, after a3, 2s EC2 Network Isolation :crit, a5, after a4, 3s IAM Role Detachment :crit, a6, after a5, 2s IMDSv2 Enforcement :a7, after a6, 2s section Forensics EBS Volume Snapshotting :a8, after a7, 15s EC2 Instance Shutdown :a9, after a8, 5s Fargate Malware Scan :a10, after a9, 45s section Notification Compile Final Report :a11, after a10, 2s Dispatch Slack/Jira Alert :a12, after a11, 1s ``` ## 🗂️ 项目结构 - `src/`: AWS Lambda 响应器的 Python 代码。 - `lambda_function.py`: 主要的 EC2 事件响应剧本 - `s3_exfiltration_response.py`: S3 数据渗透检测与响应 - `iam_compromise_response.py`: IAM 凭证泄露检测与响应 - `core/event_normalizer.py`: 统一事件规范化 (→ `UnifiedIncident`) - `core/correlator.py`: 跨云事件关联引擎 - `integrations/anomaly_detector.py`: ML 异常检测 (Isolation Forest) - `integrations/scoring.py`: 带有异常加成的风险评分引擎 - `integrations/intel.py`: 多源威胁情报 (VirusTotal, AbuseIPDB) - `core/process_containment.py`: 通过 SSM Run Command 进行进程级隔离 - `core/audit_logger.py`: 结构化审计跟踪,包含 CloudWatch/S3 归档 - `core/secret_rotation.py`: API 密钥轮换管理器(90 天策略) - `terraform/`: 用于部署所有 AWS 资源的 Infrastructure as Code (IaC) 定义。 - `modules/monitoring/`: CloudWatch Dashboard 和 Alarms - `attack_simulation/`: 交互式攻击模拟器容器(针对 EC2、S3 和 IAM 的脚本的 Docker 包装器)。 ## 🥊 攻击模拟器 为了测试 SOAR 能力,提供了一个强大的内置红队 Docker 容器。 您无需手动导出凭证;容器会自动映射您的本地 AWS 凭证。 ``` # 从项目根目录: docker compose run --rm attacker ``` 这将启动一个交互式菜单,允许您: 1. 触发 EC2 加密挖矿 2. 触发 S3 渗透 3. 触发 IAM SSRF 凭证泄露 ## 🛡️ 高级功能 ### 🧠 AI/ML 威胁情报 (Phase 9) - **威胁分类器:** ML 驱动的引擎,可根据历史攻击模式预测事件严重性、映射到 MITRE ATT&CK TTP,并自动生成响应剧本。 - **行为分析:** 为用户和服务账户建立行为基线,以检测 IP 位置、时间模式(非工作时间)和 API 操作频率的异常。 - **攻击预测器:** 预测性安全模块,分析历史事件以预测未来可能的攻击途径,并生成主动安全建议。 ### 工作流引擎 - 针对关键操作的**人工审批**工作流 - 带有重试逻辑的**多步事件响应** - 用于隔离和取证的**并行执行** - **错误处理**和死信队列处理 ### 消息队列层 - **缓冲层**防止攻击期间系统过载 - **死信队列**处理失败的流程 - **批处理**以提高性能 - **跨账户消息路由** ### 容器工作者 - **长时间运行的操作**(15 分钟以上的取证扫描) - **完整环境**访问以进行全面分析 - 具有自动伸缩功能的**可扩展计算** - **健康监控**和优雅降级 ### 多账户安全 - 具有跨账户角色的**集中式安全账户** - **GuardDuty master/member** 配置 - **跨账户事件响应**能力 - 带有外部 ID 的**安全角色假设** ### 集成 - 用于实时通知的 **Slack/Teams** - 用于工单管理的 **Jira/ServiceNow** - **SIEM 集成** (Splunk, Chronicle, Elastic) - **威胁情报**源 (VirusTotal, AbuseIPDB) - 用于基于决策编排的**自动评分引擎** ### 多云编排 - **统一事件规范化器**将 GuardDuty/CloudTrail 事件转换为标准的 `UnifiedIncident` schema - **事件关联器**通过共享 IOC(IP、行动者、±5 分钟时间窗口)对相关警报进行分组 - 通过 BFS 聚类进行**战役检测**,以识别多阶段攻击 ### AI/ML 异常检测 - 用于行为异常检测的 **Isolation Forest** 模型 - 当 ML 模型尚未训练时的 **Z-Score 备用方案** - **特征向量**:`hour_of_day`, `day_of_week`, `ip_reputation_score`, `action_risk_level`, `request_frequency` - **增强评分**:异常加成 (+15) 自动提升风险等级 ### 进程级隔离 (SSM) - 通过 SSM Run Command 直接在 EC2 上**终止恶意进程** - **隔离可疑文件**至 `/var/quarantine` - **可疑进程检测**(xmrig, cryptominer, kinsing 等) - **隔离层级**:函数 > 进程 > 权限 > 网络 ### 审计跟踪与合规 - 对所有 SOAR 操作(隔离、评分、审批)的**不可变审计日志** - 用于实时审计流式传输的 **CloudWatch Logs** 集成 - 用于长期审计保留和合规的 **S3 归档** - 可按资源、操作类型或时间范围进行**可过滤审计查询** ### 监控与可观测性 - 包含事件量、错误率、MTTR、SQS 深度的 **CloudWatch Dashboard** - 针对 Lambda 错误和 DLQ 积压的 **CloudWatch Alarms** - **Step Functions 执行跟踪**(成功/失败/超时) - 用于剧本成功率的 **SLO/SLI 指标** ### 密钥轮换 - 对所有 SOAR API 密钥的**自动化密钥年龄检测** - 带有审计跟踪的 **SSM Parameter Store 轮换** - 具有可配置阈值的 **90 天轮换策略** - 用于合规仪表板的**轮换报告** ### GenAI 事件摘要 - 通过 Claude 3 Haiku 注入到 Slack 通知中的 **AI 驱动警报摘要** - 当 Bedrock 不可用时**自动回退**到基于规则的模板 - **可操作的上下文**:发生了什么、受影响的资源、严重性、建议的下一步 ## 🚀 部署 我们为整个平台提供了全自动部署脚本。 **👉 请参阅详尽的 [部署指南](./Deployment.md) 以获取完整的先决条件、分步说明和故障排除。** ### 环境结构 ``` terraform/ ├── modules/ # Reusable modules │ ├── network/ # VPC, subnets, security groups │ ├── soar/ # Core SOAR infrastructure │ ├── events/ # EventBridge and routing │ ├── security/ # Multi-account security │ └── integrations/ # Slack, Jira, SIEM ├── environments/ # Environment-specific configs │ ├── dev/ # Development environment │ ├── staging/ # Staging environment │ └── prod/ # Production environment └── global/ # Global resources and state ``` ### TL;DR 快速部署 ``` # 1. 克隆仓库 git clone https://github.com/thtcsec/AWS-Serverless-SOAR.git cd AWS-Serverless-SOAR # 2. 运行部署脚本 (部署 Terraform, 构建 Fargate 容器, 设置 SSM) ./scripts/deploy.sh prod deploy # 3. 配置 Integrations (Slack/Jira) aws ssm put-parameter --name "/soar/slack/webhook_url" --value "YOUR_WEBHOOK_URL" --type "SecureString" ``` ## 📊 安全覆盖范围 | 威胁类型 | 检测 | 响应时间 | 风险决策 | 高级功能 | |-------------|-----------|---------------|---------------|-------------------| | EC2 凭证泄露 | GuardDuty | < 30s | 评分引擎 | 工作流审批,容器取证 | | S3 渗透 | CloudTrail | < 60s | 评分引擎 | 多情报丰富化,SIEM 集成 | | IAM 凭证泄露 | CloudTrail | < 45s | 评分引擎 | 基于决策的编排,工单管理 | | DDoS 攻击 | VPC Flow Logs | < 15s | 聚合 | 队列缓冲,自动伸缩 | ## 🔧 配置 ### 本地开发环境 存储库根目录中提供了 `.env.example` 文件,记录了剧本使用的所有 OS 环境变量。 - 对于本地测试,将此文件复制到 `.env` 并调整值。 - 在生产中,这些参数由 Terraform 安全地注入到 Lambda runtime。 ### 变量 - `worker_desired_count`: 容器工作者实例 (prod: 3, dev: 1) - `approval_wait_time`: 人工审批超时 (prod: 3600s, dev: 300s) - `enable_multi_account`: 跨账户安全 (default: true) - `enable_integrations`: Slack/Jira/SIEM (default: true) ### 集成设置 ``` # Slack integration aws ssm put-parameter --name "/soar/slack/webhook_url" --value "URL" --type "SecureString" # Jira integration aws ssm put-parameter --name "/soar/jira/url" --value "https://your-domain.atlassian.net" --type "String" aws ssm put-parameter --name "/soar/jira/user" --value "email@example.com" --type "String" aws ssm put-parameter --name "/soar/jira/api_token" --value "TOKEN" --type "SecureString" aws ssm put-parameter --name "/soar/jira/project_key" --value "SEC" --type "String" # SIEM integration aws ssm put-parameter --name "/soar/siem/api_key" --value "KEY" --type "SecureString" ``` ## 💰 成本估算 由于该平台完全基于原生 Serverless 架构构建,因此成本经过了深度优化,并严格遵循**按需付费**模式。几乎零闲置成本。 ### 预估月度成本(低/中流量):`~$5 - $15 / 月` - **AWS GuardDuty:** 按分析的 VPC Flow Logs / CloudTrail 事件的 GB 数定价。对于小型/中型环境,通常在 **$5-10/月** 以下。 - **AWS Step Functions:** 每月 4,000 次免费状态转换。之后,每 1,000 次标准转换 $0.025。SOAR 工作流仅在关键发现时触发,因此成本可以忽略不计(**< $1/月**)。 - **AWS Lambda:** 每月 100 万次免费请求。您可能永远不会超过 SOAR 操作的免费层级(**$0**)。 - **AWS SQS / EventBridge:** 两者都提供海量的免费层级(100 万次以上事件)。此平台的使用量可以忽略不计(**$0**)。 - **AWS ECS Fargate:** 按取证任务的计算秒数计费。由于任务仅在事件期间启动并运行约 5-15 分钟,因此成本极低(**< $2/月**)。 - **威胁情报:** 免费的社区 API 密钥将查询限制为约 500-1000 次/天。对于 SOAR 警报来说绰绰有余(**$0**)。 *注意:启用多账户组织跟踪或在攻击量大的环境中运行,将根据日志量按比例增加成本。* ## 📄 许可证 本项目采用 **Apache License 2.0** 许可。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AMSI绕过, AWS, AWS Fargate, DevSecOps, DPI, EC2 隔离, ECS, Go语言工具, GuardDuty, IaC 安全, IP 地址批量处理, Python, Serverless, SOAR, Step Functions, Terraform, 上游代理, 勒索软件防护, 威胁检测, 安全编排与自动化响应, 挖矿病毒检测, 数字取证, 无后门, 自动化脚本, 请求拦截, 逆向工具