brookbdt/guardpost

GitHub: brookbdt/guardpost

一个针对 AWS GuardDuty 的云原生安全分诊流水线,通过确定性处理与受限 AI 辅助,将零散告警聚合并生成可操作的事件报告。

Stars: 0 | Forks: 0

# Guardpost 一个云原生 AI 辅助安全分诊流水线,使用 Terraform 配置 AWS 检测基础设施,摄取 GuardDuty 发现结果,使用 MITRE ATT&CK 上下文对其进行规范化和丰富化,将相关活动聚类为事件,并生成分析师就绪的风险评估和响应建议。 ## 架构 ``` AWS Infrastructure (Terraform) Python Detection Pipeline Outputs ┌─────────────────────────┐ ┌─────────────────────────────────┐ ┌──────────────┐ │ CloudTrail │ │ ingest │ │ Markdown │ │ GuardDuty ──────────────► │ normalize │ │ incident │ │ S3 (encrypted logs) │ │ enrich (MITRE ATT&CK) │───►│ reports │ │ IAM (least privilege) │ │ cluster │ │ │ │ SNS (alert routing) │ │ score (deterministic) │ │ JSON │ └─────────────────────────┘ │ triage (AI-assisted) ─────┐ │ │ artifacts │ │ report │ │ │ │ └────────────────────────────│────┘ │ Summary │ │ │ dashboard │ Claude API └──────────────┘ (structured clusters only) ``` **关键设计原则:** 确定性优于生成性。LLM 仅接收结构化的事件聚类 —— 绝不接收原始 JSON。所有解析、规范化、丰富化、聚类和评分均为确定性代码。 ## 快速开始 ``` # 1. 克隆项目并进入该目录 git clone cd guardpost # 2. 创建并激活 virtual environment python3 -m venv .venv source .venv/bin/activate # 3. 安装 package 和 dev dependencies pip install -e ".[dev]" ``` ## 运行流水线 以下所有命令均假设您位于项目根目录 (`guardpost/`) 且已激活虚拟环境。 ### 演示模式 (无需 AWS 凭证或 API 密钥) ``` # 在示例 GuardDuty 数据上运行完整 pipeline (AI triage 已禁用) python -m src.main --mode demo ``` ### 带 AI 分诊的演示模式 ``` # 请先设置您的 Anthropic API key export ANTHROPIC_API_KEY=your-key-here # 通过所有 7 个阶段运行 demo 数据,包括 AI triage python -m src.main --mode demo --triage ``` ### 实时模式 (需要 AWS 凭证) ``` # 确保已配置 AWS credentials (通过 aws configure, env vars, 或 IAM role) # 并设置用于 AI triage 的 Anthropic key export ANTHROPIC_API_KEY=your-key-here # 从您的 AWS account 运行实时 GuardDuty findings python -m src.main --mode live --triage ``` ### 自定义输出目录 ``` # 将报告写入自定义目录,而非默认的 output/ python -m src.main --mode demo --output-dir ./my-reports ``` ### CLI 帮助 ``` # 查看所有可用 flags 和用法示例 python -m src.main --help ``` ## 运行测试 ``` # 运行所有 tests pytest # 运行 tests 并显示详细输出 pytest -v # 运行 tests 并生成 coverage report pytest --cov=src # 运行指定的 test 文件 pytest tests/test_normalize.py pytest tests/test_enrich.py pytest tests/test_cluster.py pytest tests/test_score.py ``` ## Terraform 基础设施 `terraform/` 目录用于配置 AWS 安全遥测环境。所有 Terraform 命令必须在该目录内运行。 ``` # 进入 Terraform 目录 cd terraform # 初始化 Terraform providers 和 modules terraform init # 预览将要创建的内容 terraform plan # 部署 infrastructure terraform apply # 销毁所有已 provisioned 的资源 terraform destroy # 返回项目根目录 cd .. ``` ## 示例输出 运行 `python -m src.main --mode demo` 将通过完整流水线处理 10 个样本 GuardDuty 发现结果: - **10 个发现结果** 被规范化为标准 schema - **8 个事件聚类** 通过分组相关警报形成 - **确定性风险评分** 已分配 (0-100 分制) - **17 个报告文件** 已生成 (每个事件的 markdown + JSON,以及摘要仪表板) ![Demo Pipeline Output](https://raw.githubusercontent.com/brookbdt/guardpost/main/screenshots/demo-incident-clusters-output.png) ## 项目结构 ``` ├── src/ Python pipeline modules │ ├── main.py CLI entry point │ ├── schemas.py Pydantic data models (NormalizedAlert, IncidentCluster) │ ├── ingest.py Load findings from JSON or AWS API │ ├── normalize.py Flatten GuardDuty → canonical schema │ ├── enrich.py MITRE ATT&CK mapping + IP/resource context │ ├── cluster.py Group related alerts into incidents │ ├── score.py Deterministic risk scoring │ ├── triage.py AI-assisted triage via Claude API │ └── report.py Markdown + JSON report generation ├── terraform/ AWS infrastructure as code │ ├── main.tf Root module │ └── modules/ Child modules (cloudtrail, guardduty, s3, iam, sns) ├── data/ Sample findings and MITRE mappings ├── output/ Generated incident reports ├── tests/ pytest test suite └── docs/ Architecture and planning documents ``` ## 流水线阶段 | 阶段 | 模块 | 用途 | |-------|--------|---------| | 1. 摄取 | `ingest.py` | 从本地 JSON 或 AWS API 加载 GuardDuty 发现结果 | | 2. 规范化 | `normalize.py` | 将嵌套结构扁平化为标准 `NormalizedAlert` schema | | 3. 丰富化 | `enrich.py` | 添加 MITRE ATT&CK 映射,分类 IP,评估资源敏感度 | | 4. 聚类 | `cluster.py` | 按源 IP、发现类型、目标、时间窗口分组相关警报 | | 5. 评分 | `score.py` | 确定性风险评分 (严重性、数量、重现度、敏感度、技术风险) | | 6. 分诊 | `triage.py` | 通过 Claude 进行 AI 辅助分析 (仅限结构化聚类输入) | | 7. 报告 | `report.py` | 生成 markdown 事件报告、JSON 产物、摘要仪表板 | ## MITRE ATT&CK 覆盖范围 流水线将 GuardDuty 发现类型映射到 ATT&CK 技术: | 发现类型 | 技术 | 战术 | |-------------|-----------|--------| | SSH/RDP 暴力破解 | T1110 - Brute Force | Credential Access | | 端口探测 | T1046 - Network Service Discovery | Discovery | | 加密挖矿 | T1496 - Resource Hijacking | Impact | | 异常控制台登录 | T1078 - Valid Accounts | Initial Access | | 黑洞流量 | T1071/T1041 - C2/Exfiltration | Command and Control | | IAM 异常行为 | T1098/T1136 - Account Manipulation | Persistence | ## 风险评分 评分是确定性的且可解释的。每个聚类基于以下因素评分: - **严重性** (GuardDuty 原始严重性) - **发现数量** (更多发现 = 更高置信度) - **重现度** (时间窗口内的重复活动) - **目标敏感度** (生产环境/IAM 资源权重更高) - **技术风险** (凭证和持久化技术评分更高) AI 分诊层在此基础之上添加顾问式推理 —— 它不替代确定性评分。 ## AI 分诊契约 LLM **仅接收结构化的事件聚类摘要**,而非原始发现结果。它返回: - 执行摘要 - 风险推理 - 可能的攻击模式 - 调查步骤 (3-5 个具体行动) - 建议的响应行动 - 明确的不确定性 该模型是**分析师助手**,而非自主响应者。 ## 技术 - **Python 3.10+** 与 Pydantic, Rich - **Terraform** 用于 AWS 基础设施即代码 - **AWS** --- CloudTrail, GuardDuty, S3, IAM, SNS - **Anthropic Claude API** 用于 AI 辅助分诊 - **pytest** 用于测试 ## 许可证 MIT
标签:AMSI绕过, AWS, Claude, Cloudflare, CloudTrail, CVE检测, DevSecOps, DPI, ECS, GuardDuty, IAM, LLM, MITRE ATT&CK, Python, S3, SNS, SOAR, Terraform, Unmanaged PE, 上游代理, 事件关联, 合规监控, 威胁检测, 安全分诊, 安全管道, 安全规则引擎, 攻击聚类, 无后门, 漏洞分诊, 生成式AI, 索引, 自动化报告, 逆向工具