LUKS 全盘加密的一个通用解密方法--从内存中提取LUKS MASTER KEY
作者:橙子酱之前的文章中提到了一种有启动分区的情况磁盘主引导->引导分区->引导内核->系统启动->解密挂载分区 (一个引导分区 +一个主分区)遇到这种情况就可以通过简单的提取文 2022-8-17 17:34:50 Author: rce.moe(查看原文) 阅读量:1 收藏

作者:橙子酱

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

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

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之后的步骤就按照之前的文章操作

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


文章来源: https://rce.moe/2022/08/17/DUMP-LUKS-KEY-FROM-MEMORY/
如有侵权请联系:admin#unsafe.sh