Bitlocker密钥提取之自动解锁磁盘的手动解密

环境介绍

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}

导出该注册表项的内容如下图所示:
FVEAutoUnlock加密数据
登录状态下,导出该项需要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密钥,并且得到了目标磁盘的镜像。

解密流程如下:
FVEAutoUnlock数据解密流程图

Bitlocker相关技术,欢迎交流 wxwlwkl@gmail.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值