cyb3rkan/soar-ioc-enrichment-playbook

GitHub: cyb3rkan/soar-ioc-enrichment-playbook

该项目是基于 n8n 的 IOC 富集 playbook 原型,为 Microsoft Sentinel SOAR 场景提供可验证的威胁情报查询、风险评级和标准化输出参考实现。

Stars: 0 | Forks: 0

# SOAR — IOC 富集 Playbook 为 Microsoft Sentinel 开发的 IOC 富集 playbook 的 **n8n 已验证参考实现**。 与其在 Logic Apps 上直接进行试错,不如先在一个可运行的 prototype 上验证决策流/错误处理/输出 schema。本 repo 包含该 prototype、测试集以及设计决策。 ## 它的功能 接收来自 Sentinel incident webhook 的 indicator (IOC),根据其类型进行验证,使用外部威胁情报进行富集,并生成标准化的结果。 ``` Webhook → Config → IOC ayrıştırma → Tip tespiti → Normalizasyon → Doğrulama → Zenginleştirme (AbuseIPDB / VirusTotal) → Risk değerlendirme → SOC bildirimi | Incident yorumu → Tek çıktı şeması ``` | 字段 | 范围 | |---|---| | 支持的 IOC 类型 | IP (v4/v6)、域名、URL、文件 hash (MD5/SHA-1/SHA-256) | | 提供商 | AbuseIPDB (IP)、VirusTotal (域名 / URL / hash) | | 风险级别 | HIGH · MEDIUM · LOW · UNKNOWN | | 状态码 | `SUCCESS` · `INVALID_IOC` · `NON_ROUTABLE_IOC` · `UNSUPPORTED_IOC` · `MISSING_REQUIRED_FIELD` · `AUTHENTICATION_ERROR` · `NOT_FOUND` · `RATE_LIMITED` · `PROVIDER_TIMEOUT` · `PROVIDER_UNAVAILABLE` · `ENRICHMENT_ERROR` | ## 设计原则 **单一输出契约** — 成功、错误、无效和不受支持的分支都在同一个不可变 schema 中汇合。没有任何场景会在不给分析师留下记录的情况下结束。 **先标准化,后验证** — 每个 IOC 都在单个节点进行标准化(在大小写不敏感的字段中使用小写字母、清理空格/根点、URL 规范化、提取凭据),然后再进行验证。可疑输入不会被修复,而是被拒绝。 **未经验证的 indicator 不对外输出** — 任何未通过格式验证的值都不会发送给提供商。 **范围控制** — RFC1918 私有地址、loopback、link-local(包括云 metadata)、CGNAT 和内部命名空间(`.local`、`.lan`、`.corp` …)免受外部情报查询;它们会被标记为 `NON_ROUTABLE_IOC` 并路由到内部 telemetry。内部网络地址不会泄露给第三方。 **错误分类** — 提供商错误根据 HTTP 状态分为六个类别;分析师可以区分身份验证失败与真正的“无记录”结果。 **关联分析** — 每次运行都标记有唯一的 `workflowRunId` 和 `processingTime`。 ## 示例 **请求** ``` { "incidentName": "Suspicious Outbound Connection", "severity": "High", "hostname": "WS-FIN-014", "source": "Microsoft Sentinel", "iocType": "ip", "iocValue": "185.220.101.1" } ``` **响应** ``` { "incidentName": "Suspicious Outbound Connection", "iocType": "IP", "iocValue": "185.220.101.1", "provider": "AbuseIPDB", "riskLevel": "HIGH", "riskScore": 100, "status": "SUCCESS", "actionTaken": "SOC_NOTIFICATION_DISPATCHED", "message": "High risk IP detected. SOC notification dispatched.", "detectionSummary": "Score: 100/100 | Reports: 172 | Country: DE | ISP: Artikel10 e.V.", "errorCode": null, "severity": "High", "hostname": "WS-FIN-014", "source": "Microsoft Sentinel", "timestamp": "2026-07-23T08:23:59.212Z", "workflowRunId": "run-177-1784795036286", "processingTime": 2926, "playbookVersion": "1.3.1" } ``` 在提交多个 IOC(`iocs: [...]`)时,响应将返回 `totalIocs`、`highestRiskLevel`、`statusCounts` 和 `results[]` 字段。 ## 测试 11 个类别的自动回归测试集:功能流、标准化、范围控制、边界值、路由、错误分类、注入攻击、payload 鲁棒性、幂等性、并发、关联分析。 ``` .\tests\Test-Playbook-Full.ps1 # tam koşu .\tests\Test-Playbook-Full.ps1 -SkipProvider # API'ye gitmeyen testler ``` 每个响应不仅针对预期的 `status` 进行验证,还针对 12 条不可变规则(schema 完整性、字段一致性、版本匹配)进行验证。 ## 安装说明 1. n8n → **Import from File** → `workflow/soar-ioc-enrichment-v1.3.1.json` 2. **Credentials** → 创建两个 *Header Auth*: - `VirusTotal API` → Name: `x-apikey` - `AbuseIPDB API` → Name: `Key` 3. 在四个 HTTP node 上选择相应的 credential,并绑定 SMTP credential 4. 在 `Load Configuration` node 中编辑 `socEmail` / `fromEmail` 值 5. 发布 Workflow ## 路线图 - [x] IOC 类型检测与路由 - [x] 标准化与格式验证层 - [x] 错误分类(6 类) - [x] 范围控制(IP / 域名 / URL) - [x] Medium 风险等级 - [x] 多 IOC 支持 - [ ] 迁移至 Microsoft Sentinel / Logic Apps - [ ] 自动向 incident 写入评论和标签 ## 注意事项 这是一个 prototype 和设计验证工作;在投入生产环境之前,必须添加 webhook 身份验证、密钥管理和企业审批流程。
标签:AI合规, IOC富化, Libemu, Microsoft Sentinel, n8n, SOAR, 威胁情报, 开发者工具