Mali-Yogesh/Mali-Yogesh-Cyber-Forensic-Tool--Bltool-
GitHub: Mali-Yogesh/Mali-Yogesh-Cyber-Forensic-Tool--Bltool-
一款取证级 BitLocker 镜像与恢复工具,解决证据保全与多遍恢复难题。
Stars: 1 | Forks: 0
# 🔐 Bltool
### 取证级 BitLocker 镜像与恢复工具
**于 I4C — 印度网络犯罪协调中心开发**
**印度内政部**
**德里警察 IFSO 特别处**
[](https://github.com)
[](https://github.com)
[](https://openssl.org)
[](https://github.com)
[](https://github.com)
[](https://github.com)
## 📌 什么是 Bltool?
**bltool** 是一款**取证级命令行磁盘镜像工具**,专为 **BitLocker 加密存储设备**精心打造。它是在**印度内政部 I4C(印度网络犯罪协调中心)为期 10 周的冬季实习**期间设计开发的。
该工具解决了执法机构在网络犯罪调查中面临的一个关键实际问题:**在不使用昂贵专有软件且不丢失任何字节证据的情况下,如何以取证方式获取 BitLocker 加密驱动器(尤其是物理损坏的驱动器)?**
bltool 完美地回答了这个问题。
## 🚨 解决的问题 — Bltool 为何存在
在 IFSO 的网络犯罪调查期间,发现了一个反复出现的挑战:
| 问题 | 影响 |
|---|---|
| 扣押的 Windows 设备被 BitLocker 加密 | 标准的 `dd` 或开源工具无法读取它们 |
| 现有工具(FTK Imager、EnCase)每个许可证成本为 30 万至 100 万卢比 | 并非所有州警察部门都能使用 |
| 带有坏道的损坏驱动器 | 单遍工具会**静默零填充**不可读扇区 —— **导致证据不可逆地丢失** |
| 没有集解密、镜像和分析于一体的统一工具 | 调查人员需使用 3-4 种工具,破坏了监管链 |
**bltool 在单个可执行文件中彻底解决了这四个问题。**
在一个有记录的测试案例中:一款单遍工具在具有 770 万个扇区的驱动器上静默零填充了 **2,048 个扇区** —— 这些扇区极可能包含 NTFS MFT 条目。bltool 的多遍恢复引擎**恢复了其中 1,987 个扇区**,保全了原本会被永久销毁的证据。
## ⚡ 为什么 bltool 胜过其他所有工具
这是**目前唯一**能同时结合以下三项功能的工具:
```
FTK Imager = BitLocker Support ✅ | Multi-pass Recovery ❌ | Free ❌
GNU ddrescue = BitLocker Support ❌ | Multi-pass Recovery ✅ | Free ✅
bltool = BitLocker Support ✅ | Multi-pass Recovery ✅ | Free ✅ ← UNIQUE
```
| 功能 | bltool | FTK Imager | GNU ddrescue | Autopsy |
|---|:---:|:---:|:---:|:---:|
| **BitLocker 原生解密** | ✅ 内置 | ⚠️ 依赖 OS | ❌ | ❌ |
| **三阶段多遍恢复** | ✅ | ❌ 有限 | ✅ | ❌ |
| **解密无 API 依赖** | ✅ | ❌ | ❌ | ❌ |
| **NTFS MFT 完全解析** | ✅ | ✅ | ❌ | ✅ |
| **基于签名的文件雕刻** | ✅ 7+ 种类型 | ✅ 丰富 | ❌ | ✅ |
| **HMAC 签名的审计日志** | ✅ | ❌ | ❌ | ❌ |
| **扇区状态映射文件** | ✅ | ❌ | ✅ | ❌ |
| **可恢复的获取** | ✅ | ❌ | ✅ | ❌ |
| **监管链文档** | ✅ 完整 | ✅ 部分 | ❌ | ⚠️ |
| **成本** | 🆓 免费 | 💰 付费 | 🆓 免费 | 🆓 免费 |
| **Windows 7–11 支持** | ✅ 全部 | ✅ | ❌ | ✅ |
| **数据恢复率(损坏)** | **99.85%** | ~97% | 99.5% | 不适用 |
| **加密 + 恢复结合** | ✅ **独有** | ❌ | ❌ | ❌ |
## 🏛️ 起源与可信度
| 详情 | 信息 |
|---|---|
| **开发地点** | I4C — 印度网络犯罪协调中心 |
| **所属机构** | 印度内政部 |
| **指导者** | IFSO 网络取证专家 |
| **认证方** | 德里警察 IFSO 特别处 ACP |
| **持续时间** | 2025 年 12 月 15 日 — 2026 年 2 月 19 日 |
| **合规性** | ACPO 数字证据指南、NIST SP 800-101 |
## 🎯 核心功能
### 🔓 1. BitLocker 解密引擎(无需 Microsoft API)
Bltool **从零开始实现了完整的 BitLocker 密钥派生链**:
```
48-digit Recovery Key
↓
PBKDF2 Derivation → VMK Decrypt Key
↓
AES-CCM Decryption → Volume Master Key (VMK)
↓
KDF (Key Derivation) → Full Volume Encryption Key (FVEK)
↓
AES-XTS / AES-CBC → Per-Sector Plaintext
```
- 支持 **AES-XTS-128** 和 **AES-XTS-256**(现代 Windows 10/11)
- 支持 **AES-CBC + Elephant Diffuser**(旧版 Windows Vista/7)
- 解析**全部三个冗余元数据块** —— 甚至适用于部分损坏的驱动器
- 兼容从 **Windows Vista 到 Windows 11** 的各种 BitLocker 版本
- 还支持基于 **WMI 的 passthrough** 解锁,用于 OS 辅助获取
### 📀 2. 三阶段多遍镜像引擎
受 **GNU ddrescue** 经过实战检验的方法论启发,bltool 实现了更卓越的三阶段策略:
```
┌─────────────────────────────────────────────────────────────────────┐
│ PHASE 1 — Fast Forward Pass │
│ Block size: 64KB–512KB | Strategy: Skip errors, capture readable │
│ Goal: Image 99%+ of drive at maximum speed │
├─────────────────────────────────────────────────────────────────────┤
│ PHASE 2 — Retry Pass │
│ Block size: 4KB–16KB | Strategy: Revisit errors, reverse read │
│ Goal: Recover intermittent / transient bad sectors │
├─────────────────────────────────────────────────────────────────────┤
│ PHASE 3 — Scraping Pass │
│ Block size: 512B–1KB | Strategy: Sector-by-sector maximum retries │
│ Goal: Last-resort recovery of every remaining readable bit │
└─────────────────────────────────────────────────────────────────────┘
```
**设备 B(2,048 个坏扇区)上的结果:**
- 零填充基线:**96.74%** 恢复率
- 第一阶段后:**99.74%**
- 第二阶段后:**99.83%**
- 第三阶段后:**99.85%** —— **额外挽救了 1,987 个扇区**
### 🗂️ 3. NTFS 文件系统解析器(无需第三方工具)
完整的 MFT(主文件表)遍历与重建:
| NTFS 属性 | 取证价值 |
|---|---|
| `$STANDARD_INFORMATION` (0x10) | 创建/修改/访问时间戳、所有者 SID |
| `$FILE_NAME` (0x30) | 文件名、父目录、防篡改时间戳 |
| `$DATA` (0x80) | 文件内容 —— 驻留或具有 runlist 的非驻留数据 |
| `$INDEX_ROOT/$INDEX_ALLOC` (0x90/0xA0) | 目录 B-tree 索引重建 |
| `$OBJECT_ID` (0x40) | 全局文件 GUID —— 跟踪移动和重命名 |
| `$LOGGED_UTILITY_STREAM` (0x100) | EFS 元数据、备用数据流 |
### 🔍 4. 基于签名的文件雕刻引擎
**无需依赖文件系统结构**即可恢复文件 —— 适用于损坏的卷和未分配空间:
| 文件类型 | 文件头 (Hex) | 最大大小 | 证据价值 |
|---|---|---|---|
| JPEG 图像 | `FF D8 FF E0/E1` | 30 MB | 非常高 |
| PDF 文档 | `25 50 44 46` | 500 MB | 非常高 |
| PNG 图像 | `89 50 4E 47` | 50 MB | 高 |
| ZIP/DOCX/XLSX | `50 4B 03 04` | 200 MB | 高 |
| SQLite 数据库 | `53 51 4C 69 74 65` | 2 GB | 高 |
| Windows EXE | `4D 5A` | 100 MB | 中 |
| MP4/视频 | `00 00 00 xx 66 74 79 70` | 4 GB | 高 |
### 🔐 5. 取证完整性与监管链
| 原则 | 实现方式 |
|---|---|
| **数据完整性** | MD5 + SHA-256 双重哈希;获取期间的增量哈希 |
| **写保护** | 源设备仅以 `GENERIC_READ` 模式打开;在驱动层拦截 `WriteFile` |
| **真实性** | **HMAC-SHA256 签名的日志文件** —— 防篡改审计跟踪 |
| **透明度** | 每个扇区的读取、重试、错误均记录并附带**毫秒级时间戳** |
| **可重复性** | 确定性算法;记录完整配置以便精确重现 |
| **法律可采性** | 符合 ACPO 原则;法庭认可的取证报告格式 |
## 🏗️ 系统架构
### 编译模块细分
| 模块 | 职责 | 核心算法 |
|---|---|---|
| `aes_xts.obj` | AES-XTS 扇区解密 | XTS-AES-128/256;基于 LBA 的 tweak;扇区 IV |
| `aes_cbc.obj` | AES-CBC 密钥解封 | VMK 解密;FVEK 解封;CBC 旧版支持 |
| `crypto_utils.obj` | 哈希与加密工具 | MD5、SHA-256、HMAC-SHA256、密钥派生 |
| `bitlocker_metadata_compat.obj` | BitLocker 元数据解析 | FVE 头解析;VMK 保护器枚举;多版本支持 |
| `attribute_list.obj` | NTFS MFT 处理 | MFT 遍历;属性解析;目录树 |
| `decrypted_disk.obj` | 解密卷 I/O | 虚拟磁盘接口;强制写阻断 |
| `command_parser.obj` | CLI 参数解析 | 参数验证;操作路由;帮助系统 |
| `libcrypto-3-x64.dll` | OpenSSL 加密运行时 | AES 引擎;EVP 抽象(外部) |
| `winfsp-x64.dll` | Windows 文件系统代理 | 类 FUSE 的虚拟卷挂载(外部) |
### 项目结构
```
bltool/
├── src/
│ ├── bitlocker/ # FVE parsing, VMK/FVEK key hierarchy
│ ├── crypto/ # AES-XTS, AES-CBC implementations
│ ├── disk/ # Physical/logical/image disk readers
│ ├── ntfs/ # MFT parser, runlist decoder, directory
│ ├── imaging/ # Multi-pass acquisition engine + hashing
│ ├── recovery/ # File carving, MFT undelete
│ ├── mounting/ # WinFsp virtual mounter
│ ├── winfsp/ # FS callbacks
│ ├── hashing/ # Multi-hash engine
│ ├── reporting/ # Forensic report generator
│ ├── cli/ # Command-line interface
│ ├── cache/ # LRU sector & MFT cache
│ ├── repair/ # Volume repair utilities
│ └── virtual_disk/ # DecryptedDisk abstraction
├── services/
│ ├── evidence_source # Unified evidence abstraction
│ ├── forensic_session # Session & case manager
│ ├── carve_engine # Signature-based file carver
│ ├── search_engine # Keyword/regex search
│ ├── timeline_builder # Filesystem event timeline
│ ├── case_manager # SQLite case persistence
│ └── registry # Windows registry parser
├── gui/ # Qt-based panels (Dashboard, Imaging, Recovery...)
├── forensic_ui/ # Web UI (index.html, app.js, components.js)
├── include/ # Header files
├── docs/ # Documentation
├── build/ # MSVC Release — bltool.exe + DLLs
├── CMakeLists.txt
├── README.md
├── LICENSE
├── IMPLEMENTATION_SUMMARY.md
└── INTEGRITY_VERIFICATION.md
```
## 🚀 快速开始
### 前置条件
| 要求 | 版本 | 用途 |
|---|---|---|
| Windows OS | 10/11 x64 | 运行平台 |
| 管理员权限 | 必需 | 直接磁盘访问 |
| OpenSSL (libcrypto) | 3.x x64 | 加密引擎(已内置) |
| WinFsp | 2.0+ | 虚拟文件系统挂载(已内置) |
| Visual C++ Runtime | 2022 x64 | C++ 运行时(已内置) |
### 硬件要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | x64,2 核,2.0 GHz | 8+ 核,3.5+ GHz (AES-NI) |
| RAM | 4 GB | 16 GB+(用于大型镜像分析) |
| 存储 | 等同于源盘大小 | 源盘大小的 2 倍(用于合并操作) |
| 接口 | USB 3.0 / SATA | USB 3.2 / NVMe PCIe |
| 写阻断器 | 软件(已测试) | 硬件(Tableau/Wiebetech — 法庭级) |
### 安装
```
# 1. 下载最新版本 release
# 2. 解压至您的 forensic workstation
# 3. 以 Administrator 身份运行(访问物理磁盘所需)
# 验证安装
bltool.exe --version
```
## 💻 CLI 参考
### 命令概述
```
bltool 标签:C++, DNS 反向解析, OpenSSL, StruQ, 数字取证, 数据恢复, 数据擦除, 文件系统解析, 磁盘加密, 自动化脚本