nmap07/KDG-Forensic-Tool
GitHub: nmap07/KDG-Forensic-Tool
用于EXT4等文件系统的磁盘镜像时间线提取与可疑活动检测的取证分析工具
Stars: 5 | Forks: 0
# KDG-Forensic-Tool
一款用于解析、提取和重建 EXT4 文件系统磁盘镜像时间线的取证工具
## 🎯 概述
该系统由三个集成组件组成:
1. **Extractor.py** - 从磁盘镜像中提取文件系统元数据和时间戳
2. **Analyser.py** - 分析时间线数据并检测可疑模式
3. **Main.py** - 编排完整的工作流程
## 🚀 快速开始
### 安装
```
# 安装所需依赖
pip install -r requirements.txt
# 验证安装
python -c "import pytsk3, pandas; print('✓ Dependencies installed')"
```
### 基本用法
```
# 运行完整分析 (提取 + 分析)
python Main.py
# 或者分别运行组件:
python Extractor.py # Creates timeline.csv
python Analyser.py # Creates forensic_report.html
```
## 📦 组件
### 1. Extractor.py - 时间线提取
**用途:** 从磁盘镜像中提取文件系统元数据并创建详尽的时间线。
**功能:**
- 支持多种磁盘镜像格式(raw, E01, AFF 等)
- 提取四种时间戳类型:CRTIME, MTIME, ATIME, CTIME
- 处理已分区和未分区的镜像
- 识别已删除文件
- 针对大型镜像可配置扫描限制
**输出:** `timeline.csv`,包含以下列:
- `time` - UTC ISO 格式的时间戳
- `type` - 时间戳类型 (CRTIME/MTIME/ATIME/CTIME)
- `path` - 文件路径
- `partition` - 分区描述
- `inode` - Inode 编号
- `size` - 文件大小(字节)
- `deleted` - 布尔值(如果文件已删除则为 True)
**配置:**
```
SCAN_LIMIT = 10000 # Max files to scan (prevent memory issues)
OUTPUT_CSV = "timeline.csv" # Output filename
```
### 2. Analyser.py - 可疑活动检测
**用途:** 分析时间线数据并检测具有取证意义的模式。
**检测规则:**
1. **访问时间早于创建时间**
- 检测:ATIME < CRTIME
- 指示:时间戳篡改
2. **修改时间早于创建时间**
- 检测:MTIME < CRTIME
- 指示:时间戳伪造
3. **快速时间戳活动**
- 检测:所有时间戳在 2 秒内
- 指示:自动化/脚本化文件操作
4. **已删除文件被访问**
- 检测:带有访问时间戳的已删除文件
- 指示:潜在的反取证活动
**输出:** `forensic_report.html`,包含:
- 汇总统计
- 可疑文件表
- 完整文件时间线
- 原始时间线事件
**配置:**
```
CSV_FILE = "timeline.csv" # Input from Extractor
OUTPUT_HTML = "forensic_report.html" # Report output
```
### 3. Main.py - 工作流编排器
**用途:** 自动运行完整的分析管道。
**工作流:**
```
User Input (Disk Image)
↓
Extractor.py (Extract Timeline)
↓
timeline.csv
↓
Analyser.py (Detect Suspicious)
↓
forensic_report.html
```
## 📊 使用示例
### 示例 1:分析原始磁盘镜像
```
python Main.py
# 输入:/path/to/evidence.dd
# 输出:forensic_report.html
```
### 示例 2:重新分析现有时间线
```
# 如果您已经有 timeline.csv
python Analyser.py
# 输出:forensic_report.html
```
### 示例 3:仅提取(不分析)
```
python Extractor.py
# 输入:/path/to/image.E01
# 输出:timeline.csv
```
## 🔍 检测示例
### 可疑模式 1:时间戳伪造
```
File: malware.exe
CRTIME: 2024-01-20 15:00:00
ATIME: 2024-01-20 14:30:00 ← Earlier!
Flag: "Access before creation"
```
**取证解读:**
- 文件在存在之前不可能被访问
- 可能是为了隐藏恶意软件安装而进行的时间戳篡改
### 可疑模式 2:快速活动
```
File: dropper.tmp
CRTIME: 2024-01-20 10:00:00
MTIME: 2024-01-20 10:00:01
ATIME: 2024-01-20 10:00:01
CTIME: 2024-01-20 10:00:01
Flag: "Rapid timestamp activity (<2s)"
```
**取证解读:**
- 所有操作在 1 秒内完成
- 指示自动化的恶意软件投递程序
- 典型的 创建→执行→删除 模式
### 可疑模式 3:已删除文件访问
```
File: credentials.txt
Deleted: True
ATIME: 2024-01-20 16:30:00 ← Recent access
Flag: "Deleted file accessed"
```
**取证解读:**
- 文件在删除后被访问
- 可能的数据窃取
- 反取证文件擦除
## 📁 文件结构
```
forensic-timeline-system/
│
├── Main.py # Workflow orchestrator
├── Extractor.py # Timeline extraction engine
├── Analyser.py # Suspicious activity detector
│
├── requirements.txt # Python dependencies
├── README.md # This file
├── DOCUMENTATION.md # Detailed technical documentation
│
├── timeline.csv # Generated by Extractor.py
└── forensic_report.html # Generated by Analyser.py
```
## 🔧 技术细节
### 支持的磁盘镜像格式
- **Raw Images:** .dd, .raw, .img
- **Expert Witness Format:** .E01, .Ex01
- **Advanced Forensic Format:** .aff, .afd
- **Virtual Disk Images:** .vmdk, .vdi (raw 访问)
### 支持的文件系统
通过 pytsk3 (The Sleuth Kit):
- **NTFS** - Windows 主文件系统
- **FAT12/16/32** - 旧版 Windows, USB 驱动器
- **exFAT** - 现代外部存储
- **EXT2/3/4** - Linux 文件系统
- **HFS+** - macOS 文件系统
- **ISO9660** - CD/DVD 文件系统
- **UFS** - Unix 文件系统
### 时间戳类型说明
| 类型 | 名称 | 描述 |
|------|------|-------------|
| **CRTIME** | 创建时间 | 文件被创建的时间 (birth time) |
| **MTIME** | 修改时间 | 文件内容最后被修改的时间 |
| **ATIME** | 访问时间 | 文件最后被访问/读取的时间 |
| **CTIME** | 变更时间 | 文件元数据被更改的时间 |
## ⚠️ 重要说明
### 扫描限制
默认的 `SCAN_LIMIT = 10000` 可防止在处理大型镜像时耗尽内存:
```
# 对于小型镜像 (<10GB):
SCAN_LIMIT = 50000
# 对于大型镜像 (>100GB):
SCAN_LIMIT = 10000 # Use default
# 对于取证工作站 (32GB+ RAM):
SCAN_LIMIT = 100000
```
### 性能考虑
| 镜像大小 | 扫描限制 | 预计时间 | 内存使用 |
|------------|------------|--------------|--------------|
| 1 GB | 10,000 | ~2 min | ~500 MB |
| 10 GB | 10,000 | ~5 min | ~500 MB |
| 100 GB | 10,000 | ~10 min | ~500 MB |
| 500 GB | 10,000 | ~20 min | ~500 MB |
**注意:** 时间取决于文件数量,而非磁盘大小。
### 已删除文件检测
通过 inode 标志识别已删除的文件:
```
deleted = bool(meta.flags & pytsk3.TSK_FS_META_FLAG_UNALLOC)
```
这适用于:
- ✅ 最近删除的文件(inode 仍已分配)
- ✅ 未分配空间中的文件
- ❌ 被覆盖的文件(数据已销毁)
- ❌ 安全删除(inode 已被擦除)
## 🛡️ 取证最佳实践
### 1. 在副本上工作
```
# ❌ 切勿分析原始证据
python Main.py # On original disk
# ✅ 始终使用取证副本
dd if=/dev/evidence of=evidence.dd bs=4M
python Main.py # On copy
```
### 2. 哈希验证
```
# 分析前
md5sum evidence.dd > evidence.md5
# 分析后
md5sum -c evidence.md5 # Verify no changes
```
### 3. 记录一切
```
# 创建案件文件夹
mkdir case_2024_001
cd case_2024_001
# 运行分析
python /path/to/Main.py > analysis.log 2>&1
# 保存输出
cp timeline.csv forensic_report.html case_2024_001/
```
### 4. 监管链
始终记录:
- 谁获取了镜像
- 何时执行的分析
- 使用的工具和版本
- 发现了什么结果
## 🐛 故障排除
### 错误: "timeline.csv not found"
**原因:** 在 Extractor.py 之前运行了 Analyser.py
**解决方案:**
```
# 按正确顺序运行
python Extractor.py # First
python Analyser.py # Second
# 或者使用 Main.py
python Main.py
```
### 错误: "Missing column: time"
**原因:** timeline.csv 损坏或不兼容
**解决方案:**
```
# 删除并重新生成
rm timeline.csv
python Extractor.py
```
### 错误: "pytsk3 import failed"
**原因:** 未安装 TSK 库
**解决方案:**
```
sudo apt-get install libtsk-dev
pip install pytsk3
```
**解决方案:**
```
# 从以下地址下载预构建的 wheel:
# https://github.com/py4n6/pytsk/releases
pip install pytsk3-X.X.X-cp3XX-win_amd64.whl
```
### 错误: "Permission denied"
**原因:** 读取磁盘镜像的权限不足
**解决方案:**
```
sudo python Main.py # Run with elevated privileges
```
### 大型镜像上的内存错误
**原因:** 扫描限制过高
**解决方案:**
```
# 编辑 Extractor.py
SCAN_LIMIT = 5000 # Reduce from 10000
```
## 📈 输出解读
### HTML 报告部分
1. **摘要**
- 总事件数:提取的所有时间戳记录
- 总文件数:发现的唯一文件
- 可疑文件数:检测到异常的文件
2. **可疑文件**
- 仅包含触发检测规则的文件
- 列出每个文件的所有标记
- 优先在此处进行调查
3. **完整文件时间线**
- 包含所有时间戳类型的所有文件
- 用于时间线重建
- 提供可疑文件的上下文
4. **原始时间线事件**
- 逐个事件查看
- 查看单个时间戳变化
- 用于详细分析
## 🔐 安全考虑
### 证据完整性
- **只读访问:** 脚本仅读取磁盘镜像
- **无修改:** 原始证据永不更改
- **哈希验证:** 始终在操作前后进行验证
### 隐私
- **本地处理:** 所有分析均在本地进行
- **无网络:** 脚本不向任何地方发送数据
- **离线可用:** 无需互联网即可工作
### 法律合规
- **监管链:** 记录所有步骤
- **可复现性:** 相同的输入 = 相同的输出
- **透明度:** 开源,代码可审计
## 📚 其他资源
### 学习资源
- [The Sleuth Kit 文档](http://www.sleuthkit.org/sleuthkit/docs.php)
- [SANS 数字取证](https://www.sans.org/cyber-security-courses/advanced-incident-response-threat-hunting-training/)
- [NIST 取证技术集成指南](https://csrc.nist.gov/publications/detail/sp/800-86/final)
### 相关工具
- **Autopsy** - The Sleuth Kit 的 GUI
- **FTK Imager** - 磁盘镜像获取
- **Volatility** - 内存取证
- **Plaso** - 超级时间线创建
## 🤝 贡献
发现错误或想要改进检测规则?
1. 记录问题
2. 使用样本数据进行测试
3. 提出更改及其理由
4. 考虑取证影响
## ⚖️ 法律声明
此工具用于:
- ✅ 授权的安全评估
- ✅ 事件响应调查
- ✅ 教育目的
- ✅ 取证研究
**在分析任何系统之前,请务必确保已获得适当授权。**
## 📄 许可证
本取证分析系统按“原样”提供,用于数字取证和事件响应的教育及专业用途。
## 🆘 支持
如有问题或疑问:
1. 查看上面的故障排除部分
2. 查看 DOCUMENTATION.md 了解技术细节
3. 验证所有依赖项是否已正确安装
4. 首先使用小型样本镜像进行测试
**版本:** 1.0
**最后更新:** 2024
**测试环境:** Linux (Ubuntu 22.04), Windows 10/11
**Python:** 3.8+
标签:EXT4文件系统, HTTP请求, Linux取证, Python, pytsk3, 元数据提取, 反欺骗时间检测, 取証工具, 子域名变形, 数字取证, 数据可视乎, 数据恢复, 无后门, 时间戳分析, 时间线重构, 电子取证, 磁盘分析, 磁盘镜像分析, 网络安全, 自动化脚本, 被删除文件恢复, 身份验证滥用, 进程保护, 逆向工具, 隐私保护