Snitch-1302/Time-Sleuth
GitHub: Snitch-1302/Time-Sleuth
一款数字取证时间线分析工具,从磁盘映像中提取文件系统事件并聚类可视化,帮助调查人员重建活动时间线、发现异常。
Stars: 1 | Forks: 0
# TimeSleuth:取证时间线分析
TimeSleuth 是一款数字取证工具,用于从磁盘映像中提取、抽象和可视化系统事件——帮助重建用户活动的时间线、发现可疑事件并检测异常。
## Pipeline
```
Disk image (.dd)
└── extract_events.py (pytsk3 filesystem parsing)
└── raw_timeline.csv
└── abstraction.py (maps raw actions → high-level categories)
└── abstracted_timeline.csv
└── app.py (interactive Dash timeline UI)
```
## 功能
- 使用 `pytsk3` (The Sleuth Kit) 从磁盘映像中提取真实的文件系统工件
- 将原始的低级别事件(例如 `file_encrypt`、`key_modify`)抽象为高级别类别(文件系统活动、注册表更改、网络活动等)
- 交互式取证时间线可视化 (Dash + Plotly)
- 按类型、时间范围滑块进行事件过滤,并可选基于 DBSCAN 的邻近事件聚类
- 带有基本威胁级别启发式算法的单事件检查面板
## 技术栈
- Python 3.10+
- `pytsk3` — 文件系统/磁盘映像解析 (The Sleuth Kit 绑定)
- `pandas` — 数据处理
- `plotly` / `dash` — 交互式可视化和 UI
- `scikit-learn` — DBSCAN 事件聚类
## 项目结构
```
TimeSleuth/
├── app/
│ ├── __init__.py
│ ├── app.py # Dash app: layout, callbacks, visualization
│ └── callbacks.py # (reserved for callback separation as the app grows)
├── data/
│ ├── raw_timeline.csv # sample raw event data
│ └── abstracted_timeline.csv # sample abstracted event data
├── docs/
│ └── report.md # forensic findings write-up template
├── scripts/
│ ├── __init__.py
│ ├── extract_events.py # pytsk3-based disk image extraction
│ ├── abstraction.py # raw -> high-level event mapping
│ ├── clustering.py # DBSCAN event clustering
│ └── utils.py # CSV writing / timestamp helpers
├── .gitignore
├── requirements.txt
└── README.md
```
## 设置
```
git clone https://github.com/Snitch-1302/Time-Sleuth.git
cd Time-Sleuth
pip install -r requirements.txt
```
## 运行应用(包含示例数据)
仓库附带了示例 `raw_timeline.csv` 和 `abstracted_timeline.csv` 文件,描绘了一个合成的勒索软件感染场景,因此您无需真实的磁盘映像即可立即运行可视化:
```
python app/app.py
```
打开 Dash 打印的本地 URL(通常为 `http://127.0.0.1:8050`)。
## 在真实磁盘映像上运行完整 Pipeline
要从实际磁盘映像而不是示例数据中提取事件:
1. 获取取证磁盘映像——例如 DFIR 课程中常用的公开 **m57-jean** 训练映像(由于文件大小原因未包含在此仓库中)
2. 将其放置在 `data/m57-jean.dd`(或更新 `scripts/extract_events.py` 中的 `IMAGE_PATH`)
3. 运行 Pipeline:
```
cd scripts
python extract_events.py # produces data/raw_timeline.csv
python abstraction.py # produces data/abstracted_timeline.csv
```
4. 按上述步骤启动应用
## 已知限制
- 内置的示例 CSV 是合成的演示场景(虚构的勒索软件感染),而不是针对真实磁盘映像运行 `extract_events.py` 的实际输出——提取 Pipeline 本身是可用的,但随附的数据仅用于说明。
- `normalize_timestamp()` 目前只是将来自 `pytsk3` 的原始 Unix 时间戳字符串化,而不是将其转换为可读的 datetime——如果从真实映像中提取,这值得改进。
- 点击检查面板中的威胁级别指示器使用了一个包含“高风险”事件名称的小型硬编码列表作为启发式方法,而不是真正的基于威胁情报的分类。
## 完整说明
关于 Pipeline 设计背后的逻辑以及我在构建过程中学到的内容:
[Hashnode 文章链接]
标签:Python, 域渗透, 数字取证, 无后门, 电子数据取证, 磁盘镜像分析, 自动化脚本, 身份验证滥用, 逆向工具