BitCracker是第一个开源的用于破解使用BitLocker加密存储设备(如硬盘,USB Pendrive,SD卡等)的工具。BitLocker是Windows Vista,7,8.1和10(Ultimate,Pro和Enterprise)上提供的加密功能。BitLocker提供了许多不同的身份验证方法来加密存储设备,如可信赖平台模块(TPM),智能卡,恢复密码,用户提供的密码。通过字典攻击,BitCracker会尝试找出正确的用户密码或恢复密码,来解密加密的存储设备。目前,已在CUDA和OpenCL中实现。
注:在COMMID 7b2a6b6(CUDA版本)和 5f09d7f(OpenCL版本)中存在固定的严重错误:bad loop termination(循环终止错误)!可尝试重新运行解决。
运行环境
运行BitCracker-CUDA的最低要求如下:
CC 3.5或更高版本的 NVIDIA GPU
CUDA 7.5或更新版本
运行BitCracker-OpenCL的最低要求是,GPU或CPU支持OpenCL(查看帮助)。
BitCracker至少需要260 MB的设备内存。
出于性能原因,我们强烈建议你在GPU上运行(具体请参阅性能部分)。
构建
运行build.sh脚本后,会在build目录中生成4个可执行文件:bitcracker_hash,bitcracker_rpgen,bitcracker_cuda,bitcracker_opencl。
为了构建与你的NVIDIA GPU和CUDA版本一致地bitcracker_cuda文件,你需要修改src_CUDA/Makefile,并选择正确的SM版本。对应可参考下表:
GPU 架构
建议的 CUDA
Makefile
Kepler
CUDA 7.5
arch=compute_35,code=sm_35
Maxwell
CUDA 8.0
arch=compute_52,code=sm_52
Pascal
CUDA 9.0
arch=compute_60,code=sm_60
Volta
CUDA 9.0
arch=compute_70,code=sm_70
攻击准备
创建一个使用BitLocker加密的存储设备映像,使用dd命令示例:
sudo dd if=/dev/disk2 of=/path/to/imageEncrypted.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)
然后,在imageEncrypted.img上运行bitcracker_hash可执行文件,以:
检查映像是否具有有效格式并且可以被BitCracker攻击
检查原始存储设备哈希是否已使用用户密码或恢复密码加密
提取映像的哈希描述
如果一切正常,bitcracker_hash将会生成1到2个输出文件:
hash_user_pass.txt:如果设备使用用户密码加密,则此文件包含启动用户密码攻击模式所需的哈希
hash_recv_pass.txt:启动Recovery Password攻击模式所需的哈希值
注:BDE加密卷可以针对不同的身份验证方法使用不同的格式。如果bitcracker_hash无法在你的加密映像上找到恢复密码,请与我联系。
示例:
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7
---------> BitCracker Hash Extractor in7
....
Signature found at 0x02208000
Version: 2 (Windows 7 or later)
VMK entry found at 0x022080bc
VMK encrypted with user password found!
VMK encrypted with AES-CCM
VMK entry found at 0x0220819c
VMK encrypted with Recovery key found!
VMK encrypted with AES-CCM
User Password hash:
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2
Recovery Key hash:
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688
Output file for user password attack: "hash_user_pass.txt"
Output file for recovery password attack: "hash_recv_pass.txt"
用户密码攻击
如果存储设备已使用用户提供的密码加密,则可以该类型的攻击,如下图所示。

BitCracker执行字典攻击,需要你提供可能的用户密码列表。
执行攻击需要:
hash_user_pass.txt文件
可能的用户密码列表(需要你自己提供)
命令行示例:
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
-f:hash_user_pass.txt文件存放路径
-d:爆破字典存放路径
-t:每个CUDA线程处理的密码数
-b:CUDA blocks的数量
-g:NVIDIA GPU设备ID
-u:指定你想要的用户密码攻击
注:查看所有可选项,可以通过./build/bitcracker_cuda -h命令。为了获得最佳性能,请参阅“性能”部分中的表格,并根据你的NVIDIA GPU正确设置t和b选项。
bitcracker_opencl可执行文件同上。
输出示例:
====================================
Selected device: GPU Tesla K80 (ID: 0)
====================================
....
Reading hash file "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663
====================================
Attack
====================================
Type of attack: User Password
CUDA Threads: 1024
CUDA Blocks: 1
Psw per thread: 1
Max Psw per kernel: 1024
Dictionary: wordlist.txt
Strict Check (-s): No
MAC Comparison (-m): No
CUDA Kernel execution:
Stream 0
Effective number psw: 12
Passwords Range:
|