AD

WIN7上获取BITLOCKER KEYS

0x01概述


如何从内存中检索获取全卷加密密钥(Full Volume Encryption Key (FVEK))。

0x02从WIN7获取FVEY


如何从一个运行有Bitlocker的设备上获取到对应的数据?

首先说明,这并不是一个漏洞,这是全盘加密系统的工作场景所导致的,例如apple的FileVault、Truecrypt均存在这样的问题。在内存中保存KEY,主要是出于性能的考虑。否者在访问数据之前会有很多额外的开销。

win7的Bitlocker使用AES CBC(级联分组密码),长度为128bit或者256bit。并且针对不同的用户,可以有以下四种模式:

  • AES 128-bit + Elephant Diffuser (Default)

  • AES 128-bit (without diffuser)

  • AES 256-bit + Elephant Diffuser

  • AES 256-bit (without diffuser)


FVEK,该key用于加密数据,并且每个扇区都是单独加密,FVEK会存储在影片的元数据内。FVEK这个key本身又会被VMK(Volume Master Key:卷主密钥)进行加密。VMK使用Bitlockers的加密器进行依次加密:可能是TPM(Trusted Platform Module:可信平台模块)、一个恢复密钥、证书,亦或者是其中的组合,也可能都不是。在这种情况下,如果Bitlocker被“暂挂/暂停”,用于加密VMK的key将不受到任何保护,是明文的。

通过资料查询可以获知:win7环境下,FVEK被保存在一个内存区域里面,并且使用内存标志“FVEc” (用于标识密码池的分配)进行标志。同样,用于Elephant Diffuser的TWEAK(调整)key也会被标记出来。

红色方框: Bitlocker mode (8001 = AES 256 with Diffuser)

Green: FVEK

TWEAK:未显示

0x03 验证


尝试实际测试:使用Volatility脚本获取FVEK。

AES 128-bit with Diffuser (Default mode)

AES 256-bit

 

在一个linux虚拟机内,使用libbde工具和找到的FVEK(可能需要TWEAK)挂载磁盘分区。

详细说明如下:

在启用Bitlocker的虚拟机磁盘内创建一个文件:

使用工具获取一个内存dump文件,并使用Volatility脚本获得FVEK(和TWEAK)

使用上面获取的key文件,使用libbde在linux下挂载磁盘

查看挂载的目录

0x04附录

脚本文件

https://tribalchicken.com.au/files/bitlocker.py

 

https://tribalchicken.com.au/security/extracting-bitlocker-keys-with-volatility-part-1-poc/

评论

此博客中的热门博文

简单粗暴导出小米便签

我——终于一个人了

多种方法绕过POWERSHELL的执行策略