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, 剧本引擎, 可疑进程, 可观测性, 安全合规, 安全库, 安全运营中心, 审批流, 审计日志, 无后门, 暴力破解, 活动目录, 端点检测与响应, 网络代理, 网络映射, 脆弱性评估, 脱壳工具, 自动化响应, 逆向工具, 防火墙