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师傅的指导解答。