用户密码通过结合 PBKDF2 和 AES-XTS 存储,如下所示(目前显示的值是固定的,但可以在文件格式内控制):
# 32 用于 AES-XTS128-PLAIN64
# 64 用于 AES-XTS256-PLAIN64
AES_key_length = 32 | 64
AES-password = PBKDF2(algorithm: SHA256,
password: user_password,
salt: random_salt_1,
iterations: 2000,
output_length: AES_key_length)
PBKDF2-decrypted-password = AES_decrypt(key_size: AES_key_length,
mode: XTS,
data: random_data
password: AES-password,
type: raw,
iv: NULL)
Stored_hash = PBKDF2(algorithm: SHA256,
password: PBKDF2-decrypted-password,
salt: random_salt_2,
iterations: 2000,
output_length: 32)
每次用户要解密机器磁盘时,都会执行相同的过程。
$ php VBOXDIECracker.php
VirtualBox 磁盘映像加密破解器
用法:VBOXDIECracker.php disk_image.vbox [wordlist]
$ php VBOXDIECracker.php Encrypted.vbox wordlist.txt
VirtualBox 磁盘映像加密破解器
[+] 正在从以下位置读取数据:Encrypted.vbox
----------------------------------------------------------------
[+] 正在检查硬盘加密:Encrypted.vdi
[+] 硬盘已加密
[+] KeyStore 编码字符串:
U0NORQABQUVTLVhUUzI1Ni1QTEFJTjY0AAAAAAAAAAAAAAAAAABQQktERjItU0hB
MjU2AAAAAAAAAAAAAAAAAAAAAAAAAEAAAAASAniX2ss6TE/u9IdinWigcwAg2bXe
dJRAjHr5mvCCiSAAAAAntQHDFvSfwpay/jKFVzUWc4GsIJ/RwMg+XkG2b/PDWtAH
AACKj0qUg37sG7TWmi58n/rcXmWVNt9FqBxGZiz2a+leWNAHAABAAAAA6qVV8nOu
r58RVxKP0cNRfXyu9D7JqqVAaRfNE3LFdoz4hXxWWWcxjOGBJA/BQ5VuwvrDxO8O
YpwYgl3yKOcewg==
[+] KeyStore 内容:
标头 454e4353 (SCNE)
版本 1
算法 AES-XTS256-PLAIN64
KDF PBKDF2-SHA256
密钥长度 64
最终哈希 12027897dacb3a4c4feef487629d68a0730020d9b5de7494408c7af99af08289
PBKDF2 2 密钥长度 32
PBKDF2 2 盐值 27b501c316f49fc296b2fe32855735167381ac209fd1c0c83e5e41b66ff3c35a
PBKDF2 2 迭代次数 2000
PBKDF2 1 盐值 8a8f4a94837eec1bb4d69a2e7c9ffadc5e659536df45a81c46662cf66be95e58
PBKDF2 1 迭代次数 2000
EVP 缓冲区长度 64
PBKDF2 2 加密后的密码 eaa555f273aeaf9f1157128fd1c3517d7caef43ec9aaa5406917cd1372c5768c
f8857c565967318ce181240fc143956ec2fac3c4ef0e629c18825df228e71ec2
[+] 破解完成,测量时间:6.13035 秒
[!] KeyStore 密码找到:123
----------------------------------------------------------------
[+] 正在检查硬盘加密:New_Disk.vdi
[-] 硬盘未加密