

通过内存转储打破Linux全盘加密保护
source link: http://www.freebuf.com/articles/database/181010.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

如何在主机上成为root用户获取全盘加密运行虚拟机中数据的访问权限?这是我们在Appsecco内部讨论的一个问题,我们需要一个合理而可能的解决方案。
据我所知,可以破解全盘加密的方法手段非常的多。但缺点是大部分这些方法都非常复杂,且操作起来费时费力。其中最简单的方法就是对正在运行的VM进行内存转储,并从中提取加密密钥。我们的操作步骤如下:
设置Ubuntu 16.04 VM全盘加密保护
在磁盘解锁时转储Virtualbox VM的内存
使用findaes工具从内存转储中提取主密钥
使用密钥从VM的磁盘文件解密加密的分区
挂载分区并访问数据
设置
让我们在Virtualbox中设置一个带有全盘加密的Ubuntu 16.04桌面虚拟机。
在安装期间我们使用默认的“使用LVM进行全盘加密”选项,其将使用dm-crypt/LUKS进行加密。使用的默认cryptsetup配置为512位加密密钥的aes-xts-plain64:sha256。
安装完成后,我们通过输入我们配置的加密密码来启动VM
转储VM内存
首先,我们在磁盘处于解锁状态时来获取VM的内存转储。注意:VM必须处于运行/暂停状态,以便我们能够将内存转储提取到文件中。
VirtualBox有一个功能强大的调试器,除了基本的一些功能外,它还支持VM内存转储。
VBoxManage debugvm <vm-name> dumpvmcore --filename=<filename.raw>
这将以原始文件格式进行内存转储,这个过程可能需要一段时间才能完成。
从内存转储中提取密钥
我们可以使用任何可以从文件中识别AES字符串的工具,来帮助我们从内存转储中提取加密密钥。这里我们使用的是 findaes 。
让我们提取下载的zip文件
unzip findaes-1.2.zip
编译
cd findaes-1.2 ; make
运行findaes命令提取相关密钥
./findaes /path/to/fdedump2.raw
可以看到,findaes为我们从内存转储中识别出了许多密钥。AES算法从主加密密钥生成轮密钥,这些密钥也存储在存储器中。即使主密钥由于某种原因不可用,我们仍然可以从轮密钥计算出主密钥。所以我们看到的是主密钥,轮密钥和其他能够被识别的AES密钥的混合。你可以参考 cryptsetup文档 了解有关如何实现全盘加密的更多信息。
我们可以编写一个脚本来尝试解密分区的所有密钥。但是,由于我们已经知道我们正在寻找的密钥为512位,而提取的密钥都是256位,因此我们可以将搜索范围缩小到内存中连续的两个256位密钥。
我们找到了符合要求的两个密钥。我们通过将两个键0x34dfcf88和0x34dfcd98组合来获取主密钥。由于Intel x86-64使用little-endian(小端)模式,因此我们必须以相反的顺序组合密钥。
现在我们有了一个潜在的主密钥,我们将尝试解密加密分区。
使用主密钥解密LUKS加密驱动器
我们将使用dmsetup工具和恢复出的主密钥来尝试解密加密分区。
要解密分区,首先我们需要挂载磁盘。复制VM的磁盘并将其attach到一个新的Virtualbox VM,我们将使用live Ubuntu环境来挂载磁盘并解密分区。完成后,我们将使用Ubuntu Live环境启动到新的VM中。
要手动使用主密钥来解密加密分区,我们需要分区的大小和使用的确切加密方案。我们知道dmcrypt使用的默认加密方案是来自 cryptsetup FAQ 的aes-xts-plain64:sha256 。
我们需要找到磁盘,并从我们的live环境中列出其分区。我们可以使用以下命令:
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卷,它是解密分区的根分区。现在让我们挂载到该分区,看看能否找到一些有趣的东西。
sudo mount /dev/mapper/ubuntu--vg-root /mnt
让我们列出root用户的主文件夹内容
ls /mnt/root
现在我们已经成功从内存转储中提取出了加密密钥,并成功读取了使用全盘加密的VM磁盘中的文件内容。
*参考来源: appsecco ,FB小编 secist 编译,转载请注明来自FreeBuf.COM
Recommend
-
45
上次发布 从PowerShell流程转储中提取活动历史记录 之后,我又想到了一个有趣的问题:“是否可以提取已执行的脚本...
-
44
前端曝光,中端转化,后端维护——李佳琦的全盘运营就是这么简单。当然,其中究竟有多少讲究,就要实践才能知道答案。 你对李佳琦的印象是怎样的?——口红一哥、带货达人、涂口红世界纪录保持者、魔鬼等。 外行看热闹,内行看门道。当大家都惊叹于李佳琦超强的带货能...
-
10
1. 堆内存转储简介 堆内存转储(Heap Dump),是指JVM堆内存在某一个时刻的快照,一般使用 hprof 格式的二进制文件来保存。 可用于分析内存泄漏问题,以及Java程序的内存使用优化。 常见的内存转储分析工具包括:
-
20
-
5
风起云涌、任重道远。 历史总是惊人地相似。20世纪80年代,处于巅峰时期日本半导体产业,第一次在市场占有率方面超越美国,成为全球最大半导体生产国,也因此受到了美国的限制。1985年,美国把日本拉上了半导体产业不当竞争的谈判桌,...
-
5
Jager · 12月20日 · 2013年bat · for · 全盘查找 ·
-
7
0603 - 不要轻易全盘否定自己 ...
-
8
618小红书行业投放报告,洞察全盘数据
-
3
linux迁移和全盘加密 calendar Dec 16, 2021 clock 1 min read 迁移挺容易的。启一个live...
-
17
记一次有教益的内存碎片转储文件分析经历
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK