Linux内存取证制作Volatility的专属profile

Volatility内置了所有的windows的profile,让我们不论读取什么型号机器的内存都可以无碍。由于Linux发行版本太多,只内置了一部分profile所以为了对Linux的内存镜像进行分析,我们就得手动制作关于该镜像所使用的版本的profile。

首先是读取镜像文件,查看镜像所使用的系统版本信息。

本文就以2022年祥云杯内存镜像题目1.mem举例。

python3 vol.py -f 1.mem banner


版本信息为5.4.0-84-generic 系统为Ubuntu18.04

在网上找了很多篇教程,只有这个靠谱可行。

https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/forensics/symbolic-needs/solution

Volatility3配置profile

前置需要安装Volatility3,python版,前万不要下了集成板,那个会限制增设profile。

git clone https://github.com/volatilityfoundation/dwarf2json

cd dwarf2json

go build

(这里需要搭建好go语言的环境)


在~/.bashrc里配置好,source以后就可以用go来构造了。

这里一定要注意,配置好代理,因为墙的原因,不然下载有些东西会Connection Error。

然后在这个地址下载相应的版本

http://ddebs.ubuntu.com/pool/main/l/linux/


下载,也可以直接wget下载到虚拟机里。

我用kali2022.03安装失败了,咨询了朋友和微信公众号的文章,选择用docker,docker下载了一个ubuntu18.04的版本,在里面安装了这个ddeb文件。


安装命令为:

dpkg -i linux-image-unsigned-5.4.0-84-generic-dbgsym_5.4.0-84.94_amd64.ddeb

成功安装后,把/usr/lib/debug/boot/vmlinux-5.4.0-84-generic的文件复制到安装好dwarf2json的kali中进行

使用如下命令生成symbols table。

 ./dwarf2json linux --elf /usr/lib/debug/boot/vmlinux-5.4.0-84-generic > linux-image-5.4.0-84.94-generic.json

正常情况下,把这个json文件复制到volatility3/volatility3/symbols/linux/或者volatility3/volatility3/framework/symbols/linux/目录下,使用如下命令即可使用

python3 vol.py -f 1.mem linux.bash

其他命令可通过下方链接的开发手册查看使用

https://github.com/volatilityfoundation/volatility/wiki/Linux-Command-Reference

2022年祥云杯这道内存取证vol3解析存在部分问题,第一次做linux的profile历时三天终于完成了。

Volatility2配置profile

建议此处使用docker的Ubuntu18.04的容器来完成如下操作

apt install -y linux-headers-5.4.0-84-generic linux-image-5.4.0-84-generic dwarfdump build-essential vim zip

使用apt install安装会在/boot目录下生成System.map-5.4.0-84-generic文件。

下载volatility2至根目录

git clone https://github.com/volatilityfoundation/volatility.git


随后切换目录至volatility/tools/linux/下

cd volatility/tools/linux/

make

这里make可能会报错

sed -i 's/$(shell uname -r)/5.4.0-84-generic/g' Makefile

echo 'MODULE_LICENSE("GPL");' >> module.c

再次make一下

make

随后把上述两个文件打包

zip Ubuntu1804.zip volatility/tools/linux/module.dwarf /boot/System.map-5.4.0-84-generic


把压缩包放至volatility/volatility/plugins/overlays/linux下

通过这个命令查看profile信息

python2 vol.py --info | grep Linux


随后使用这个命令即可查看linux的bash记录

python2 vol.py -f 1.mem --profile=LinuxUbuntu1804x64 linux_bash


题目就不做了,本篇记录一下历史三天创建linux的profile。

参考文章:

https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/forensics/symbolic-needs/solution

https://mp.weixin.qq.com/s/dbHGBzjcMoF8aPqIkCN_Fg

https://github.com/volatilityfoundation/volatility/wiki/Linux#creating-vtypes

https://github.com/volatilityfoundation/volatility/wiki/Linux#making-the-profile

https://github.com/volatilityfoundation/volatility/wiki/Linux-Command-Reference

https://blog.csdn.net/weixin_39805195/article/details/116787651

特别感谢Hanibal、onl、k333师傅的指导解答。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容