Security-Eng-Muhammad-Ali/eol-risk-detection-soar

GitHub: Security-Eng-Muhammad-Ali/eol-risk-detection-soar

基于 Wazuh SIEM 构建的 EOL 风险检测与自动化响应流水线,通过融合 CVE 和 CISA KEV 威胁情报对过时软件进行基于真实利用风险评分,并自动触发工单。

Stars: 0 | Forks: 0

# EOL 风险检测与自动化响应流水线 这是一个基于威胁情报驱动的检测工程项目,构建于 **Wazuh SIEM** 之上并部署在 **AWS EC2** 上。该项目能够识别环境中的生命周期结束 (EOL) 软件,利用实时的 **CVE** 和 **CISA KEV (已知被利用漏洞)** 数据丰富扫描结果,并为关键发现自动触发 **SOAR 工作流**。 这个项目超越了简单的 EOL 检测(“该软件已过时”),实现了**基于风险的优先级排序**(“该软件已过时,且正在野外被积极利用”)——这与 CISA 的 SSVC 和 EPSS 等行业框架背后的理念相同。 ## 问题描述 大多数 EOL/漏洞扫描器会将所有问题都标记为同等紧急,从而导致告警疲劳。安全团队最终会面对数百个“严重”级别的发现,却无法确定实际应优先修复哪些内容。该项目通过基于**现实世界中的可利用性**对 EOL 发现进行评分来解决此问题,而不仅仅依据软件的过时程度。 ## 架构 ``` ┌─────────────────────┐ │ Wazuh Agents │ (Linux + Windows, AWS EC2) │ Syscollector module │ → collects OS/software inventory └──────────┬───────────┘ │ ┌──────────▼───────────┐ │ eol_detector.py │ → pulls inventory via Wazuh API │ │ → checks OS versions against │ │ endoflife.date API └──────────┬───────────┘ │ eol.json ┌──────────▼───────────┐ │ risk_scorer.py │ → cross-references findings with: │ │ • NVD API (CVE + CVSS data) │ │ • CISA KEV feed (actively │ │ exploited CVEs) │ │ → calculates tiered risk score └──────────┬───────────┘ │ eol_risk.json ┌──────────▼───────────┐ │ Wazuh Manager │ │ Custom decoder + rules│ → generates severity-based alerts │ │ (Low / Medium / High / Critical) └──────────┬───────────┘ │ Critical alerts only ┌──────────▼───────────┐ │ Wazuh Integration │ → custom webhook script │ (custom-eol-webhook) │ └──────────┬───────────┘ │ HTTPS POST ┌──────────▼───────────┐ │ n8n (SOAR) │ → receives alert payload │ Webhook → Google │ │ Sheets workflow │ └──────────┬───────────┘ │ ┌──────────▼───────────┐ │ Google Sheets │ → auto-logged findings for │ (auto-logged ticket) │ tracking and reporting └───────────────────────┘ ``` ## 核心功能 - **自动化 EOL 检测** — 使用 Wazuh Syscollector 清单数据 + [endoflife.date](https://endoflife.date) API 来标记运行不受支持 OS 版本的 agent。 - **CVE 富化** — 通过 [NVD API](https://nvd.nist.gov) 查询与每个 EOL 发现相关的已知漏洞,包括 CVSS 严重性。 - **感知漏洞利用的风险评分** — 将 CVE 与 [CISA 已知被利用漏洞 (KEV)](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) 目录进行交叉比对,以识别在野外被积极利用的漏洞,而不仅仅是理论上有风险的漏洞。 - **分层严重性模型** — 根据加权公式(EOL 状态 + 是否有 CVE + CVSS 严重性 + 是否被积极利用 + 暴露程度)将发现评为低 / 中 / 高 / 严重,从而减少告警疲劳。 - **原生 Wazuh 集成** — 自定义解码器和规则将丰富后的发现直接接入 Wazuh dashboard,并带有相应的严重性级别(规则 ID 100420–100423)。 - **SOAR 自动化** — 严重级别的发现会通过 Wazuh 的原生集成框架自动触发 n8n 工作流,将结构化的事件数据实时记录到 Google Sheets 中——无需人工分类。 ## 技术栈 | 组件 | 工具 | |---|---| | SIEM | Wazuh 4.14.5 (一体化,自托管) | | 云基础设施 | AWS EC2 (Wazuh 服务器 + Linux 和 Windows agent) | | 检测脚本 | Python 3 (`requests`) | | 威胁情报来源 | NVD API, CISA KEV Feed, endoflife.date API | | SOAR / 自动化 | n8n (云端) | | 告警接收端 | Google Sheets | ## 风险评分逻辑 | 因素 | 评分权重 | |---|---| | 基础分 (软件处于 EOL) | +1 | | 该版本存在已知 CVE | +3 | | 最高 CVSS 分数 ≥ 7 (高/严重) | +3 | | CVE 被列入 CISA KEV (被积极利用) | +5 | | 资产面向互联网 | +3 | | 总分 | 风险等级 | |---|---| | 0–3 | 低 | | 4–5 | 中 | | 6–8 | 高 | | 9+ | 严重 | 这确保了**并非所有 EOL 软件都被视为同等紧急**——只有具备真实世界利用证据的发现才会被升级为“严重”,这符合企业漏洞管理实际确定补救优先级的方式。 ## 示例:端到端检测 **发现:** 在某 agent 上检测到了 Windows Server 2012 (自 2023-10-10 起处于 EOL)。 **富化结果:** - 通过 NVD 找到了 10 个相关 CVE - 最高 CVSS 分数:10.0 - 在 CISA KEV 目录中匹配到 2 个 CVE (`CVE-2012-0767`, `CVE-2012-1535`) - **风险评分:12 → 严重** **生成的 Wazuh 告警 (规则 100423,级别 14):** **自动化响应:** 告警触发 Wazuh 的集成模块,向 n8n 发送 webhook,进而在 Google Sheet 中追加一行结构化数据——在无需分析师干预的情况下创建了可审计的实时记录。 ## 截图 **Wazuh Dashboard — 严重 EOL 风险告警** 针对在 CISA KEV 目录中匹配到 2 个 CVE 的 EOL Windows Server 2012 资产,触发了自定义规则 (100423,级别 14)。 ![Wazuh Critical Alert](https://static.pigsec.cn/wp-content/uploads/repos/cas/01/018f5bd2903eeaac1d0b02664f94911367ea51c4b7ffef8219d6f2e50dde5a69.png) **Google Sheets — 通过 SOAR 工作流自动记录的发现** 通过 Wazuh → n8n webhook 集成,实时将严重级别的发现自动追加到 Google Sheet 中,包含 CVE 数量和匹配的 KEV ID——无需人工干预。 ![Google Sheets Auto Log](https://static.pigsec.cn/wp-content/uploads/repos/cas/28/28164729a2b839c5484d0100ae00aea40b8685cd3749135a1bf93a08629efd86.png) ## 仓库结构 ``` eol-detector/ ├── eol_detector.py # Pulls agent OS inventory, checks against endoflife.date ├── risk_scorer.py # Enriches EOL findings with CVE + KEV data, calculates risk score ├── asset_tags.json # Manual exposure/criticality tagging per agent └── wazuh_config/ ├── local_decoder.xml # Custom JSON decoder reference ├── local_rules.xml # Custom rules (100420–100423) for tiered alerting └── integrations/ ├── custom-eol-webhook # Wazuh integration wrapper script └── custom-eol-webhook.py # Sends enriched alert data to n8n webhook ``` ## MITRE ATT&CK 映射 EOL 和未打补丁的软件是以下行为的常见促成因素: - **T1190 – Exploitation of Public-Facing Application** (Initial Access) - **T1210 – Exploitation of Remote Services** (Lateral Movement) 标记具有活跃利用证据的 EOL 资产,直接支持了对这些技术的主动防御。 ## 经验总结 / 故障排除笔记 该项目涉及的实际调试过程反映了生产环境的检测工程工作: - 诊断出 **decoder 不匹配**问题,即 Wazuh 中的 `log_format: json` 会静默覆盖自定义 decoder 并转而使用内置的 JSON decoder —— 规则必须引用 `json` 而不是自定义 decoder 名称。 - 发现 **Wazuh 集成脚本在文件权限不正确时会静默失败**(`wpopenv()` 会拒绝组可写的集成脚本)—— 通过将权限设为 `550` 而非 `750` 解决了该问题。 - 发现了 **n8n 中草稿与发布状态之间的差异**,即已编辑的节点配置(Append 与 Append-or-Update 操作)在显式发布之前不会反映在实时的 webhook 中——这提醒了我们,在工作流自动化工具中,“已保存”和“线上生效”并不总是一回事。 ## 未来增强计划 - [ ] 将检测范围从 OS 级别的 EOL 扩展到单个软件包(例如 web 服务器、数据库) - [ ] 通过真实的 CMDB 添加资产关键性/面向互联网的标记,而不是手动编写 JSON - [ ] 通过 cron 定期调度 `eol_detector.py` 和 `risk_scorer.py` 以实现持续监控 - [ ] 针对有意保留的遗留系统添加例外/风险接受处理机制 - [ ] 扩展 SOAR 工作流,增加自动创建工单 (Jira) 以及针对严重级别发现的 Slack/Teams 通知功能 ## 作者 **Muhammad Ali** 初级 SOC 工程师 | 检测工程与 AI 辅助 SOC 爱好者
标签:GPT, PB级数据处理, SOAR, Wazuh, 威胁情报, 安全运维, 实时处理, 开发者工具, 无线安全, 漏洞管理, 逆向工具