环境介绍
PC中的一个非系统盘(如:D、E、F盘等),如果启用了Bitlocker开机自动解锁功能,会在系统的注册表中记录自动解锁的密钥信息,该密钥信息是经过加密存储,无法直接用来解密分卷。
旧系统密钥解密
-
制作目标磁盘镜像
-
使用Asernal挂载目标磁盘镜像,用已取得的系统盘恢复密钥解锁系统盘,这里假设解锁后的系统盘为
F:\
盘 -
通过本地注册表编辑器(regedit)挂载目标系统盘中NTUser.dat注册表文件,
F:\Users\pc\NTUSER.DAT
-
从挂在后NTUSER.dat中导出FVEAutoUnlock项
旧系统的FVEAutoUnlock在注册表中位置HKEY_LOCAL_MACHINE\**[挂载点]**\Software\Microsoft\Windows\CurrentVersion\FveAutoUnlock
导出该项到文件,如导出文件到桌面,文件名如:
C:\Users\coder\Desktop\FVEAutoUnlock.reg
-
解密FVEAutoUnlock
通过NirSoft工具集中的DataProtectionDecryptor工具解密C:\Users\coder\Desktop\FVEAutoUnlock.reg
中的数据,如下图所示
上图中,F:\
盘是挂载出来的目标系统盘分区,输入F:\
后,点击Automatic Fill
按钮,下面的路径将自动填充。接着要求输入Windows Login Password
,接着输入Filename that contains the DPAPI data to decrypt
,也就是上一步导出的FVEAutoUnlock.reg
文件路径。然后就会看到解密成功的2行数据,这2行数据中的红框内容是一样的(至少目前看到的是相同的32个字节的数据)。最后,将红框中32字节的数据替换到任意一个
.BEK
文件的最后32字节中,替换后样例如下图所示
通过manage-bde命令解锁非系统盘分区,这里假设非系统盘挂载后的盘符为K,则解锁命令为manage-bde -unlock K: -rk C:\Users\coder\Desktop\*****.BEK
-
解密需要登录密码的情况
如果没有输入Windows Login Password
,且DPAPI解密时需要登录密码,则无法解密密钥,如下图所示
如上图所示,要求输入目标系统的登录密码。
如果目标系统是微软账户登录或者PIN码登录,则需要目标系统的微软账户密码,然后通过Nirsoft工具集中的MadPassExt工具提取微软账户对应的密码,如下图所示
新系统密钥解密
新系统中,当非系统盘启用自动解锁时,会在加密的系统盘的Bitlocker元数据中生成一个meta entry type为0x000b的数据,存储在加密的系统盘Bitlocker结构中。
因此,以下获取自动解锁的加密分区密钥需要加密的系统盘的Bitlocker元数据。如果做磁盘镜像时,只拷贝了系统盘的明文分区数据,没有系统盘的Bitlocker元数据,则无法提取自动动解锁盘的密钥,无法解密。
先看一下,当非系统盘设置为Bitlocker加密并且自动随系统解锁,在注册表中会有FVEAutoUnlock项,具体的注册表位置如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FVEAutoUnlock\{GUID}
导出该注册表项的内容如下图所示:
登录状态下,导出该项需要SYSTEM权限。可以通过Sysinternal工具集中的PsExec.exe命令行程序启动注册表编辑器regedit,此时的注册表编辑器进程具有System权限。
PsExec.exe -i -d -s regedit.exe
Data部分的数据就是加密后的数据,其大致结构如下:
uint32_t length; // 0x88 目前遇到的长度是0x88字节,其它情况待定
uint32_t value_type; // 0x09 External key
GUID protector_id; // 0x10 StartupKey ID
uint64_t filetime; // 0x08 文件时间
uint8_t meta_header[8]; // 0x08 metadata header
GUID volume_id; // 0x10 加密卷标识ID
aes_ccm_encrypted encryption_key;
encryption_key的大致结构如下:
uint16_t size;
uint16_t type;
uint16_t value_type;
uint16_t version;
uint8_t nonce[0x0C];
uint8_t cipher_text[0x3C];
关于每个字段的详细介绍,参考BitLocker Drive Encryption (BDE) format.asciidoc
要解密FVEAutoUnlock中的数据,前提条件需要通过某些手段(如目标内存镜像文件提取、TPM嗅探等),获得加密的系统盘的RecoveryPassword或者VMK密钥,并且得到了目标磁盘的镜像。
解密流程如下:
Bitlocker相关技术,欢迎交流 wxwlwkl@gmail.com