提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
Bitlocker是Windows系统原生的磁盘加密功能,一般通过口令、恢复密钥或TPM进行解密。本文主要梳理并运用公开资料分析Bitlcoker加密卷的加密方式和身份验证方式,以便更精准地选取解锁方案。后续,我也会考虑梳理当前的Bitlocker解锁方案原理以供参考。
本篇文章参考了E. Agostini等人的《BitCracker: BitLocker meets
GPUs》、Merser的《基于Win7的Bitlocker加密分析及实战思路》、Jesse D.
Kornblum等人的《Implementing BitLocker Drive Encryption for Forensic
Analysis》、Thx Chang的《Bitlocker 加密格式規範》,在此感谢前辈在该方向的研究。
注:文本仅用于本人记录、交流,并帮助部分忘记密码的朋友。
提示:以下是本篇文章正文内容,下面案例可供参考
一、简述Bitlocker的加密机制
Bitlocker采用全盘加密技术,通过AES加密算法对存储设备上的所有数据进行保护。其加密机制主要包含以下核心要素:首先,Bitlocker使用128位或256位AES加密算法对数据进行加密,确保数据安全性;其次,Bitlocker支持多种解锁方式,包括PIN码、智能卡等,增强访问控制;最后,系统会生成恢复密钥,存储在其他磁盘或者微软账户或者打印,以防主密钥丢失时仍能恢复数据。其中,恢复密钥与口令等是两条不同的解锁路径(这部分会在本文示例中看到),二者有其一即可。
Bitlocker的密钥体系
Bitlcoker的密钥体系属于多级密钥结构,每一层密钥用于保护下一层密钥,最终保护用户数据。主要密钥包括:
(1)全卷加密密钥 (FVEK, Full Volume Encryption Key)
FVEK 是直接用于加密和解密磁盘数据的对称密钥。它由 AES 加密算法生成,通常为 128 位或 256 位。FVEK 是整个加密过程中最核心的密钥。
(2)卷主密钥 (VMK, Volume Master Key)
VMK 是用于加密 FVEK 的密钥。VMK 本身也被加密存储,其加密方式取决于 BitLocker 的配置(如 TPM、密码、USB 密钥等)。VMK 是 BitLocker 密钥体系中的中间层,确保 FVEK 的安全性。
(3)保护密钥 (Protector Key)
保护密钥用于加密 VMK。通常来自于TPM、用户口令等。
(4)恢复密钥
恢复密钥是一条独立的解密路径,在Bitlcoker卷头中会存储由恢复密钥加密的VMK密文,因此拿到恢复密钥后即可逐级解锁Bitlcoker加密卷。参考Jesse D. Kornblum等人的研究可知,恢复密钥生成时会满足几条规则。一是每组六位数字必须能被11整除。二是每组六位数字必须小于 720,896。三是每组中的第六位数字是校验和数字,若用x1、x2、x3、x4 、x5、x6分别表示第1至6位数字,则满足
x6=(x1−x2+x3−x4+x5) mod 11
Bitlcoker的解密流程
(1)验证保护密钥
用户提供正确的保护密钥(如 TPM、密码、USB 密钥等),用于解密 VMK。
(2)解密 VMK
使用保护密钥解密 VMK。
(3)解密 FVEK
使用 VMK 解密 FVEK。
(4)解密数据
使用 FVEK 解密磁盘上的数据。
二、使用工具识别Bitlocker卷加密策略与身份验证模式
使用命令行工具识别加密方式
通过Windows内置的manage-bde
命令可以查看驱动器加密状态。该命令会显示加密进度、加密方法等详细信息。
manage-bde -status C:
输出示例:
BitLocker 驱动器加密: 配置工具版本 10.0.19041
Copyright (C) 2013 Microsoft Corporation. All rights reserved.
卷 C: []
[数据卷]
大小: 476.94 GB
BitLocker 版本: 2.0
转换状态: 完全加密
加密百分比: 100%
加密方法: XTS-AES 128
保护状态: 保护开启
锁定状态: 已解锁
使用第三方工具识别身份验证方式
使用John the Ripper尝试提取Bitlocker密钥哈希,这里提取到什么哈希即可判断使用了什么身份验证方式,使用方法可以参考下方链接。
https://github.com/openwall/john/tree/bleeding-jumbo
(好了,懒得了解原理的小伙伴看到这里就可以了。下面说一个手工分析的方法,便于感兴趣的朋友学习原理,也便于本人记忆。)
三、通过人工分析识别Bitlocker卷加密策略与身份验证模式
定位FVE块
所需工具:WinHex或其他低级磁盘分析工具。
BitLocker加密的驱动器在起始扇区会有特定标识符,如“-FVE-FS-”字符串。进一步,我们可以通过卷头分析加密卷使用了哪种方式进行加密,以便选择解密方案。
本文梳理了一种判断加密方式和身份验证方式的初筛方法,如下。
首先要用到两张表,即
1.BitLocker卷头信息(图片取自《基于Win7的Bitlocker加密分析及实战思路》)
2.FVE元数据条目信息(图片取自《基于Win7的Bitlocker加密分析及实战思路》)
示例:某个使用Win10系统加密的U盘
可以看到标识符“-FVE-FS-”,表示此处是BitLocker加密卷头。由于加密信息存储在FVE元数据条目信息中,因此此处依据图1找FVE元数据块偏移,在相对于卷头起始的第176、186、192字节,长度均为8字节。注意:FVE元数据块最多有三个,需要依次查看。另外,这里的FVE元数据块偏移记录的是相对于Bitlocker加密卷头而言,如示例卷头起始为1004535808,偏移176字节往后读8字节为“00009CC100000000”,由于是小端存储要从右往左读,因此十六进制为“C19C0000”,转十进制为“3248226304”,最终找到1004535808+3248226304的偏移处。如下所示。
到这里,可以看到FVE块开头的标识符,验证结果正确。
识别加密算法
由于加密方法存储在FVE元数据标题中,此处需要定位FVE元数据标题起始位置。根据《Bitlocker 加密格式規範》可知,FVE元数据标题的第4至12字节为固定的
“0x01 0x00 0x00 0x00 0x30 0x00 0x00 0x00”
可定位到上述固定值后,倒推4字节即为FVE元数据标题起始位置。然后,找到FVE元数据标题偏移36字节处,依据下表确定加密方式。(注意卷数据均是小端存储,如示例中将定位到"04 80",对应加密方式为AES-XTS 128)
识别身份验证方式
由于VMK密文存储在FVE元数据条目中,而VMK密文结构中存储了身份验证类型,因此需要先通过FVE元数据条目定位VMK密文起始位置,再找到身份验证方式的标识。在FVE元数据条目结构中,第4字节记录了值类型,长度为2字节。第6字节记录了版本号,长度2字节,为固定的“0100”。由于VMK的值类型为0x0008,因此FVE元数据条目的第4至7字节小端存储显示为“08 00 01 00”,通过该固定值可定位到VMK密文。VMK密文起始位置偏移0字节,长度16字节的数据为GUID,起始26字节,长度2字节的数据为保护类型(即身份验证方式),保护类型编码如下。
在示例中,分析结果如下,其中红色为用于定位VMK密文的固定值,绿色为偏移26字节的保护类型,示例中可知存储了一个受用户口令保护的VMK和一个受恢复密钥保护的VMK。
注意:未经授权解密他人设备可能违反法律法规。这些方法仅用于研究原理和技术交流。