thtcsec/GCP-Serverless-SOAR

GitHub: thtcsec/GCP-Serverless-SOAR

基于 GCP 无服务器架构的安全编排与自动化响应平台,实现从威胁检测、自动隔离到取证保全的全流程闭环。

Stars: 3 | Forks: 2

SOAR Logo

# 🚀 GCP Serverless 安全编排、自动化与响应 (SOAR) ![GCP](https://img.shields.io/badge/GoogleCloud-%234285F4.svg?style=for-the-badge&logo=google-cloud&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) 自动化安全事件响应平台,利用 Security Command Center 检测威胁,并在保留取证证据的同时自动隔离受损资源。 **[🇬🇧 英文架构指南](./ARCHITECTURE.md) | [🇻🇳 越南语说明](./ARCHITECTURE_vi.md)** ## 🏗️ 架构概览 ### 系统架构 ``` Threat Detection → Event Router → Message Queue → Workflow Engine → Workers ↓ ↓ ↓ ↓ ↓ GuardDuty/SCC → EventBridge/Eventarc → SQS/PubSub → Step Functions/Cloud Workflows → Container Workers ``` ### GCP 架构流程 ``` flowchart TD subgraph "Detection Layer" A[Security Command Center] --> D[Eventarc] B[Cloud Audit Logs] --> D C[Threat Detection] --> E[Pub/Sub] end subgraph "Processing Layer" D --> F[Cloud Workflows] E --> G[Cloud Run Workers] end subgraph "Response Layer" F --> H[Isolation Workers] F --> I[Forensics Workers] G --> J[Isolation Workers] G --> K[Forensics Workers] end subgraph "Notification Layer" H --> L[Slack/Jira/SIEM] I --> L J --> L K --> L end ``` ### 工作流过程 1. **检测:** SCC 检测威胁(严重程度 >= 7.0) 2. **事件路由:** Eventarc 路由到 Pub/Sub 队列 3. **工作流引擎:** Cloud Workflows 编排响应 4. **容器 Worker:** Cloud Run 执行长时间运行的操作 5. **人工审批:** 对关键操作进行人工审批 6. **集成:** Slack, Jira, SIEM 通知 ### 🖼️ 高层架构 ![Architecture Diagram](https://raw.githubusercontent.com/thtcsec/GCP-Serverless-SOAR/main/images/gcp_soar.png) ## 🕵️ 威胁场景 **场景:** 攻击者发现您面向公众的应用程序存在远程代码执行 (RCE) 漏洞,并安装了 Monero 加密货币矿工。 **检测:** 恶意软件开始向已知的矿池发出出站 DNS 请求。GCP Security Command Center 分析日志并将该实例标记为*高严重性*发现。 ### ⚙️ 逻辑数据流 ``` sequenceDiagram participant Attacker participant GCE as GCP Compute Engine participant SCC as Security Command Center participant PS as Pub/Sub Topic participant CW as Cloud Workflows participant CR as Cloud Run Workers participant Sec as Security Admin Attacker->>GCE: Exploits RCE vulnerability Attacker->>GCE: Downloads Crypto Miner GCE->>Internet: Makes unauthorized DNS queries (Mining Pool) rect rgb(255, 200, 200) Note over SCC,GCE: Detection Phase SCC->>GCE: Analyzes Network & Compute Logs SCC-->>PS: Generates High Severity Finding (Score: 8.5) end rect rgb(200, 220, 255) Note over PS,CW: Orchestration Phase PS-->>CW: Triggers Incident Response Workflow CW->>CW: Validates Finding & Extracts VM/Project ID end rect rgb(255, 230, 200) Note over CW,CR: Automated Response Phase CW->>GCE: Updates Network Tags (isolates VM) CW->>GCE: Blocks Project SSH Keys CW->>IAM: Detaches Service Account from VM CW->>GCE: Triggers Compute Disk Snapshot CW->>GCE: Executes stop_instance() end rect rgb(200, 255, 200) Note over CW,Sec: Forensic & Notification Phase CW->>CR: Dispatches Forensics Worker Container CR->>CR: Mounts Snapshot & Scans for Malware CR-->>CW: Returns Forensic Report CW->>Sec: Sends Slack/Jira Alert with Report end ``` **响应流程:** 1. SOAR 工作流在数秒内执行。 2. 通过将网络标签替换为 `isolated-vm` 标签来隔离实例,阻止所有入口和出口流量。 3. IAM 服务账号从 VM 分离。 4. SSH 密钥在项目级别被阻止 (`block-project-ssh-keys=TRUE`)。 5. 对 VM 的主磁盘进行快照,以供蓝队(Blue Team)分析。 6. VM 被停止以暂停本地执行。 ### 时间线/响应流程 ``` gantt title GCP SOAR Incident Response Timeline dateFormat s axisFormat %S section Detection SCC Analyzes Logs :a1, 0, 10s Eventarc Routes Finding :a2, after a1, 2s section Automated Response Pub/Sub Buffers Message :a3, after a2, 1s Workflow Validates Event :a4, after a3, 2s GCE Network Isolation :crit, a5, after a4, 3s SA Role Detachment :crit, a6, after a5, 2s Block SSH Keys :a7, after a6, 2s section Forensics Compute Disk Snapshotting :a8, after a7, 15s GCE Instance Shutdown :a9, after a8, 5s Cloud Run Malware Scan :a10, after a9, 45s section Notification Compile Final Report :a11, after a10, 2s Dispatch Slack/Jira Alert :a12, after a11, 1s ``` ## 🛡️ 高级功能 ### 🧠 AI/ML 威胁情报 (阶段 9) - **威胁分类器:** 机器学习驱动引擎,根据历史攻击模式预测事件严重程度,映射到 MITRE ATT&CK TTP,并自动生成响应剧本。 - **行为分析:** 为 Service Account 建立行为基线,以检测 IP 位置、时间模式(非工作时间)和 API 操作频率方面的异常。 - **攻击预测器:** 预测性安全模块,分析历史事件以预测可能的未来攻击向量,并生成前瞻性的安全建议。 ### 工作流引擎 (Cloud Workflows) - 针对关键操作的**人工审批**工作流 - 带有重试逻辑的**多步骤事件响应** - 用于隔离和取证的**并行执行** - **错误处理**和死信队列处理 ### 消息队列层 (Pub/Sub) - **缓冲层**防止攻击期间系统过载 - **死信主题 (Dead Letter Topics)** 处理失败的流程 - **批处理**以提高性能 - **跨项目消息路由** ### 容器 Worker (Cloud Run) - **长时间运行的操作**(15分钟以上的取证扫描) - **全环境**访问权限,用于全面分析 - 具备自动扩缩容能力的**可扩展计算** - **健康监控**和优雅降级 ### 多项目安全 - 具有跨项目角色的**集中式安全项目** - **SCC 组织**配置 - **跨项目事件响应**能力 - 带有外部 ID 的**安全身份联合** ### 集成 - **Slack/Teams** 用于实时通知 - **Jira/ServiceNow** 用于工单管理 - **SIEM 集成** (Chronicle, Splunk, Elastic) - **威胁情报**源 (VirusTotal, AbuseIPDB) - 用于基于决策编排的**自动评分引擎** ### 多云编排 - **统一事件规范化器**将 SCC/AuditLog 事件转换为标准的 `UnifiedIncident` schema - **事件关联器**通过共享 IOC(IP、行为者、±5 分钟时间窗口)对相关警报进行分组 - 通过 BFS 聚类进行**战役检测 (Campaign Detection)**,用于识别多阶段攻击 ### AI/ML 异常检测 - 用于行为异常检测的 **Isolation Forest** 模型 - 当 ML 模型尚未训练时的 **Z-Score 备选方案** - **特征向量**:`hour_of_day`, `day_of_week`, `ip_reputation_score`, `action_risk_level`, `request_frequency` - **增强评分**:异常提升 (+15) 自动提高风险等级 ### 进程级隔离 (Compute Engine) - 通过 metadata 脚本在 GCE 上直接**终止恶意进程** - **隔离可疑文件**至 `/var/quarantine` - **可疑进程检测**(xmrig, cryptominer, kinsing 等) - **隔离层级**:Function > Process > Permissions > Network ### 审计追踪与合规 - 对所有 SOAR 操作(隔离、评分、审批)进行**不可变审计日志记录** - **Cloud Logging** 集成,用于实时审计流传输 - **GCS 归档**,用于长期审计保留和合规 - 可按资源、操作类型或时间范围**过滤的审计查询** ### 监控与可观测性 (Terraform) - **Cloud Monitoring Dashboard**,包含函数执行量、错误率、MTTR - 针对 Cloud Function 错误和 Pub/Sub 积压的**告警策略 (Alerting Policies)** - **Cloud Workflows 执行跟踪**(成功/失败) - **Cloud Run** 取证 worker 指标 ### 密钥轮换 - 对所有 SOAR API 密钥进行**自动化密钥时长检测** - 带审计追踪的 **Secret Manager 版本轮换** - 具有可配置阈值的 **90 天轮换策略** - 用于合规仪表板的**轮换报告** ### GenAI 事件摘要 (Vertex AI) - 通过 Gemini (gemini-3-flash-preview) 生成 **AI 驱动的警报摘要**并注入到 Slack 通知中 - 当 Vertex AI 不可用时**自动回退**到基于规则的模板 - **可操作的上下文**:发生了什么、受影响的资源、严重程度、建议的后续步骤 ## 🗂️ 项目结构 - `src/`:Cloud Functions 和 Cloud Run 响应器的 Python 代码。 - `main.py`:主 GCE 事件响应剧本 - `storage_exfil_response.py`:存储数据泄露检测与响应 - `sa_compromise_response.py`:服务账号失陷检测与响应 - `core/event_normalizer.py`:统一事件规范化 (→ `UnifiedIncident`) - `core/correlator.py`:跨云事件关联引擎 - `integrations/anomaly_detector.py`:ML 异常检测 - `integrations/scoring.py`:带有异常提升的风险评分引擎 - `integrations/intel.py`:多源威胁情报 - `core/process_containment.py`:通过 Compute Engine metadata 进行进程级隔离 - `core/audit_logger.py`:带有 Cloud Logging/GCS 归档的结构化审计追踪 - `core/secret_rotation.py`:API 密钥轮换管理器(90 天策略) - `terraform/`:用于部署所有 GCP 资源的基础设施即代码 定义。 - `modules/monitoring/`:Cloud Monitoring Dashboard 和告警策略 - `attack_simulation/`:交互式攻击模拟器容器(针对 GCE、Storage 和 SA 的脚本的 Docker 封装)。 ## 🥊 攻击模拟器 为了测试 SOAR 能力,提供了一个强大的内置红队 Docker 容器。 您不需要手动导出凭据;容器会自动映射您本地的 gcloud 凭据。 ``` # 从项目根目录: docker compose run --rm attacker ``` 这将启动一个交互式菜单,允许您: 1. 触发 GCE 加密货币矿工 2. 触发 Cloud Storage 数据泄露 3. 触发服务账号失陷 - `containers/`:Cloud Run 取证 worker 配置。 ## 🚀 部署 我们为整个平台提供了一个完全自动化的部署脚本。 **👉 请参阅详细的 [部署指南](./Deployment.md) 以了解完整的前置条件、分步说明和故障排除。** ### 环境结构 ``` terraform/ ├── modules/ # Reusable modules │ ├── workflows/ # Cloud Workflows │ ├── queues/ # Pub/Sub and Eventarc │ ├── containers/ # Cloud Run workers │ └── security/ # Multi-project security ├── environments/ # Environment-specific configs │ ├── dev/ # Development environment │ ├── staging/ # Staging environment │ └── prod/ # Production environment └── existing/ # Original basic setup ``` ### TL;DR 快速部署 ``` # 1. Clone repository git clone https://github.com/thtcsec/GCP-Serverless-SOAR.git cd GCP-Serverless-SOAR # 2. 运行部署脚本(部署 Terraform,构建 Cloud Run 容器,设置 Secrets) ./scripts/deploy.sh prod deploy # 3. 配置 Integrations (Slack/Jira) gcloud secrets create slack-webhook-url --replication-policy automatic echo "YOUR_WEBHOOK_URL" | gcloud secrets versions add slack-webhook-url --data-file=- ``` ## 📊 安全覆盖范围 | 威胁类型 | 检测 | 响应时间 | 风险决策 | 高级功能 | |-------------|-----------|---------------|---------------|-------------------| | GCE 失陷 | SCC | < 30s | 评分引擎 | 工作流审批,容器取证 | | 存储数据泄露 | Audit Logs | < 60s | 评分引擎 | 多情报充实,SIEM 集成 | | SA 失陷 | Audit Logs | < 45s | 评分引擎 | 基于决策的编排,工单系统 | | DDoS 攻击 | VPC Flow Logs | < 15s | 聚合 | 队列缓冲,自动扩缩容 | ## 🔧 配置 ### 本地开发环境 仓库根目录中提供了 `.env.example` 文件,记录了剧本使用的所有 OS 环境变量。 - 对于本地测试,将此文件复制到 `.env` 并调整值。 - 在生产环境中,这些参数由 Terraform 安全地注入到 Cloud Functions 运行时中。 ### 变量 - `worker_desired_count`:容器 worker 实例(prod: 3, dev: 1) - `approval_wait_time`:人工审批超时(prod: 3600s, dev: 300s) - `enable_multi_project`:跨项目安全(默认:true) - `enable_integrations`:Slack/Jira/SIEM(默认:true) ### 集成设置 ``` # Slack integration gcloud secrets create slack-webhook-url --replication-policy automatic echo "WEBHOOK_URL" | gcloud secrets versions add slack-webhook-url --data-file=- # Jira integration gcloud secrets create jira-url --replication-policy automatic echo "https://your-domain.atlassian.net" | gcloud secrets versions add jira-url --data-file=- gcloud secrets create jira-username --replication-policy automatic echo "email@example.com" | gcloud secrets versions add jira-username --data-file=- gcloud secrets create jira-api-token --replication-policy automatic echo "API_TOKEN" | gcloud secrets versions add jira-api-token --data-file=- gcloud secrets create jira-project-key --replication-policy automatic echo "SEC" | gcloud secrets versions add jira-project-key --data-file=- # SIEM integration gcloud secrets create siem-api-key --replication-policy automatic echo "API_KEY" | gcloud secrets versions add siem-api-key --data-file=- ``` ## 💰 成本估算 由于此平台完全构建在原生 Serverless 架构上,成本得到了高度优化,并且严格**按需付费**。几乎零闲置成本。 ### 预计每月成本(低/中等流量):`~$5 - $15 / 月` - **GCP Security Command Center:** Premium 层级通常按您 GCP 总消费的百分比计费。但是,Standard 层级是免费的,可检测基本的错误配置。威胁检测依赖于 SCC Premium 或 Audit Logs。 - **Cloud Workflows:** 每月 5,000 个免费内部步骤。由于 SOAR 工作流仅在发现关键问题时触发,您可能会保持在免费层级内(**$0**)。 - **Cloud Functions:** 每月 200 万次免费调用。用于事件路由的使用量可以忽略不计(**$0**)。 - **Pub/Sub / Eventarc:** 每月 10 GB 免费消息传递。事件量极小(**$0**)。 - **Cloud Run (Forensics Workers):** 按每 100 毫秒的计算时间计费。由于取证容器仅在事件发生期间启动并运行约 5-15 分钟,成本极低(**< $2/月**)。 - **威胁情报:** 免费的社区 API 密钥将查询限制为约 500-1000 次/天。对于 SOAR 警报来说绰绰有余(**$0**)。 *注意:启用组织级别的审计日志或在攻击量大的环境中运行,将按比例增加日志记录和存储成本。* ## 📄 许可证 本项目基于 **Apache License 2.0** 授权。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AMSI绕过, Cloud Run, Cloud Workflows, DevSecOps, ECS, Eventarc, GCP, Google Cloud Platform, IaC 安全, Incident Response, Infrastructure as Code, Pub/Sub, Python, Security Command Center, Serverless, SIEM 集成, SOAR, Terraform, 上游代理, 不可变基础设施, 域环境安全, 威胁检测, 安全告警, 数字取证, 无后门, 自动化脚本, 请求拦截, 资源隔离, 逆向工具, 速率限制