mthwmnz/incident-response-automation

GitHub: mthwmnz/incident-response-automation

一个轻量级 SOC playbook 自动化引擎,通过 YAML 声明式定义事件响应流程,结合审批关卡和审计日志,将手动遏制时间从数十分钟压缩到两分钟以内。

Stars: 0 | Forks: 0

# 事件响应自动化 自动化 SOC playbook 引擎。接收告警,对防火墙 / EDR / 目录 API 执行 YAML 定义的响应 playbook,并生成完整的审计追踪记录。旨在将平均遏制时间 (MTTC) 从 45 分钟的手动操作缩短至 2 分钟以内。 ## 功能介绍 - 加载以纯 YAML 声明的 playbook —— 不仅限于工程师,分析人员也能轻松阅读 - 将操作分发给可替换的供应商客户端 (Palo Alto 防火墙、CrowdStrike EDR、Active Directory、Slack) - 为高风险操作设置审批步骤关卡 - 将每一次决策和 API 调用写入 SQLite 审计日志 - 内置端到端模拟暴力破解攻击的演示 ## 包含的 Playbook | Playbook | 触发条件 | 响应操作 | |---|---|---| | `brute_force_attack` | 5 分钟内出现 50+ 次登录失败 | 封禁 IP,锁定账户,强制重置密码,通知 SOC | | `suspicious_process` | EDR 标记临时目录中的未知二进制文件 | 终止进程,隔离文件,发送通知 | | `data_exfiltration` | 向未知 IP 进行大量出站传输 | *审批关卡* → 隔离主机,封锁目标地址,呼叫 IR 人员 | ## 快速开始 ``` pip install -e . python demo.py ``` 演示程序会加载暴力破解 playbook,并模拟 IP `185.220.101.42` 对用户 `jsmith` 发起的 50 次登录失败。你将看到分发的每一步操作、每个模拟 API 调用以及最终的审计日志。 运行测试: ``` pip install -e ".[dev]" pytest ``` ## 架构 ``` Alert -> Rules Engine -> Actions -> Vendor APIs | | | v v v +-----------------------------------------------+ | SQLite Audit Log | +-----------------------------------------------+ | v Slack / Jira ``` - **规则引擎** ([src/engine.py](src/engine.py)) —— 加载 YAML playbook,按顺序分发操作,遵循审批关卡,写入审计事件。 - **操作注册表** ([src/actions.py](src/actions.py)) —— 将 `firewall.block_ip`、`edr.kill_process` 等操作映射到调用正确客户端的处理函数。 - **客户端适配器** ([src/clients/](src/clients/)) —— 基于 `Protocol` 的接口及 mock 实现。真正的 SDK 调用可以作为直接替换加入。 - **审计日志** ([src/audit.py](src/audit.py)) —— SQLite schema,每个分发的操作对应一行记录,包含输入、输出、延迟和状态。 - **审批关卡** ([src/approvals.py](src/approvals.py)) —— 可插拔的审批提供者 (测试使用自动审批,演示使用 CLI 提示,生产环境使用 webhook)。 ## 为什么优先使用 Mock 每个供应商集成都在带有 mock 实现的 `Protocol` 接口之后。这意味着: 1. 项目可以在无需任何供应商凭证的情况下端到端运行 2. 将 `MockPaloAlto` 替换为真正的 `PaloAltoClient` 只需在 [demo.py](demo.py) 中修改一行代码 3. 测试保持快速且自包含 —— 无需网络,无需沙箱设置 真正的 CrowdStrike Falcon / Palo Alto PAN-OS / AD 集成将在获得沙箱访问权限后的第二阶段进行。 ## 值得强调的设计决策 - **纯 YAML,无 Jinja。** Playbook 使用受限制的 `{{ alert.field }}` 模板语法 —— 没有表达式,没有代码执行。这确保了分析人员可以安全地编辑 playbook,而不会暴露代码注入攻击面。 - **每个操作仅生成一行审计记录**,包括审批通过、拒绝和失败情况。`audit_events.incident_id` 是还原事件全貌的唯一主键。 - **审批是数据驱动的,而非硬编码。** Playbook 中的操作通过标记 `requires_approval: true` 并提供上报通道来实现;引擎会调用可插拔的 `ApprovalProvider`。在第二阶段可无缝替换为基于 webhook 的 UI。 - **on_failure 针对每个操作独立配置。** 某些操作是独立的 (例如封禁 IP 后通知 Slack —— 即使 Slack 宕机,封禁操作依然有效)。其他操作则存在依赖关系 (例如,如果进程未被终止,就不要隔离其相关文件)。这些策略均在 YAML 中声明。 ## 路线图 - **第一阶段 (当前):** 单进程引擎,YAML playbook,mock 客户端,SQLite 审计,CLI 演示 - **第二阶段:** SIEM 接入 (Splunk/ELK),真正的供应商 SDK 调用,PostgreSQL 审计,Webhook 审批 UI - **第三阶段:** Celery 任务队列,Prometheus 指标,Docker Compose,重试/退避策略 ## 项目结构 ``` incident-response-automation/ playbooks/ # YAML playbook definitions (analyst-editable) src/ engine.py # rules engine — orchestration playbook.py # YAML loader + schema actions.py # action registry audit.py # SQLite audit log approvals.py # manual approval gates templating.py # safe parameter substitution clients/ base.py # Protocol interfaces firewall.py # Palo Alto (mock) edr.py # CrowdStrike (mock) directory.py # Active Directory (mock) notifier.py # Slack (mock) tests/ demo.py ```
标签:API集成, EDR, Jira集成, MTTC, PE 加载器, PoC, Python, Slack集成, SOAR, SQLite, YAML, 剧本引擎, 可疑进程, 可观测性, 安全合规, 安全库, 安全运营中心, 审批流, 审计日志, 无后门, 暴力破解, 活动目录, 端点检测与响应, 网络代理, 网络映射, 脆弱性评估, 脱壳工具, 自动化响应, 逆向工具, 防火墙