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:
|