破解内存转存中的全盘加密-疯猫网络
破解内存转存中的全盘加密
如何从拥有root用户的主机上获取到使用完全磁盘加密运行的虚拟机中数据的访问权限,这是一个非常有意思的操作。
以前遭遇过许多破解全盘加密的方法鸿蒙炼体,但最简单的方法是对正在运行的VM使用内存转储时并从内存里提取到加密密钥李如儒。可以采取的步骤如下所示卢海清。
先使用全盘加密设置Ubuntu 16.04 VM
对磁盘解锁时转储Virtualbox VM的内存数据
使用findaes工具从内存转储中提取出主密钥
使用密钥从VM的磁盘文件解密加密的分区
然后挂载分区并访问数据安装程序
我们在Virtualbox中设置了一个带有全盘加密的Ubuntu 16.04桌面虚拟机来试试这个方法。
首先我们在安装期间使用默认的“使用LVM进行全盘加密”选项,该选项使用dm-crypt / LUKS。使用的默认cryptsetup配置是aes-xts-plain64:sha256殇不患 ,它使用512位加密密钥。
安装完成后,我们通过输入我们配置的加密密码启动VM。转储VM的内存数据
首先要在磁盘处于解锁状态时获取VM的内存转储数据,VM必须处于运行/暂停状态,以便我们能够将内存转储提取到文件中。
VirtualBox公开了一个功能丰富的调试器,除此以外,它允许我们转储VM的内存数据张琰琰老公。
VBoxManage debugvm <vm-name> dumpvmcore --filename = <filename.raw>
这将以原始文件格式进行内存转储,使用这条命令需要一段时间才能完成。从内存转储中提取密钥
然后邢秉懿 ,我们就可以使用可以从文件中识别AES字符串的任何工具从内存转储中提取加密密钥,这次操作选择使用findaes。
可以从https://sourceforge.net/projects/findaes/下载findaes。此文件是findaes源代码文件,必须先编译才能使用它猿柿日世里 。
让我们提取下载的zip文件
unzip findaes-1.2.zip
编译它
cd findaes-1.2 ; make
对内存的转储文件运行findaes命令,看看是否能够提取任何密钥。
./findaes /path/to/fdedump2.raw
找到密钥的输出
可以看到,从内存转储中识别出了很多密钥。AES算法从主加密密钥生成轮密钥,这些密钥也存储在存储器中。即使主密钥由于某种原因不可用高小攀,我们仍然可以从圆键计算主密钥。所以我们看到的是主密钥,圆形密钥和任何其他能够识别的AES密钥的混合。对于加密疑问可以参考cryptsetup文档以了解有关如何实现全盘加密的更多信息。
我们可以编写一个脚本来尝试解密分区的所有密钥。但是,由于我们知道我们正在寻找512位密钥,并且提取的密钥都是256位,我们可以将搜索范围缩小到内存中连续的两个256位密钥。
最后找到了符合要求的两个密钥秦晓秦奋 ,通过将两个键组合在0x34dfcf88和0x34dfcd98来获得主密钥。由于Intel x86-64使用小端模式,所以必须以相反的顺序组合密钥刘杰毅 。
识别主密钥
现在有一个潜在的主密钥,可以尝试解密加密分区谢姓女孩起名郑幺妹 。使用主密钥解密LUKS加密驱动器
我们将使用dmsetup工具和恢复出的主密钥来尝试解密加密分区。
要解密分区,我们首先需要挂载磁盘。为此,我们首先复制VM的磁盘并将其附加到新的Virtualbox VM,龙一仪我们将使用实时Ubuntu环境来挂载磁盘并解密分区。完成后,我们将使用Ubuntu Live环境启动到新VM。
要手动使用主密钥来解密加密分区,我们需要分区的大小和使用的确切加密方案。我们知道dmcrypt使用的默认加密方案是来自cryptsetup FAQ的aes-xts-plain64:sha256。
我们需要找到磁盘并从我们的实时环境中列出其分区。我们可以使用fdisk来做到这一点
sudo fdisk -l
加密磁盘中的分区
我们使用blockdev找到加密分区/dev/sda5的大小
sudo blockdev --getsz /dev/sda5
解锁和解密分区的命令的语法如下
echo "0 <size> crypt aes-xts-plain64 <key> 0 </dev/drive> 4096" | sudo dmsetup create luks-volume
如果没有错误,则解密成功。访问数据
我们使用lsblk查看解密后现在可用的LVM卷
sudo lsblk
解密后的LVM分区
现在可以看到一个LVM卷,它是解密分区的根分区。现在安装下,看看是否能找到一些有趣的东西。
sudo mount/dev/mapper/ubuntu-vg-root/mnt
让我们列出root用户的主文件夹的内容
ls/mnt/root
我们能够在解密后读取敏感文件
现在已成功从内存转储中提取加密密钥,并从使用完全磁盘加密的VM磁盘中成功读取出文件。