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, 元数据提取, 反欺骗时间检测, 取証工具, 子域名变形, 数字取证, 数据可视乎, 数据恢复, 无后门, 时间戳分析, 时间线重构, 电子取证, 磁盘分析, 磁盘镜像分析, 网络安全, 自动化脚本, 被删除文件恢复, 身份验证滥用, 进程保护, 逆向工具, 隐私保护