heindall92/heimdall-timewatch_DFIR
GitHub: heindall92/heimdall-timewatch_DFIR
一款零依赖的 NTFS timestomping 检测工具,通过比对 MFT 中 $SI 与 $FN 属性并结合 USN Journal 识别被篡改的文件时间戳。
Stars: 0 | Forks: 0
# 🛡️ heimdall-timewatch
由 **Yoandy Ramirez Delgado** 创建 · 用于教育和授权目的的 DFIR / Blue Team 工具。
imagen.dd 0 > \$MFT
python3 -m heimdall_timewatch.cli scan -m \$MFT
# 结合 USN Journal 交叉验证(推荐):
python3 -m heimdall_timewatch.cli scan -m \$MFT --usn \$J --html informe.html
# 结合操作系统安装日期(改善 H5 启发式算法):
python3 -m heimdall_timewatch.cli scan -m \$MFT --system-install 2024-01-15
# 导出为多种格式:
python3 -m heimdall_timewatch.cli scan -m \$MFT --json out.json --csv out.csv --html out.html
```
### 导出时间戳到 CSV(不做判定)
```
python3 -m heimdall_timewatch.cli parse -m \$MFT -o timestamps.csv
```
## 启发式算法
| 代码 | 检测内容 | 置信度 |
|--------|---------|-----------|
| **H1** | `$SI` 早于 `$FN`(时间回溯) | 中等 → 若偏差超过 30 天则为高 |
| **H2** | `$SI` 的子秒位为 `.0000000`(自动化工具) | 低 |
| **H3** | 高 RID 伴随异常久远的创建日期 | 低 |
| **H4** | `created` 晚于 `modified`(逻辑上不可能) | 中等 |
| **H5** | 时间戳处于未来或早于操作系统安装时间 | 中等 |
| **H6** | `$FN` 的子秒位为零(高级的 `$FN` 操纵) | 中等 |
| **USN** | USN Journal 与 `$SI` 的创建日期矛盾 | **高** |
## 如何从系统中提取工件
```
# 使用 FTK Imager (GUI):Add Evidence Item → Logical Drive → 导出
# $MFT 和 $Extend\$UsnJrnl:$J 从卷根目录。
# 使用 MFTECmd (Eric Zimmerman):
MFTECmd.exe -f C:\$MFT --csv salida
# 在 Linux 上从挂载的镜像中:
icat -o 2048 disco.dd 0 > \$MFT
```
## 诚实的局限性
- **`$SI` 与 `$FN` 对比法存在盲点。** 如果攻击者在进行 timestomping 后在同一卷内重命名或移动文件,Windows 会将篡改过的 `$SI` 复制到 `$FN`,导致 H1 不再触发。因此与 USN 的相互印证至关重要。
- **USN Journal 是循环覆盖的。** 如果创建事件已经轮转出日志记录范围,将无法进行验证。缺乏证据并不代表证据不存在。
- **合理的误报:** 触及 `$SI` 的安装程序、从 ZIP 中提取的文件(子秒位被截断)、保留 mtime 的副本、配置错误的时钟。每项发现都会记录这些情况。
## 目录结构
```
heimdall-timewatch/
├── heimdall_timewatch/
│ ├── __init__.py
│ ├── mft_parser.py # parser de bajo nivel del MFT
│ ├── detector.py # motor de las 6 heurísticas
│ ├── usn_journal.py # parser USN + corroboración
│ ├── reporting.py # consola/JSON/CSV/HTML
│ ├── labgen.py # generador de MFT de laboratorio
│ └── cli.py # interfaz de línea de comandos
├── requirements.txt
├── setup.py
└── README.md
```
## 法律声明
本工具仅限用于自有系统、授权实验室(HTB、THM、练习机)或获得明确授权的 DFIR 审计。未经授权对他人系统进行取证分析可能触犯法律。本工具的存在是为了**检测**反取证活动,而不是用于实施它。
## 许可证
基于 **MIT** 许可证分发。你可以自由使用、修改和重新分发本工具,但需保留版权声明。请查看 [LICENSE](LICENSE) 文件以获取完整文本。
## 贡献
欢迎贡献:新的启发式算法、额外的工件解析器(LNK、Prefetch、$LogFile)或实验室案例。在进行 *pull request* 之前,请先开启一个 *issue* 讨论重大更改。请保持**零依赖**原则,并记录每个新启发式算法可能产生的误报。
*heimdall-timewatch · 由 Yoandy Ramirez Delgado 创建 · 2026 · MIT License*
标签:NTFS, Python, 安全, 数字取证, 无后门, 自动化脚本, 超时处理, 逆向工具