DiogoCosta17/siftline

GitHub: DiogoCosta17/siftline

一款 DFIR 取证分诊工具包,通过解析多源日志、运行 Sigma 检测规则并映射 MITRE ATT&CK,快速重建安全事件的超级时间线。

Stars: 0 | Forks: 0

# siftline [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/41cbccc855185537.svg)](https://github.com/DiogoCosta17/siftline/actions/workflows/ci.yml) ![Python](https://img.shields.io/badge/python-3.12%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) `siftline` 是一个 DFIR 取证分诊工具包:它能够摄取 Windows Event Logs、Sysmon 和 Linux 身份验证日志,将其标准化为统一的事件 schema,运行映射到 **MITRE ATT&CK** 的 **兼容 Sigma 的检测**,通过本地 **threat-intel IOC** 进行丰富,并重建 **按时间顺序排列的事件超级时间线** —— 所有这些都可以通过 CLI、Markdown/JSON 报告和 Web 面板来实现。 **告警** — 按严重程度排序的检测,每个检测都标记有相应的 MITRE ATT&CK 技术和事件计数: ![siftline 告警视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/99b377f748185543.png) **ATT&CK 覆盖率** — 检测分布在 kill chain 上,同时也显示了空战术,以便让覆盖盲区一目了然: ![siftline ATT&CK 热力图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0a998db7d1185548.png) **时间线** — 重建的事件超级时间线,可按主机、严重程度和自由文本搜索进行过滤: ![siftline 时间线视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/773487fec6185553.png) **仅供防御使用。** siftline 不包含任何攻击功能 — 它仅用于分析、检测和报告。包含的数据集完全是合成的(RFC 5737 文档 IP,`.example.com` 域名,虚构的 hash);不包含也不需要任何真实的捕获数据。 ## 快速开始 安装了 [uv](https://docs.astral.sh/uv/) 后: ``` git clone https://github.com/DiogoCosta17/siftline && cd siftline uv run siftline demo # gera o incidente sintético + análise completa em ./out/demo uv run siftline serve # painel interativo em http://127.0.0.1:8765 ``` 或者使用 Docker: ``` docker compose up --build # painel em http://localhost:8765 ``` `siftline demo` 会生成一次模拟的入侵事件(SSH 暴力破解 → 横向移动 → LSASS 转储 → 持久化 → C2 beaconing),将其埋藏在良性的背景噪声中,然后对其运行整个 pipeline: ``` Findings (18) - 562 events, 12 rules +----------+--------------------------------------+--------+--------+-----------+ | Severity | Finding | Host | Events | ATT&CK | |----------+--------------------------------------+--------+--------+-----------| | CRITICAL | Successful logon after repeated f... | web-01 | 148 | T1110 | | CRITICAL | LSASS Memory Dump via comsvcs.dll | dc-01 | 1 | T1003.001 | | CRITICAL | Threat intel match: sha256 001193... | dc-01 | 1 | - | | HIGH | Authentication brute force | web-01 | 224 | T1110.001 | | HIGH | Periodic outbound connections (be... | dc-01 | 38 | T1071.001 | | ... | | | | | ``` ## 功能特性 - **模块化解析器** — Linux 的 `auth.log`/syslog、Sysmon (EVTX 转 JSON)、通用 Windows Event Logs (EVTX 转 JSON) 以及通用 JSON-lines,支持按文件自动检测格式。添加新数据源只需要一个简单的距离类([指南](docs/extending.md))。 - **统一的事件 schema** — 每条记录都会变成一个 ECS 风格的类型化 `Event`(必须使用 UTC 时间戳,始终保留原始记录以便追溯证据)。 - **兼容 Sigma 的检测** — 支持已记录的 [Sigma](https://sigmahq.io/) 规则格式子集(字段修饰符、通配符、布尔条件、`1 of`/`all of`);不支持的语法结构会在加载时被明确拒绝,而不是静默地永远不匹配。你可以将 `--rules` 指向自己的规则目录。 - **关联规则** — 用于表达静态匹配无法涵盖的行为:暴力破解阈值、失败后成功的序列以及 beacon 节奏分析(到达时间的抖动)。 - **MITRE ATT&CK 映射** — 每个检测都带有技术/战术 ID;在 CLI、报告中以摘要形式展示,并在面板上以热力图形式展示,同时也会暴露你的*覆盖盲区*。 - **IOC 丰富化** — 将事件与本地 CSV `type,value,note`(IP、域名、SHA-256)进行比对;匹配项会就地标记事件并产生对应的检测点。 - **超级时间线** — 去重、按时间排序、过滤出与检测相关的事件,每条记录按引用它的最高检测严重程度进行排序。 - **报告** — Markdown 格式的事件报告(包含证据摘录的检测)和结构化的 JSON 导出;为事件、检测和时间线提供 JSONL 导出。 - **Web 面板** — FastAPI + 无需构建步骤的前端:告警卡片,带有原始事件深入查看功能的可过滤时间线,ATT&CK 热力图。 ## 架构 ``` flowchart LR A["Artifacts
auth.log / Sysmon / EVTX-JSON / JSONL"] --> B["Parsers
registry + auto-detect"] B --> C["Normalizer
unified Event schema"] C --> D["IOC enrichment
local intel CSV"] D --> E["Detection engine
Sigma subset + correlation rules"] E --> F["Findings
ATT&CK-mapped"] C --> G["Timeline builder"] F --> G F --> H["Reports
Markdown / JSON"] G --> H F --> I["Web dashboard"] G --> I ``` 每个步骤仅交换类型化的模型(`Event`、`Finding`、`TimelineEntry`),因此各个步骤都可以独立测试和替换。详情请参阅 [docs/architecture.md](docs/architecture.md)。 ## CLI | 命令 | 功能 | | --- | --- | | `siftline demo` | 生成合成事件并运行所有分析 | | `siftline datagen` | (重新)生成合成数据集 (`--seed` 用于生成变体) | | `siftline ingest INPUTS` | 将 artifact 解析为标准化事件 (JSONL) | | `siftline detect INPUTS` | 运行 IOC 丰富化 + 检测规则,显示检测结果 + ATT&CK 覆盖率 | | `siftline timeline INPUTS` | 重建并导出事件时间线 | | `siftline report INPUTS` | 生成 Markdown/JSON 格式的事件报告 | | `siftline serve [INPUTS]` | 启动 Web 面板 (默认使用 demo 数据) | 所有分析命令都接受 `--rules DIR`、`--iocs FILE` 和 `--syslog-year YYYY`(经典的 syslog 行不包含年份;siftline 会对其进行推断,但会让这个假设变得很明确)。 ## 检测内容 内置的规则是**使用 Sigma 语法编写的原创内容**(与 SigmaHQ 没有任何许可冲突),涵盖了模拟的 kill chain: | 规则 | 来源 | ATT&CK | | --- | --- | --- | | 身份验证暴力破解 `*` | 身份验证事件 | T1110.001 | | 多次失败后成功登录 `*` | 身份验证事件 | T1110 | | 通过 sudo 访问敏感凭据文件 | auth.log | T1003.008 | | 远程桌面登录 | Security 4624 | T1021.001 | | PowerShell 编码命令 | Sysmon 1 | T1059.001 | | 通过 comsvcs.dll 转储 LSASS | Sysmon 1 | T1003.001 | | 注册表 Run-key 持久化 | Sysmon 13 | T1547.001 | | 通过 reg.exe 添加 Run key | Sysmon 1 | T1547.001 | | 通过 schtasks.exe 创建计划任务 | Sysmon 1 | T1053.005 | | 注册计划任务 | Security 4698 | T1053.005 | | 从 Users\Public 执行的进程 | Sysmon 1 | T1036 | | 周期性出站连接 (beaconing) `*` | Sysmon 3 | T1071.001 | | threat-intel IOC 匹配 (ip / domain / sha256) | 所有事件 | — | `*` = Python 关联规则(阈值/序列/节奏分析超出了 Sigma 静态匹配的范畴)。 ## 合成数据集 包含的场景([data/samples/scenario-001](data/samples/scenario-001),可通过 `siftline datagen` 重新生成)模拟了在 Linux Web 服务器和 Windows 域控上发生的两小时入侵事件,其中夹杂了约 60% 的良性噪声,以确保检测是基于真实异常而非轻易获得: 1. 针对 `web-01` 的 SSH 暴力破解,最终以 `svc-backup` 身份建立据点 (T1110.001) 2. 通过 `sudo` 收集凭据:`/etc/shadow` (T1003.008) 3. 通过 NTLM 横向移动到 `dc-01`,随后进行 RDP (T1021.001) 4. 混淆的 PowerShell 编码命令 (T1059.001) 5. 通过 `comsvcs.dll` 转储 LSASS 内存 (T1003.001) 6. 持久化:注册表中的 Run key + 计划任务 (T1547.001, T1053.005) 7. 每隔约 2 分钟向已知恶意的 IP/域名发送 C2 beaconing (T1071.001) 它是**确定性的**(相同的 seed → 生成完全一致的字节,已在测试中验证),并且仅使用文档规定的 IP 范围、`.example.com` 域名和派生的假 hash。输出格式与真实的 artifact 保持一致 — 经典的 syslog 和来自 [`evtx_dump`](https://github.com/omerbenamram/evtx) 的 JSONL — 因此解析器无需修改即可直接应用于转换后的真实 EVTX 文件。 ## 范围与局限性 - **这是一个分诊工具,而不是 SIEM** — 分析限于内存中处理的少量 artifact 集合;不支持流式处理、长期保留或多案件管理。 - **二进制的 `.evtx` 需要一个转换步骤** — `evtx_dump --format jsonl file.evtx` ([omerbenamram/evtx](https://github.com/omerbenamram/evtx));siftline 直接读取生成的 JSONL。 - **Sigma 子集** — 常见的进程/注册表/网络/身份验证规则可以正常运行;聚合、`timeframe` 和特殊的修饰符在加载时会被拒绝并给出明确的错误(请参阅 [docs/extending.md](docs/extending.md))。 - **syslog 的时间戳被解释为 UTC** — 经典的 syslog 没有时区偏移量;在真实场景中请使用 `--syslog-year`/记录数据源的时区。 - **ATT&CK 的名称**来自涵盖所含规则的小型内置目录;未知的 ID 会平滑降级显示为简单的 ID。 ## 开发 ``` make setup # uv sync + hooks de pre-commit make check # ruff (lint + format), mypy --strict, pytest com cobertura ``` 质量门禁(在 [CI](.github/workflows/ci.yml) 中全部为必需):`ruff` lint + format,针对 `src` 和 `tests` 的 `mypy` strict,`pytest`(126 个测试,包括解析器的 golden 测试、Sigma 语法测试以及验证时间线按 kill chain 顺序读取的端到端执行),外加 Docker 构建检查。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE) — © dapccosta
标签:ATT&CK框架, PKI安全, Python, Sigma规则, 安全可视化, 安全规则引擎, 库, 应急响应, 无后门, 日志解析, 目标导入, 证书伪造, 请求拦截, 逆向工具