alisterrodrigues/soc-threat-detection-pipeline

GitHub: alisterrodrigues/soc-threat-detection-pipeline

基于 Python 的 Windows Sysmon 日志行为威胁检测引擎,将原始端点遥测数据通过 MITRE ATT&CK 映射规则转换为带风险评分的 Incident 并生成分析报告。

Stars: 0 | Forks: 0

# SOC 威胁检测流水线 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/889018c272184728.svg)](https://github.com/alisterrodrigues/soc-threat-detection-pipeline/actions/workflows/ci.yml) ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Rules](https://img.shields.io/badge/detection%20rules-15-orange) ![Tests](https://img.shields.io/badge/tests-54%20passing-brightgreen) 一个基于 Python 的 Windows Sysmon 日志行为威胁检测引擎。该引擎摄取原始端点遥测数据,根据映射到 MITRE ATT&CK 的检测规则评估事件,将告警关联为带评分的Incident,并通过终端仪表板、分析人员分类 CLI 和独立的 HTML 报告展示结果 — 完成从原始日志到已处置Incident的完整分析人员工作流程,完全离线运行。 ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/54d9b864b6184729.png) ## 功能覆盖 该流水线对完整的 SOC 分析人员工作流程进行端到端建模: - **检测** — 涵盖进程创建、网络连接、注册表修改和进程访问事件的 15 条行为规则,每条规则映射到特定的 MITRE ATT&CK 技术,并记录了误报指南 - **关联** — 在可配置时间窗口内同一主机上的告警被分组为Incident,标注攻击链覆盖范围,并进行 0-100 的风险评分 - **分析人员工作流程** — 告警持久化到 SQLite 并支持处置;分类 CLI 允许分析人员标记真/假阳性并跟踪各规则的误报率随时间的变化 - **报告** — 独立的 HTML 报告总结Incident、匹配字段和 ATT&CK 覆盖范围,无需任何外部工具即可打开 示例数据集包含两台主机和两个不同的攻击场景 — Word 宏加载程序链和 Excel 宏持久化链 — 因此关联器开箱即用产生两个具有不同风险配置文件的独立Incident。 ## 架构 ``` flowchart TD A[("Sysmon XML\n/ EVTX")] --> B["parser.py\nevtx_parser.py"] B --> C["enricher.py\nProcess tree + parent flag"] C --> D["rule_engine.py\nCondition evaluation"] K[("rules/*.yaml\n15 ATT&CK rules")] --> D L[("config/config.yaml")] --> D D --> E[("alert_store.py\nSQLite")] D --> F["correlator.py\nHost + time window"] F --> G["scorer.py\n0–100 risk score"] E --> H["terminal_ui.py\nRich dashboard"] E --> I["reporter.py\nHTML report"] E --> J["triage.py\nAnalyst CLI"] G --> I G --> H ``` ## 快速开始 **要求:** Python 3.11+ ``` git clone https://github.com/alisterrodrigues/soc-threat-detection-pipeline.git cd soc-threat-detection-pipeline python -m venv venv && source venv/bin/activate pip install -r requirements.txt # 对包含的示例数据运行 python -m cli.main --input sample_data/sysmon_events_sample.xml --benchmark # 运行测试 pip install -r requirements-dev.txt pytest tests/ -v ``` 示例数据集包含 30 个 Sysmon 事件,分布在两台主机和两个攻击场景中。正常运行会在两台主机上产生 25 个告警,关联器将其分组为两个不同的Incident。 ## CLI 参考 ### 主流水线 — `python -m cli.main` | 标志 | 描述 | |------|-------------| | `--input FILE` | Sysmon XML 或 EVTX 日志文件的路径 **(必需)** | | `--evtx` | 将 `--input` 视为 `.evtx` 文件 — 需要 `pip install python-evtx` | | `--config FILE` | config.yaml 的路径 `[默认:config/config.yaml]` | | `--output-dir DIR` | 输出文件的目录 `[默认:output/]` | | `--severity LEVEL` | 存储的最低严重级别:`low\|medium\|high\|critical` | | `--benchmark` | 完成后打印吞吐量和告警摘要 | | `--export FORMAT` | 处理后导出告警:`json\|csv\|both` | | `--report` | 生成独立的 `output/incident_report.html` | | `--no-dashboard` | 无头模式 — 将告警 JSON 流式输出到 stdout | | `--live` | 实时尾部仪表板 — 轮询数据库直到 Ctrl+C | | `--explain` | 打印每个告警的条件匹配细分 | | `--correlate` | 运行关联引擎并将Incident摘要打印到 stdout | | `--hunt TERMS` | 在所有告警字段中搜索逗号分隔的关键字 | ### 分析人员分类 — `python -m cli.triage` | 标志 | 描述 | |------|-------------| | `--db PATH` | 告警数据库的路径 `[默认:output/alerts.db]` | | `--rule RULE_ID` | 过滤到特定规则 ID(例如 `PROC-001`) | | `--severity LEVEL` | 最低严重级别过滤器:`low\|medium\|high\|critical` — 显示此级别及以上的告警 | | `--undispositioned` | 仅显示尚未审查的告警 | | `--stats` | 打印每个规则的 TP/FP 摘要表并退出 | ### Sigma 转换器 — `python tools/sigma_converter.py` | 标志 | 描述 | |------|-------------| | `--input PATH` | Sigma `.yml` 文件或规则目录 **(必需)** | | `--output PATH` | 输出文件或目录 — 如果省略则打印到 stdout | | `--verbose` | 显示所有转换警告 | ## 检测规则 15 条规则涵盖四个 Sysmon 事件类别。每条规则映射到特定的 ATT&CK 技术,记录已知的误报来源,并包含用于未来允许列表集成的 `tuning_tag`。 | 规则 ID | 名称 | 事件 | 技术 | 战术 | 严重级别 | |---------|------|:-----:|-----------|--------|:--------:| | PROC-001 | 可疑的 PowerShell 编码命令 | 1 | T1059.001 | 执行 | 高 | | PROC-002 | Office 应用程序生成命令 Shell | 1 | T1059.003 | 执行 | 高 | | PROC-003 | Net User 或组枚举 | 1 | T1087.001 | 发现 | 中 | | PROC-004 | Whoami 执行 | 1 | T1033 | 发现 | 低 | | PROC-005 | Certutil 用于文件下载或解码 | 1 | T1105 | 命令与控制 | 高 | | PROC-006 | MSHTA 执行 | 1 | T1218.005 | 防御规避 | 高 | | NET-001 | 浏览器非标准端口出站 | 3 | T1571 | 命令与控制 | 中 | | NET-002 | 无主机名的 IP 地址连接 | 3 | T1071 | 命令与控制 | 中 | | NET-003 | 脚本宿主网络连接 | 3 | T1059.005 | 执行 | 高 | | REG-001 | Run 键持久化 | 13 | T1547.001 | 持久化 | 高 | | REG-002 | 通过注册表禁用 Windows Defender | 13 | T1562.001 | 防御规避 | 严重 | | REG-003 | 通过注册表的 UAC 绕过 | 13 | T1548.002 | 权限提升 | 严重 | | PA-001 | LSASS 内存访问 | 10 | T1003.001 | 凭证访问 | 严重 | | PA-002 | LSASS 上的高权限访问掩码 | 10 | T1003.001 | 凭证访问 | 严重 | | PA-003 | 非系统二进制文件访问敏感进程 | 10 | T1055 | 防御规避 | 高 | 规则以纯 YAML 格式存放在 `rules/` 目录中。引擎在启动时发现所有 `*.yaml` 文件 — 添加或修改检测无需更改代码。完整的规则架构和操作符参考请参阅 [`docs/rule_authoring_guide.md`](
标签:AMSI绕过, Cloudflare, Conpot, EDR, HTML报告, IP 地址批量处理, MITRE ATT&CK, Object Callbacks, PE 加载器, Python安全工具, SQLite, Sysmon, Windows安全, 告警关联, 威胁情报, 威胁检测, 安全运营, 开发者工具, 恶意宏, 扫描框架, 搜索语句(dork), 无线安全, 注册表监控, 端点检测响应, 网络钓鱼, 脆弱性评估, 行为检测, 误报分析, 请求拦截, 风险评分