DEDSHOT007/incident-response-splunk-soar_n8n
GitHub: DEDSHOT007/incident-response-splunk-soar_n8n
这是一个为 Splunk SOAR 设计的应急响应剧本库,附带 n8n 测试环境,用于自动化处理和验证安全事件响应流程。
Stars: 0 | Forks: 0
# Splunk SOAR — 应急响应剧本 + n8n 模拟测试环境
此仓库包含核心应急响应剧本(IRP)、所有共享的实用工具剧本(UTL),以及一个完整的基于 n8n 的模拟测试环境,涵盖所有三个 IRP 的 63 个场景。
## 环境
| 属性 | 值 |
|---|---|
| **Splunk SOAR 版本** | 8.4.0.166 |
| **UI 版本** | 2.7.40(远程模式) |
| **Python 版本** | 3.13 |
| **架构版本** | 5.0.24 |
| **剧本类型** | 自动化 |
## 仓库结构
```
/
├── IRP-01-Phishing/
│ ├── IRP-01-Phishing.py
│ ├── IRP-01-Phishing.json
│ └── README.md
│
├── IRP-02-Ransomware/
│ ├── IRP-02-Ransomware.py
│ ├── IRP-02-Ransomware.json
│ └── README.md
│
├── IRP-03-Lateral_Movement/
│ ├── IRP-03-Lateral_Movement.py
│ ├── IRP-03-Lateral_Movement.json
│ └── README.md
│
├── utilities/
│ ├── UTL-01-ArtifactExtractor.py
│ ├── UTL-03-Incident_Note_Writer.py
│ ├── UTL-04-Analyst_Prompt_Human_gate_.py
│ ├── UTL-05__IOC_Deduplicator.py
│ ├── UTL-06-Metrics_Collector.py
│ ├── UTL-07-Threat-Scoring.py
│ └── README.md
│
├── test-harness/
│ ├── SOAR_IRP_Test_Harness_63_Scenarios.json
│ ├── IRP-01_Phishing_Scenarios.csv
│ ├── IRP-02_Ransomware_Scenarios.json
│ └── IRP-03_LateralMovement_Scenarios.xml
│
└── README.md ← you are here
```
## 剧本一览
### 应急响应剧本(IRP)
| 剧本 | 触发器 | 关键集成 | MITRE ATT&CK | 测试场景 |
|---|---|---|---|---|
| IRP-01 钓鱼 | `artifact_created` 标签:`phishing` | OTX, VirusTotal, Phantom | T1566.001, T1566.002, T1598.003, T1583.001 | 21 个 (SC-P01–SC-P21) |
| IRP-02 勒索软件 | `artifact_created` | OTX, VirusTotal, AbuseIPDB, Phantom | T1486, T1490 | 21 个 (SC-R01–SC-R21) |
| IRP-03 横向移动 | `artifact_created` | VirusTotal, AbuseIPDB, Phantom | T1021, T1550 | 21 个 (SC-L01–SC-L21) |
### 实用工具剧本(UTL)
所有 IRP 调用的共享构建模块。在任何 IRP 运行之前,必须将其导入 SOAR 的 `local/` 目录下。
| 实用工具 | 用途 | 调用者 |
|---|---|---|
| UTL-01 ArtifactExtractor | 提取并映射所有 CEF 字段到结构化的 `ioc_map` | IRP-01, IRP-02, IRP-03 |
| UTL-03 Incident Note Writer | 向容器写入结构化的 NIST 阶段注释 | IRP-01, IRP-02, IRP-03 |
| UTL-04 Analyst Prompt(人工关卡) | 暂停自动化,提示分析员选择 APPROVE / ESCALATE / REJECT | IRP-01, IRP-02, IRP-03 |
| UTL-05 IOC Deduplicator | 跨容器 IOC 去重 — 在丰富信息前标记重复项 | IRP-01, IRP-02, IRP-03 |
| UTL-06 Metrics Collector | 将 KPI 快照到 `metrics_log` 以进行策略比较 | IRP-01, IRP-02, IRP-03 |
| UTL-07 Threat Scoring | 加权综合威胁评分(容器严重性 40% + 威胁情报 60%) | IRP-01 |
## 共享设计模式
所有三个 IRP 都遵循相同的结构约定:
**1. 上下文初始化 (`set_prepare_context`)**
每个剧本启动时都会从容器中读取策略和严重性,并将其规范化为所有 UTL 读取的标准对象存储约定。
**2. 策略模式**
剧本行为根据容器标签进行调整:
- `strategy_conservative` — 最小化自动操作,优先进行分析员审核
- `strategy_balanced` *(默认)* — 适度自动化,在关键操作上设置人工关卡
- `strategy_aggressive` — 最大化自动遏制
**3. 严重性级别**
支持 `low`、`medium`、`high`、`critical` — 接受字符串和整数输入,在 `set_prepare_context` 中自动规范化。
**4. 对象存储契约**
所有剧本通过 SOAR 的容器作用域对象存储进行通信(`phantom.save_object` / `phantom.get_object`)。键名在所有剧本中都是标准化的:
| 键 | 设置者 | 读取者 |
|---|---|---|
| `ioc_map` | UTL-01 | UTL-03, UTL-05, UTL-06, UTL-07 |
| `strategy` | IRP `set_prepare_context` | UTL-03, UTL-04, UTL-06 |
| `severity_label` | IRP `set_prepare_context` | UTL-03, UTL-04, UTL-06, UTL-07 |
| `severity_score` | IRP `set_prepare_context` | UTL-03, UTL-06 |
| `pending_action` | IRP 遏制逻辑 | UTL-04 |
| `current_phase` | IRP 阶段转换 | UTL-03 |
| `phase_action_log` | IRP 阶段转换 | UTL-03 |
| `analyst_decision` | UTL-04 | IRP 关卡后逻辑 |
| `duplicate_iocs` / `unique_iocs` | UTL-05 | UTL-06 |
| `metrics_log` | UTL-06 | n8n 测试环境 |
| `utl07_output` | UTL-07 | IRP-01, UTL-06 |
## 使用的资产
| 资产 | 使用者 |
|---|---|
| `alien_lab` | IRP-01, IRP-02(OTX 信誉查询) |
| `phantom_lab` | 所有 IRP 和 UTL(注释、标签、提示) |
| `virustotal` | IRP-01, IRP-02, IRP-03, UTL-07 |
| `abuseipdb` | IRP-02, IRP-03 |
## 典型执行链
```
IRP on_start
└─► set_prepare_context [IRP] — writes strategy/severity to object store
└─► UTL-01-ArtifactExtractor — extracts CEF → ioc_map
└─► UTL-07-ThreatScoring — weighted composite score (IRP-01 only)
└─► UTL-05-IOC Deduplicator — cross-container dedup
└─► UTL-03-Incident Note Writer — phase note
└─► [IRP enrichment actions — OTX, VT, AbuseIPDB]
└─► [IRP containment decision tree]
└─► UTL-04-Analyst Prompt — human gate
└─► UTL-06-Metrics Collector
└─► on_finish
```
## n8n 测试环境
一个用 **n8n** 构建的模拟测试环境,轮询 SOAR 并运行所有 63 个测试场景,以无需人工干预的方式端到端地验证剧本逻辑。完整详情请参见 [`test-harness/`](./test-harness/)。
- 覆盖 3 个 IRP 的 63 个场景(每个 IRP 21 个)
- 涵盖所有策略 × 严重性组合、边界情况和安全测试
- 分析员关卡预填充:每个场景可配置 `APPROVE` / `DENY`
- 支持演练模式(不实际向 SOAR 发送 POST 请求)
- 场景过滤器:可全部运行,或按严重性、策略、标签或单个场景 ID 过滤
## 如何将剧本导入 SOAR
1. 首先导入 UTL 剧本 — 所有 IRP 都依赖它们
2. 在 SOAR 中:**Playbooks → Import** → 上传 `.json`(IRP)或 `.py`(UTL)文件
3. 确认所有 UTL 在 `local/` 下可用后,再启用任何 IRP
4. 启用 IRP 并将其附加到相关的标签/事件类型
## 安全注意事项
- **不要**将 `SOAR_TOKEN`、API 密钥或内部 IP 地址提交到此仓库
- `.json` 文件包含完整的可视化剧本图;`.py` 文件包含可执行逻辑 — 两者必须保持同步
- JSON 是 SOAR UI 的真实来源;Python 是实际执行的内容
标签:AMSI绕过, FTP漏洞扫描, Homebrew安装, Metasploit替代, n8n, Object Callbacks, Python, Splunk SOAR, 事件管理, 剧本, 勒索软件, 威胁检测, 安全测试, 安全编排, 攻击性安全, 无后门, 模拟测试, 横向移动, 测试框架, 编程规范, 网络安全, 网络钓鱼, 自动化响应, 逆向工具, 隐私保护