Volatility是一款非常强大的内存取证工具,可用于windows,linux,mac osx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。
1.1下载安装
官网下载:https://www.volatilityfoundation.org/releases
https://github.com/volatilityfoundation/volatility
https://github.com/volatilityfoundation/volatility3
这里就使用python2版本的volatility演示,使用如下命令安装。
git clone https://github.com/volatilityfoundation/volatility.git
|
1.2 命令格式
vol.py -f [image] --profile=[profile] [plugin]
|
在分析之前,首先需要知道当前的镜像信息,通过imageinfo命令分析是哪个系统。
vol.py -f xx.vmem imageinfo
|
如下图所示,Suggested Profile(s),猜测出多个系统信息,可能性越大的排在前面,一般取第一个,知道镜像后,就可以在--profile=中带上对应的操作系统,继续后面的分析。
1.3 常用插件
查找⽤户名密码信息。当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容。
vol.py -f Target.mem --profile=Win7SP0x64 hashdum
|
vol.py -f Target.mem --profile=Win7SP0x64 lsadump
|
vol.py -f Target.mem --profile=Win7SP0x64 pslist
|
可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
vol.py -f Target.mem --profile=Win7SP0x64 psscan
|
以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
vol.py -f Target.mem --profile=Win7SP0x64 pstree
|
提取进程, -p是进程号 -D 存储的文件夹 提取出指定进程
vol.py -f Target.mem --profile=Win7SP0x64 memdump -p xxx --dump-dir=./
|
vol.py -f Target.mem --profile=Win7SP0x64 svcscan
|
vol.py -f Target.mem --profile=Win7SP0x64 iehistory
|
vol.py -f Target.mem --profile=Win7SP0x64 netscan
|
vol.py -f Target.mem --profile=Win7SP0x64 cmdscan
|
vol.py -f Target.mem --profile=Win7SP0x64 filescan
|
vol.py -f Target.mem --profile=Win7SP0x64 dumpfiles -Q 0xxxxxxxx -D ./
|
vol.py -f Target.mem --profile=Win7SP0x64 notepad
|
vol.py -f Target.mem --profile=Win7SP0x64 screenshot --dump-dir=./
|
vol.py -f Target.mem --profile=Win7SP0x64 hivelist
|
vol.py -f Target.mem --profile=Win7SP0x64 hivedump -o 0xfffff8a001032410
|
vol.py -f Target.mem --profile=Win7SP0x64 printkey -K "xxxxxxx"
|
vol.py -f Target.mem --profile=Win7SP0x64 userassist
|
链接: https://pan.baidu.com/s/1aA-hqm23rgPudFW-t_dCAA 提取码: dm6
2.1 2021陇剑杯-内存分析1
使用 imageinfo 插件获取内存文件基本信息,分析出是哪个操作系统。
把be5593366cb1019400210101581e5d0d拿去hash解密失败。
2.2 2018护网杯-easy_dump
vol.py -f easy_dump.img --profile=Win7SP1x64 pslist
|
vol.py -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
|
提取出来的直接用strings是无法查看,需要添加-e参数
strings -e l 2626.dmp | grep flag
|
vol.py -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg'
|
vol.py -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./
|
将file.None.0xfffffa8008355410.vacb,修改为jpg后缀,并foremost分离图片,得到一个压缩包,解压得message.img文件。
在linux系统中使用mount 命令挂载此文件。查看hint.txt文件,内容是两列数字,很像x,y坐标。
└─$ sudo mount message.img ./test
drwxr-xr-x 4 root root 1024 Sep 28 2018 .
drwxr-xr-x 5 parallels parallels 4096 May 30 14:20 ..
-rw-r--r-- 1 root root 257163 Sep 28 2018 hint.txt
drwx------ 2 root root 12288 Sep 28 2018 lost+found
drwx------ 4 root root 1024 Sep 28 2018 .Trash-0
|
使用gnuplot画图,发现二维码,扫描后得到维吉尼亚密码的key。
Here is the vigenere key: aeolus, but i deleted the encrypted message
进入.Trash-0/files/,发现.swp文件,这个文件是因为使用vim编辑文件时意外中断产生的,可以vim -r恢复,得到文件内容yise!dmsx_tthv_arr_didvi。
原文始发于微信公众号(SAINTSEC):基于volatility内存取证技术研究
评论