内存取证之volatility

0x01

刷Freebuf的时候看到精灵大佬写的取证分析的赛题分析,以前碰到的这类题目也少,正好借这个机会接触一下这类题目,做个记录。

0x02

工具介绍

volatility是一款开源的内存取证分析工具,由python编写,支持各种操作系统。可以通过插件来拓展功能。kali下集成了该工具,命令行输入volatility使用该工具。

工具安装

安装的话,我们可以直接用github上提供的源代码,因为volatility是基于python的,所以要先安装python,linux下默认都集成了python,就说一说在windows下怎么安装python并设置环境变量。

首先去python官网 http://www.python.org/download/ 下载python安装包,然后安装,基本上一路next就搞定了,装完以后要记住python的安装目录,待会设置环境变量的时候要用到这个目录,找到控制面板->系统->高级系统设置->环境变量,在path系统变量之后添加;(英文分号) + 安装目录即可。

验证的方法也很简单,命令行下输入python,结果如下图,说明设置成功。

装完python,进到volatilty所在目录,执行python setup.py install 用类似于python模块的形式进行安装,装完以后终端调用vol.py 即可。

工具使用方法

volatility -h 查看一下帮助信息。

valatility –info 查看插件 profile 地址空间等详细信息。

关于这个profile,不同的操作系统、不同的版本对应不同的profile,我对profile的理解是一种系统的配置,提供一种环境,分析的时候要加上profile这个参数。volatility对win下的profile支持较好,,但是linux下不是很多,需要自己制作。。。

这里也说一下制作linux的profile的方法。

1
2
$ sudo zip volatility/volatility/plugins/overlays/linux/Ubuntu1204.zip volatility/tools/linux/module.dwarf /boot/System.map-3.2.0-23-generic

实际上就是把system.map和module.dwarf打包放到kali下位置放在volatility/plugins/overlays/linux/volatility/plugins/overlays/linux下,在kali下对应的路径是/usr/share/volatility/volatility/plugins/overlays/,github也有现成的linux下的profile。传送门

下面就拿几个例子演示一下volatility简单的用法。

实战分析

  • 实例一

拿jarvisoj的一个取证题目来说,给的是一个压缩文件,解压出来是一个vmem文件和一个不知道是什么的文件。。。

先来看后缀为.vmem的文件,

volatility先判断一下内存类型。

可以得到profile类型 WinXPSP2x86 -f 指定文件

查看一下进程信息

发现一个ctfmon.exe。。。。百度一看是个输入法的程序。。。 我大概是想flag想疯了。。再往下翻有个

truecrypt.exe,是一个加密的工具,可以用 Elcomsoft Forensic Disk Decryptor 搞定,那么 dump这个进程

-p:进程的pid是多少。

打开 Elcomsoft Forensic Disk Decryptor,因为是truecrypt加密的,所以选择TrueCrypt(container)这个选项,

得到key 另存为。 然后利用这个key加载那个不知道格式的文件,

挂载文件 得到flag。

  • 实例二

SECCON 2016 的一道取证题目,给了一个压缩包,给了两个提示,

Hint1: http://www.volatilityfoundation.org/

Hint2: Check the hosts file

同样的道理,先查看一下内存类型,得到profile的类型

根据hint2, 找一找host文件是否存在,调用filescan插件,文件太多,grep过滤一下,得到我们需要的就ok。

dump的文件太多了… 只dumphost文件

cat一下,可以看到一个域名crattack.tistory.com,ping一下,发现域名对应的ip与host对应的ip不一致,访问一下ip,一片日语。。。所以用iehistory看一下有没有关于这个域名的访问记录。。。

然后访问得到flag,但是因为时间有点长,已经404了 =。=!

0x03

上面几个例子只是volatility的简单应用,除此之外,恶意进程的取证分析等也是volatility的应用。通过一点线索,不断地挖掘出更多地东西,这也是内存取证的魅力吧~~

文章有表达不当之处,还请各位老哥指出。 >3<

本文参考文章:

http://www.freebuf.com/articles/rookie/145262.html

http://www.freebuf.com/articles/system/26763.html

http://www.freebuf.com/sectool/124690.html

http://www.jianshu.com/p/5f13ee20f5b0

http://bobao.360.cn/learning/detail/3821.html

https://github.com/ctfs/write-ups-2016/tree/master/seccon-ctf-quals-2016/forensic/memory-analysis-100

本文标题:内存取证之volatility

文章作者:tkcharlotte

发布时间:2017年08月27日 - 09:08

最后更新:2018年02月07日 - 18:02

原始链接:boombao.net/2017/08/27/volatility取证/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------