最新消息:

调查取证之Volatility框架的使用

网络取证 Eternal 22628浏览 0评论

volatility 框架是一款用于易失性内存取证的重量级框架。在该框架下我们可以完成许多取证的操作,获取我们想取得的信息。其支持的操作系统也非常广泛,同时支持 windows , linux, Mac OSX,甚至也支持 Android 手机使用ARM处理器的取证。因此,它也是所有网络取证爱好者的必学框架。

在之前的文章我们已经简单介绍了内存镜像工具 DumpIt 的基本使用。传送门http://www.secist.com/archives/2076.html

现在我将使用 DumpIt 工具,dump 一个纯净版 WIN7 的内存镜像,并使用 volatility 对其进行取证分析。

首先,我们使用 imageinfo 插件来查看目标 WIN7 的操作系统信息:

volatility -f WIN7.raw imageinfo

可以看到,内存文件所属的操作系统它给出了两个建议性 profile。这里我用的 SP1 版本,同时还提取出了? CPU 等细节信息。

20161114113523

通过以上命令获取到了所属操作系统类型,现在我们就可以指定 profile 内存文件格式,通过 pslist 来查看其进程情况:

volatility -f WIN7.raw –profile=Win7SP1x86 pslist

除了可以使用 pslist 查看进程外,还可以使用 pstree 效果相同。

20161114114418

接着我们通过 hivelist 来列出缓存在内存中的注册表有哪些(蜂巢):

volatility -f WIN7.raw –profile=Win7SP1x86 hivelist

20161114114844

如果你想打印出注册表中的数据,这里可以使用 hivedump 来实现:

volatility -f WIN7.raw –profile=Win7SP1x86 hivedump -o 注册表的 virtual 地址

20161114120048

如果你想知道 SAM 表中都有哪些用户,我们同样可以获取到:

volatility -f WIN7.raw –profile=Win7SP1x86 printkey -K “SAM\Domains\Account\Users\Names”

可以看到有三个账户。

20161114121223

如果你想知道最后登录系统的账户是谁,可以使用以下命令来获取:

volatility -f WIN7.raw –profile=Win7SP1x86 printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”

从结果中可以得知 IEUser 是最后登陆过系统的账户 。这里需要说明的是, last updated 的时间并不是最后用户登录时间,而是 账户信息 最后被修改过的时间。

20161114121739

userassist这个插件比较有意思,他可以提取出内存中记录的 当时正在运行的程序有哪些,运行过多少次,最后一次运行的时间等信息。

volatility -f WIN7.raw –profile=Win7SP1x86 userassist

20161114122054

memdump 插件可以将内存中的某个进程数据以 dmp 的格式保存出来,便于我们后续的取证调查:

volatility -f WIN7.raw –profile=Win7SP1x86 memdump -p 1608 -D win7/

-p:指定的进程 ID 。这里我指定的是 DumpIt 的进程 ID。

-D: dump 出的文件保存在哪个目录下。

20161114122930

我们可以使用二进制编辑器 hexeditor 将以上保存的 dmp 文件打开,并进行调查取证的工作。

hexeditor 1608.dmp

如果你觉得下面的格式看的比较费力,那么你还可以使用 strings 这个工具将它的字符串打印出来。

例:strings 1608.dmp > 1608.txt

strings 1608.dmp > 1608.txt | grep shellcode

20161114123036

一般攻击者控制了我们的系统都会使用 CMD 命令来进行操作,因此我们可以使用 cmdscan 这款插件,将内存中保留的 cmd 命令使用情况,提取出来:

volatility -f WIN7.raw –profile=Win7SP1x86 cmdscan

可以看到当时我用 CMD 打开过 DumpIt 这款工具。

20161114123835

我们还可以获取到当时的网络连接情况:

volatility -f WIN7.raw –profile=Win7SP1x86 netscan

20161114124233

获取 IE 浏览器的使用情况:

volatility -f WIN7.raw –profile=Win7SP1x86 iehistory

同时,它还为我们显示出了当时使用的用户是谁。

20161114124609

如果你想获取内存中的系统密码,我们可以使用 hashdump 将它提取出来:

volatility -f WIN7.raw –profile=Win7SP1x86 hashdump -y (注册表 system 的 virtual 地址 )-s (SAM 的 virtual 地址)

可以看到 hash 值都被 dump 出来了。

20161114125301

如果你想最大程度上将内存中的信息提取出来,那么你可以使用 timeliner 这个插件。它会从多个位置来收集系统的活动信息:

volatility -f WIN7.raw –profile=Win7SP1x86 timeliner

20161114131638

转载请注明:即刻安全 » 调查取证之Volatility框架的使用

您必须 登录 才能发表评论!

网友最新评论 (3)



合作伙伴