Toc
  1. 前言
  2. 文件系统分析
  3. 文件系统解密
Toc
0 results found
白帽酱
记一次审计时遇到的加密分区解密
2021/12/28 笔记

前言

最近拿到了一个商业产品的qcow2 镜像 准备试一试代码审计
首先用qemu-img 转换成vmdk 镜像

qemu-img convert -f qcow2 123.qcow2 -O vmdk 123.vmdk

图片.png
转换遇到错误 网上搜索只有一个其他项目的issue 没有解决方案
阅读qemu源代码 发现是在2017-02-15版本引入了这个特性
https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg03173.html

bitmaps_ext: Invalid extension length: Unknown error

发现可以使用2016年的旧版qemu完成转换
https://qemu.weilnetz.de/w64/2016/
转换完成使用vm启动 准备进入grub修改root密码
发现grub使用密码验证

准备使用diskgenius载入镜像删除grub密码
载入镜像后如下图所示
除引导分区外 其他分区的文件系统不能正常识别
图片.png

文件系统分析

ci 是一个 LINUX LVM的卷组
通过前缀魔数判断root卷文件系统为 XFS
diskgenius 不支持XFS文件系统 所以只能使用其他方法挂载读写里面的内容
image.png继续看其他分区 发现app home 分区与其他分区文件系统不一样
有着LUKS的标记
图片.png
经过搜索发现这是一种LINUX上的硬盘加密方案 Linux Unified Key Setup
使用了AES加密 需要秘钥才能解密
既然可以正常进入系统,那就说明秘钥是储存在本地的.
我们只要寻找系统分区的挂载配置就有可能找到秘钥.

文件系统解密

准备一台可以正常使用的linux虚拟机. 这里使用了一台 kali
将要挂载的硬盘添加到虚拟机中image.png
首先挂载 LINUX LVM卷组
vgscan 扫描卷组
vgchange -ay 卷标签 (激活卷组)
图片.png
图片.png
成功挂载卷
因为root分区没有加密所以直接挂载他
新建一个目录 挂载root分区
mount -t xfs /dev/mapper/cl-root /tmp/temfs/image.png成功挂载root分区
现在可以直接对root分区进行读写操作了 可以修改密码直接进入系统读取解密后分区的文件
但是不能止步于此 既然遇到了这种特殊情况 就要学习下解密luks分区
在查了一些资料后 发现解密方法非常简单
第一步先在root分区寻找分区挂载的配置文件

/etc/fstab  启动分区挂载
/etc/crypttab 分区解密

可以在/etc/crypttab 文件中找到用于分区解密的key文件位置

image.png
安装luks命令工具
使用命令行解密分区

cryptsetup luksOpen 被加密的分区 --key-file 秘钥文件
cryptsetup luksOpen /dev/mapper/cl-app --key-file /tmp/temfs/etc/.appconf/.abcde app

成功解密分区
image.png
将这个mapper挂载到一个目录
mkdir /tmp/atrustapp/
mount -t xfs /dev/mapper/app /tmp/atrustapp/image.png到这一步就完成了解密
其他分区可按照这种方法使用对应秘钥单独解密

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