点击蓝字
关注我们
Volatility是一个开源的Windows,Linux,Mac,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。本次讨论主要基于Linux下Volatility的分析。
Volatility有丰富的插件命令,能够加载相应的配置文件profile 进行加载插件。需要特别说明的是,windows系统的profiles相当齐全,但linux下的profile就得自己制作了。
1、kali便捷版
2017版kali自带有volatility,在“应用程序”-“数字取证”中。只需装载kali,不用任何配置,就可以享受volatility。
下载地址推荐:
https://pan.baidu.com/s/1mbzHoRBs44etfQtXXAXx0Q 提取码:jj70

2、自主安装版
跟LiME一样,volatility作为开源工具,亦可以直接下载至Linux中解压使用。但在Linux中自主配置volatility时,需要考虑当前系统是否存在一些辅助包。
volatility安装包下载地址:
https://github.com/volatilityfoundation/volatility/archive/master.zip
安装步骤 :将volatility安装包下载及解压至Linux下,终端进入volatility解压路径执行命令:
Python setup.py install
运行volatility:vol.py --info
或者Python ./vol.py --info
在运行过程中若出现如下图错误,可能因系统缺少pycrypto,distorm这两个辅助包而无法加载相应插件导致的。

解决方法:
下载pycrypto:
https://pypi.org/project/pycrypto/#files
下载distorm:
https://pypi.org/project/distorm3/#files
安装辅助包:分别进入pycrypto/distorm解压文件路径执行命令:Python setup.py install
在安装辅助包时亦可能出现缺失Python的头文件和静态库包导致安装失败问题,这时便需要在系统上安装python-dev开发包,安装命令:apt-get install python-dev。由于系统环境不同,辅助包的安装也有可能出现许多不一样的错误且复杂无法解决,可以暂且忽视“缺少辅助包错误”亦直接使用volatility常用命令。
在前面说过,Linux下的profile是需要自己制作的,其实,对应Linux镜像的Profile制作原理很简单,把内核system.map文件和 module.dwarf文件打包成的一个zip文件即可,具体如下:
1、找system.map文件:
在/boot目录下找到system.map文件,一般格式为System.map-x.xx.x-x-amd64,如下图方框所示:

2、生成module.dwarf文件:
.进入“/usr/src/kernels”查看,确保安装必要的linux头文件

.进入“/lib/modules”路径下,创建build和source的软连接:
ln -s /usr/src/linux-headers-x.xx.x-x-amd64 build
ln -s /usr/src/linux-headers-x.xx.x-x-common source

.将/volatility/tools/linux目录设置为777权限

.在“/volatility/tools/linux”目录,执行make命令,即可得到module.dwarf

注意
补充
在make命令之后,若出现“dwarfdump:未找到命令”错误,如下图:

则说明该环境缺少dwarfdump工具,需安装,否则无法写入module.dwarf,安装方法如下:
1
安装:yum install elfutils-devel
2
获取dwarfdump的源文件:
wget http://www.prevanders.net/libdwarf-20140413.tar.gz
3
解压压缩包:tar -zxvf libdwarf-20140413.tar.gz
4
执行命令:#./configure
# Make
5
执行以上两条命令后,进入dwarfdump文件夹下执行命令:Make install
自此dwarfdump就安装好了。
3、压缩成ZIP文件:
将上面得到的module.dwarf和system.map放在一起打包为ZIP文件,就是我们需要的profile文件。再将制作好的ZIP文件放置volatility/plugins/overlays/linux/目录下,通过volatility --info查看,就可以看到我们配置好profile文件了(volatility会以它识别方式重新命名配置文件)。


使用volatility工具对Centos内存镜像分析:
volatility版本:volatility2.6.1
Centos版本:Centos 7
内存镜像大小及类型:使用Lime工具生成,格式为.Lime,大小为1G。
1、查看进程:
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_pslist

2、查看网络连接状态
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_netstat

3、从bash进程内存中恢复bash历史记录:
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_bash

4、恢复一个进程的动态环境变量:
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_bash_env

5、打印ARP表:
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_arp

6、列出每个进程的当前工作目录:
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_getcwd

7、收集活动接口:
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_ifconfig

8、恢复进程的动态环境变量:
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_dynamic_env

以上就是部分常用命令列举,剩下部分可以参照以下附表。




长按二维码关注我
