Toc
  1. 前言
  2. 破解LUKS全盘加密
    1. 从内存镜像中提取MASTER KEY
      1. 第一步 判断加密算法
      2. 第二步 DUMP 包含秘钥的内存
      3. 第三步 从内存寻找aes key
      4. 第四步 解密分区
      5. 第五步 解密其他分区
Toc
0 results found
白帽酱
LUKS 全盘加密的一个通用解密方法--从内存中提取LUKS MASTER KEY
2022/08/17 LUKS

作者:橙子酱

前言

之前的文章中提到了一种有启动分区的情况
磁盘主引导->引导分区->引导内核->系统启动->解密挂载分区 (一个引导分区 +一个主分区)
遇到这种情况就可以通过简单的提取文件系统中的秘钥解决.
但是运气不好还会遇到两种更变态的情况

磁盘主引导->引导分区->引导内核->引导内核中解密挂载分区->系统启动->解密挂载分区(只有一个引导分区)
磁盘主引导->磁盘引导程序->解密分区->引导->系统启动->解密其他分区 (一个明文分区都没有)
图片.png这时,通常只能通过逆向引导程序来提取内核镜像.最终拿到镜像中的秘钥文件.
这个过程十分的繁琐. 在没有符号表的情况逆向魔改过的linux引导内核也非常困难.
那么有没有一个简单的方法解决这个问题呢?

破解LUKS全盘加密

luks 解密进行磁盘后硬盘上的数据实际仍然是加密的.
为了可以实时读写加密分区内的数据,加解密使用的秘钥一定存在于内存之中.
钱镜洁, 魏鹏, 沈长达. LUKS加密卷的离线解密技术分析[J]. 信息网络安全, 2014, 14(9): 217-219.

从内存镜像中提取MASTER KEY

第一步 判断加密算法

挂载硬盘 使用cryptsetup luksDump 判断分区使用的加密算法
本文使用的是 AES 256 加密 (默认加密算法)

第二步 DUMP 包含秘钥的内存

图片.png在虚拟机第一个分区完成解密后,dump虚拟机完整内存 (快照 暂停 命令行 均可)

第三步 从内存寻找aes key

使用工具从内存寻找aes key
https://sourceforge.net/projects/findaes/
https://github.com/mmozeiko/aes-finder
https://www.kali.org/tools/aeskeyfind/
图片.png选择对应长度的key hex转成raw文件作为key

第四步 解密分区

图片.pngryptsetup luksOpen 加密的分区 –master-key-file key文件 挂载名
依次尝试各个分区和各个秘钥的组合 无错误返回即为解密成功.

第五步 解密其他分区

挂载解密后的分区,在解密后寻找自动挂载文件 /etc/crypttab
得到其他秘钥位置.
image.png之后的步骤就按照之前的文章操作

本文作者:白帽酱
版权声明:本文首发于白帽酱的博客,转载请注明出处!