利用Volatility查找系统中的恶意DLL
昨天看到@白河·愁 发了《Linux下内存取证工具Volatility的使用》,今天恰好看到一篇Volatility利用的文章,文章不长,就翻译了过来。
原文地址:http://carnal0wnage.attackresearch.com/2014/02/finding-malicious-dlls-with-volatility.html
译文:
Colin和我最近正致力于研究一个内存镜像,需要找到由svchost.exe加载的所有DLL,选择使用大家熟知的内存分析工具 — Volatility。Volatility无法通过进程名查看加载的dll,而是通过指定进程的PID来将所有已加载的dll列出。但是,如果系统中有多个同名的进程(如svchost.exe),我们可以用以类似图1所示的命令进行查找:
图1
不过这个方法在我们的使用过程中不怎么好用,因此决定研究一下Volatility的源码,对其做一些小的调整以使其适应我们的需求。经过研究,我们修改了能最终影响dlllist的模块taskmods.py。未修改之前,用-h选项查看dlllist插件的帮助信息,会列出其支持的所有选项,如offset、pid等,如图2所示:
图2
而我们修改过的taskmods.py模块为其添加了一个新的选项,即通过进程名来添加一个进程或进程列表,如图3:
图3
现在我们只需要简单地给出svchost.exe进程名,就可以得到由该进程加载的DLL文件列表。如果系统中运行着非标准svchost.exe进程,该命令同样会将其显示出来,命令如下:
vol.py -f 7re-912d4ad7.vmem --profileWin7SP1x64 dlllist -n svchost.exe
得到如下输出:
图4
相信还有其它的方法可以达到相同的目的,但本文提到的这种方法在我们的研究过程中工作良好,因此将其共享出来,各位读者可以通过以下地址获取该模块:
https://github.com/AttackResearch/randmon/blob/master/volatility_plugins/taskmods.py
只需要在volatility 安装目录的插件目录$VOLATILITYHOME/volatility/plugins中用新的taskmods.py文件覆盖原来的文件,即可完成安装。
我们在Windows XP 与 Windows 7中测试了volatility2.2, 2.3, 2.3.1,均未发现问题,可以放心使用。