内存取证 volatility的使用
volatility
简介:
volatility(挖楼推了推) 是一个开源的框架,能够对导出的内存镜像进行分析,能够通过获取内核的数据结构,使用插件获取内存的详细情况和运行状态,同时可以直接dump系统文件,屏幕截图,查看进程。
官网下载地址:https://www.volatilityfoundation.org/26
这个软件的安装真的让我很烦,刚开始在github
上面下载的源文件是需要python2
环境运行,需要安装pycrypto distorm3
模块
然后再我python2 -m pip install distorm3
和python2 -m pip install distorm3
均报错,在windows和Linux中均报错,
最后在官网竟然有windows
和linux
系统的可执行文件,直接下载就可以执行???????,好的扯淡结束,总之很烦,我很傻
volatility可以直接分析VMware
的暂停文件,后缀名为vmem
imageinfo 获取内存镜像的操作系统版本信息
volatility -f 文件名 imageinfo
,这里我得文件名为easy_dump.img
会获取推荐我们使用的镜像,一般第一个最为准确,可多次测试来确定最为准确的,这里为Win7SP1x64
pslist 列出内存中的进程
可以列出内存中运行的进程的pid,ppid等信息
volatility -f easy_dump.img --profile=Win7SP1x64 pslist
类似的也有dlllist,可以看到进程的位置
netscan 查看网络连接状态
可以通过这个获取本机的IP地址,类似于netstat -an
volatility -f easy_dump.img --profile=Win7SP1x64 netscan
hivelist 列出缓存在内存中的注册表
volatility -f easy_dump.img --profile=Win7SP1x64 hivelist
filescan 扫描内存中的文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan
,会查找所有文件
由于列出文件较多,可以使用grep
使用
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep "txt\|jpg\|png"
如果是在windows
中运行,配合findstr
使用
在CTF中,我们常搜索flag
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep flag
dumpfiles 导出内存中的文件
在我们filescan
后,会给出文件在内存中的代号,指定代号就可以将文件导出
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./ -u
-Q
:指定文件在内存中的地址。-D
:指定文件导出的地址。-u
:指定原文件名导出
这虽然指定原文件名导出,但是并没有原文件名导出,不知道为什么
memdump 导出指定的进程
在我们pslist
会后,会给出进程的PID
,只需要指定PID
就可以将进程导出
例如这里notepad.exe
的进程为2616
/volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
导出的文件名进程的PID
,后缀名为dmp
可以使用strings -e l 2616.dmp | grep flag
,筛选其中的flag
-e
为选择字符的大小,l
为32bit
为一个字符
cmdscan 历史命令
扫描命令历史获取历史命令
类似的也有cmdlist
,相对于cmdscan像是的较多一点
screenshot 获取截图
从内存中获取截图,这截图怎么说呢,黑白的,貌似没什么用,但万一flag
就藏在其中呢
pringkey列出SAM表用户,大概就是查看用户名
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
其实使用hashdump
就可以获取用户名,这个也可以试一试
printkey获取主机名
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
iehistory 获取系统浏览器历史
可以看到用户通过系统浏览器
在某个时间线干了什么
timneliner 列举时间线
可以获取在某个时间线做了写什么
verinfo 列出PE,程序版本信息
editbox 查看内存中记事本的内容
自动找到记事本记得进程号,进行内容提取