『CTF』制作新内核版本的 Volatility Profile

admin 2023年5月19日18:54:42评论81 views字数 3160阅读10分32秒阅读模式

点击蓝字

关注我们


日期:2023-05-19
作者:nothing
介绍:如何根据Linux内核版本制作对应的profile

0x00 前言

之前参与的CTF比赛中,内存取证多以Windows为主,随着取证的发展,现在的取证题目,开始逐渐向Linux转移,但volatility官方给的内核profile都比较老了,而且比较少,这里学习一下如何根据新的内核版本制作对应的profile

『CTF』制作新内核版本的 Volatility Profile

0x01 linux内存镜像制作

在学习制作profile之前,我们先学一下如何进行linux内存镜像制作。

1.1 前期准备

Windows下的内存转储,我们通常可以使用DumpIt[https://www.downloadcrew.com/article/23854-dumpit]去完成,Linux下,我们需要准备的东西就比较多了。

1、Lmg: https://github.com/halpomeranz/lmg/ 脚本主程序
Linux Memory Grabber一个用于转储Linux内存并创建volatility(TM)配置文件的脚本。

2、avml:https://github.com/microsoft/avml
Linux的便携式内存采集工具,直接下载这两个二进制程序。

『CTF』制作新内核版本的 Volatility Profile

3、LiME: https://github.com/504ensicsLabs/LiME下载来的所有文件必须处于同一文件夹。

1.2 安装过程

首先修改avml二进制文件名。

# 改名mv avml avml-$(uname -m)mv avml-convert avml-convert-$(uname -m)# 添加执行权限chmod +x avml-convert-x86_64 avml-x86_64

新建一个文件夹linux_memory,将lmg/lmgavml的两个二进制程序和LiME的源代码放进去。

『CTF』制作新内核版本的 Volatility Profile

进入到LiME/src目录。

cd LiME/srcpatch < ../../../lmg/lime-Makefile.patch# ubuntu下自带,Centos7下patch 命令使用yum -y install patch安装即可

『CTF』制作新内核版本的 Volatility Profile

到这里即安装完成,可以使用二进制文件lmg来转储Linux系统内存,该项目地址中还可以配置volatility进行联动。

1.3 内存镜像转储

sudo ./lmg -y
『CTF』制作新内核版本的 Volatility Profile

在当前目录下的capture文件夹生成一个带有运行时间的文件夹。

其中,.lime为后缀的文件为系统内存转储文件,可用于导入volatility进行内存分析。

0x02 profile 制作

2.1 前期准备

首先要安装dwarfdump(调试文件导出工具)&GCC/Make&KernelHeaders(待分析系统的内核头文件)

sudo apt install dwarfdump build-essential

KernelHeaders可以根据uname -r得到内核版本。

linux-header-`uname -r`

2.2 制作新内核版本的profile

首先,我们针对内存镜像进行分析,一般来讲有两种方式:

1、针对已知版本内存镜像,我们用volatilityimageinfo插件进行识别
2、针对未知版本的内存镜像,我们采用strings中内存镜像中搜索关键词

我们先用imageinfo分析了镜像,很久没出结果,我们就知道是未知版本的内存镜像,我们采用strings搜索关键词Linux version

strings 1.lime | grep -i 'Linux version' | uniq

『CTF』制作新内核版本的 Volatility Profile

我们可以发现,是64位的内核版本为4.15.0-210-genericubuntu18.04版本的操作系统。

翻阅官方的profile社区,发现ubuntu18.04有两个profile,一个内核版本是4.18.0-25,另一个查看后得知是4.15.0-42,都与目标镜像不符,所以需要重新制作。

『CTF』制作新内核版本的 Volatility Profile

要制作对应版本的profile,需要两样东西:

1、vtypesvtypes是内核数据结构,为创建该数据结构,我们需要检查我们的源码并针对我们要分析的系统内核编译module.c文件,这将会为我们生成一个名为module.dwarf文件,该文件包含了我们所需的内核调试信息。2、符号表一般我们可以在/boot目录下找到该System.map文件。该文件包含系统的符号信息。

如果我们恰好有对应内核版本的操作系统版本,那就不用进行下面这步,但巧合一般不会那么多,这时候我们就需要安装对应的内核,下面以ubuntu为例。

可以选择一个对应的操作系统版本docker或者直接装一个虚拟机,我拉了一个ubuntu18.04docker,默认内核版本为5.10.124

『CTF』制作新内核版本的 Volatility Profile

然后执行下面的命令安装我们需要的内核版本。

apt install -y linux-headers-4.15.0-210-generic linux-image-4.15.0-210-generic dwarfdump build-essential vim zip gcc g++ git

安装完对应版本的内核后,会在/boot目录下出现对应的文件,System.map-4.15.0-210-generic就是我们所需的符号表。

『CTF』制作新内核版本的 Volatility Profile

然后将volatility工具下载到本地,使用volatility带的工具编译需要的vtypes

git clone https://github.com/volatilityfoundation/volatility.git# 随后切换目录至volatilityatility/tools/linux/下cd volatility/tools/linux/make

此时make可能会出错,因为此时make使用的是uname -r读取我们本身的内核版本符号表,但我们boot下没有相关文件,所以报错了。

『CTF』制作新内核版本的 Volatility Profile

如果boot下有相关文件的话,会编译成功,但是我们还是不能用,所以需要对Makefile进行一些修改,规定内核版本。

sed -i 's/$(shell uname -r)/4.15.0-210-generic/g' Makefileecho 'MODULE_LICENSE("GPL");' >> module.c

然后再次进行make,就成功了,并且在当前文件夹下出现了我们需要的module.dwarf文件。

『CTF』制作新内核版本的 Volatility Profile

然后将module.dwarf文件和System.map-4.15.0-210-generic符号表一起进行打包。

zip Ubuntu1804-4.15.0-210.zip /volatility/tools/linux/module.dwarf /boot/System.map-4.15.0-210-generic

将压缩包放至volatility/volatility/plugins/overlays/linux下,然后使用命令查看是否识别到该profile

volatility --info | grep Linux
『CTF』制作新内核版本的 Volatility Profile

发现已经成功识别,那么接下来就可以使用该profile配合插件进行内存取证了。

『CTF』制作新内核版本的 Volatility Profile

『CTF』制作新内核版本的 Volatility Profile

0x03 总结

这只是volatility2版本添加profile的办法,目前可以针对市面上大部分常见的发行版Linux去进行制作,针对一些特别新版本的内核还是会有一些问题,等待后续大佬们的开发和解决吧。

『CTF』制作新内核版本的 Volatility Profile

[参考资料]
https://www.freebuf.com/articles/network/265797.html
https://blog.csdn.net/weixin_46081055/article/details/121897319

免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

原文始发于微信公众号(宸极实验室):『CTF』制作新内核版本的 Volatility Profile

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月19日18:54:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『CTF』制作新内核版本的 Volatility Profilehttps://cn-sec.com/archives/1747349.html

发表评论

匿名网友 填写信息