浅谈EFDD等软件从内存恢复Bitlocker密钥的原理
BitLocker 是微软提供的安全加密功能,可与 TPM 配合使用,实现系统盘全盘加密,确保系统仅在可信环境中才能解密启动。在取证实践中,如果制作内存镜像时Bitlocker卷是被解密挂载的,那么我们就可以使用EFDD或者PasswareKit工具从内存镜像中提取出Bitlocker恢复密钥,在取证竞赛中,这也是解密Bitlocker加密分区的主要思路之一。
所以,这些工具是怎么从内存镜像中提取恢复密钥的呢?
或者换句话说,为什么可以从内存恢复Bitlocker密钥?
BitLocker的解密过程
解决这个问题之前,先理解一下Windows系统盘解密的工作原理
密钥主要有这几个层级:
1. 第一层: 全卷加密密钥(FVEK):直接用于加密和解密系统盘数据的密钥,可以是PIN码、启动密钥之类,采用AES-256标准静态加密。
2. 第二层:卷主密钥(VMK):用于加密和解密FVEK的密钥。
3. 第三层:密封密钥(Sealing Key):TPM内部的密封密钥,用于加密和解密VMK密钥。
这里的TPM是主板上的一个硬件,用于生成、保护、存储密钥,并在不泄露密钥本体的前提下参与加密、解密、签名等敏感操作,也就是说最后这一层密钥是放在硬件中的,以提高系统安全性
当系统启动时,TPM会校验主板、CPU等硬件是否被篡改,也会校验UEFI固件等,哪怕是更改了BIOS设置也会使TPM拒绝解密。
启动时,TPM会重新计算PCR值,并将其与预存的基准度量值进行比较。
- 如果值匹配,证明为可信环境,提供密封密钥以解密VMK,VMK再解密FVEK,最终系统盘被解密,操作系统正常启动。
- 如果值不匹配,将拒绝提供密封密钥,系统会中断启动,需手动输入恢复密码,系统才可正常启动。
使用内存镜像即时解密 BitLocker 卷
根据上述解密过程,我们可以知道如果挂载了 BitLocker 卷,则 VMK 将驻留在内存中,只要卷保持挂载,系统要想读取磁盘,必须保持已解密的VMK和FVEK。
如果这个时候我们去dump 内存镜像,那么镜像中可能就会包含VMK的明文。
既然有了VMK的明文,那么是否有FVEK就不重要了,也就是相当于绕过了windows的密码
如何反推恢复密钥?
windows中可用于加密 BitLocker 卷的保护程序包括:
1 | TPM (可信平台模块芯片) |
最常见的就是密码和恢复密钥
使用以下命令可以显示保护程序列表
1 | manage-bde -protectors -get C: |
在Bitlocker磁盘头部有一块FVE metadata,里面有:
- 加密后的 FVEK
- 多个“密钥保护器条目”(每种保护方式一个条目:密码、恢复密钥、TPM+PIN 等)
- 每个条目里包含:类型标识 + 加密后的保护数据(例如恢复密钥对应的密钥材料)
在正常情况下,当你输入密码/恢复密钥/TPM+PIN 时,BitLocker 用这个“外部信息”去尝试解包某个保护器条目,成功后得到 VMK;然后用 VMK 去解 FVEK,完成挂载。
但如果已经拿到 VMK 的情况下,方向就反过来了:
1. 不再需要知道密码/恢复密钥;
2. 取证工具可以直接利用 VMK 去解密这些“保护器条目”对应的密钥材料,也就解密出了恢复密钥

