redzeptech/timeline-engine-v2
GitHub: redzeptech/timeline-engine-v2
一款模块化的 Windows 取证时间线引擎,将多种事件数据源归一化并通过分析优先流水线实现自动风险评分与关联分析。
Stars: 1 | Forks: 0
# Timeline Engine v2
读取 `input/` 下的取证/事件源并生成标准化时间线;通过 **analysis-first** 流水线生成分析、检测、评分和摘要输出。HTML 视图仅在最后展示这些结果。
### 工作流程(新架构)
| 步骤 | 内容 | 示例输出 |
|------|---------|-------------|
| 1 | 生成 Timeline (ingest + normalize) | `timeline.json`, `timeline.csv` |
| 2a | 特征分析 (规则, 标记事件) | `analyzer_report.json`, `alerts.json` |
| 2b | 分析包 (`core/analysis/`: 模式, 异常, 风险, 摘要) | `analysis_layer.json` |
| 3 | 关联 | `correlation_report.json` |
| 4 | 检测 / 评分 + 摘要 | `executive_summary.json` (含 `analysis_intensity_score_0_100`), `analysis_report.md` |
| 5 | Dashboard (仅展示) | `dashboard.html` |
取代旧思路 *“timeline → executive dashboard”*:先建立数据和分析主干,dashboard 是最后的展示层。
### 数据采集层(parser 前 / 使用 parser)
来自源的数据收集在 **`input/<源>/`** 下;每个源对应 **`parsers/`** 中的一个解析器(阶段 1–2 的边界在此划分)。
| 源 | Parser |
|--------|--------|
| EVTX, Prefetch, Registry, USB | 完整 |
| PowerShell logs, Scheduled Tasks, Services, Amcache, Shimcache | 骨架 (已注册;`parse()` 尚为空) — 见 `docs/DATA_COLLECTION.md` |
完整表格及目标文件夹名称:**`docs/DATA_COLLECTION.md`**。
外部传入的批量 PowerShell “bootstrap” 模板可能会覆盖本仓库;关于错误的 `parsers_init_.py` 等,见 `docs/BOOTSTRAP_TASLAK_UYARILARI.md`。
## 安装
```
pip install -r requirements.txt
```
### 虚拟环境(推荐)
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
**PowerShell — Execution Policy:** 如果 `Activate.ps1` 报“权限 / execution policy”错误,为该会话临时允许:
```
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
```
然后再次运行 `.\.venv\Scripts\Activate.ps1`。
### 首次运行前检查清单
1. **骨架 / import 错误:** 如果 parser 或模型缺失,在 `python main.py` 期间可能会遇到 `ImportError` / `AttributeError`。开发时先确保 `core/models.py` (`TimelineEvent`) 和 `parsers/base_parser.py` (`BaseParser`) 明确;其他 parser 从该基类派生。
2. **`__init__.py` (包标识符):** 为使文件夹被识别为 Python 包,文件名必须完全是 **`__init__.py`**(前后各 **两条** 下划线)。`parsers_init_.py`, `init_.py` 等会导致 import 错误 — 如果命名错误请重命名文件。`scripts/init-project.ps1` 仅在这些路径 **缺失时** 创建空 `__init__.py`;不会覆盖已有文件内容。
3. **空 `input/` 文件夹:** 引擎通过 `iterdir()` 逐个处理子文件夹中的文件(非 `glob("*")`)。若文件夹为空,该源产生 **0 事件**;`main.py` 仍会 **无错** 结束。若要测试 parser 代码路径,可选择在例如 `input/usb/` 下放一个小 `.txt` 文件;**非必须**。创建文件夹:`scripts/init-project.ps1`。
## 用法
将文件放入相关子文件夹:
| 文件夹 | 预期内容 |
|--------|------------------|
| `input/evtx/` | `.evtx` 文件 |
| `input/prefetch/` | `.pf` 文件 |
| `input/registry/` | Registry hive(例如 `SYSTEM`, `NTUSER.DAT`)。不支持导出的 `.reg` 文本。 |
| `input/usb/` | 类似 `setupapi.dev.log` 的 `.log`/`.txt` 或包含 `timestamp` 列的 `.csv` |
运行:
```
python main.py
```
## 架构
- `main.py` — 上述 analysis-first 流程 (timeline → 分析 → 关联 → 摘要/评分 → HTML)
- `core/analysis/` — `event_classifier`, `anomaly_detector`, `risk_scoring`, `case_summary`, `pattern_analysis`;输出 `output/analysis_layer.json`
- `config/settings.py` — 路径;`config/parser_registry.py` — `input/<名称>/` → parser 映射
- `docs/FAZ1_ALTIN_STANDART.md` — 阶段 1 数据契约与 Cursor prompt 模板
- `docs/DATA_COLLECTION.md` — 数据采集层 + 源清单 (EVTX … Shimcache)
- `parsers/` — 源特定解析器(`BaseParser` 基类)
- `core/` — 模型、归一化、合并、JSON/CSV 写入
- `utils/` — 日志与辅助工具
Prefetch 解析无需外部二进制库;对常见 SCCA 版本使用 FILETIME 偏移量。极旧或特殊格式的时间提取可能不完整。
## 许可证
请根据您的需求为本项目选择许可证。
标签:AI合规, AI就绪架构, AMSI绕过, DAST, EVTX解析, Homebrew安装, HTTPS请求, Python安全工具, SIEM替代, USB取证, Windows取证, 事件日志分析, 关联分析, 取证管道, 多模态安全, 威胁检测, 安全可视化, 安全运营, 异常检测, 恶意软件分析, 扫描框架, 持久化检测, 数字取证, 数据包嗅探, 日志标准化, 本地大模型, 注册表取证, 电子数据鉴定, 网络安全, 自动化脚本, 自动化风险评分, 逆向工具, 隐私保护, 预取文件分析