Volatility取证分析工具使用

1 基本使用与详情

首先查看它都有什么命令:

它有丰富的插件命令,可以完成大量的工作。

 

比如以下常用插件命令:
Pslist
枚举系统中的进程。
Pstree
以树的形式枚举系统中的进程。
Modscan
扫描_ldr_data_table_entry对象的物理内存。
Kpcrscan
查找内存中用于定义内核处理器控制区域(KPCR)的_KPCR结构体信息。
Dlllist
显示一个进程装载的动态链接库的信息。
Filescan
显示系统上的打开的文件。
Handles
显示在一个进程中打开的处理。
Netscan
发现TCP / UDP端点和监听器。
...

我们使用这条命令:vol.py--info,会列出以下几大部分的内容:

    Profiles
    Scanner Checks
    Address Spaces
    Plugins(不带前缀的是windows的插件,带linux前缀的是linux的插件,带mac前缀的是mac的插件)

我们查看具体的linux插件:

经常使用的命令

(1)查看镜像需要的profile
vol.py -f <镜像文件> imageinfo
(2)查看进程信息
vol.py -f <镜像文件> --profile=[profile文件] pslist
(3)查看具体恶意进程
vol.py -f <镜像文件> --profile=[profile文件] pstree  | egrep '(a.exe|b.exe)'  以树的形式列出
(4) 检查恶意链接 
检查链接插件:vol.py -f <镜像文件> --profile=[profile文件] connections
检查端口插件:vol.py -f <镜像文件> --profile=[profile文件] sockets
(5)检测DLL
vol.py -f <镜像文件> --profile=[profile文件] dlllist -p[pid]
vol.py -f <镜像文件> --profile=[profile文件] ldrmodules  -p[pid] -v 显示包括隐藏dll的具体信息
(6)找出注入的可执行代码或者DLL 
vol.py -f <镜像文件> --profile=[profile文件] malfind -p[pid]
(7)导出程序
vol.py -f <镜像文件> --profile=[profile文件] prodump -p [pid1,pid2,..pidn] -D [目录]
(8)查看恶意的钩子
vol.py -f <镜像文件> --profile=[profile文件] apihooks -p[pid]
(9)追踪
vol.py -f <镜像文件> --profile=[profile文件] volshell -p[pid]
(10)检查恶意驱动程序
vol.py -f <镜像文件> --profile=[profile文件] modules
(11)提取驱动程序
vol.py -f <镜像文件> --profile=[profile文件] moddump -D [目录] --base [base地址]
(12)检查驱动内核回调
vol.py -f <镜像文件> --profile=[profile文件] callbacks
(13)检查恶意注册表项
vol.py -f <镜像文件> --profile=[profile文件] printkey
(14)查看服务
vol.py -f <镜像文件> --profile=[profile文件] svcscan

 2 详细使用

我们结合具体的案例来学习该工具的使用。震网(Stuxnet)病毒于2010年6月首次被检测出来,是第一个专门定向攻击真实世界中基础(能源)设施的“蠕虫”病毒,比如核电站,水坝,国家电网。我们使用带有该病毒的镜像。

注意[+]:以下实验内容来自合天实验室的Volatility:AnalyzingStuxnet01与Volatility:AnalyzingStuxnet02

网址:www.hetianlab.com/expc.do?ce=1f93108a-bc52-4c07-9ce9-4c6895157ca3

(1)查看镜像需要的profile

vol.py -f <镜像文件> imageinfo

(2)查看进程信息

vol.py -f <镜像文件> --profile=[profile文件] pslist
vol.py -f <镜像文件> --profile=[profile文件] pstree    以树的形式列出

 

 (3)查看具体恶意进程

Lsass进程:

      lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。一个正常的windows xp系统在启动的时候,只会通过winlogon.exe创建一个lsass进程。

      Stuxnet会将自身注入到services.exe,然后创建两个新的lsass.exe,然后释放出mrxnet.sys(驱动)和Mrxcls.sys(驱动)等恶意文件。

(4) 检查恶意链接

检查链接插件:vol.py -f <镜像文件> --profile=[profile文件] connections
检查端口插件:vol.py -f <镜像文件> --profile=[profile文件] sockets

 

 

(5)检测DLL

vol.py -f <镜像文件> --profile=[profile文件] dlllist -p[pid]
vol.py -f <镜像文件> --profile=[profile文件] ldrmodules  -p[pid] -v 显示包括隐藏dll的具体信息

(6)找出注入的可执行代码或者DLL

vol.py -f <镜像文件> --profile=[profile文件] malfind -p[pid]

发现了两个可疑的区域,在0x80000地址有两个进程,而且它们有PAGE_EXECUTE_READWRITE权限(正常的services.exe, lsass.exe不应该具有写权限)和MZ头,意味着PE可能存储在这里。

(7)导出程序

 利用内存转储技术可以将内存中运行的程序导出来

vol.py -f <镜像文件> --profile=[profile文件] prodump -p [pid1,pid2,..pidn] -D [目录]

(8)查看恶意的钩子

首先使用linux下的strings命令查看进程调用的系统函数

vol.py -f <镜像文件> --profile=[profile文件] apihooks -p[pid]

(9)追踪

使用交互式的volshell 命令来查看hook地址前后的内存地址,以此来跟踪hook api流程。可以发现pid = 1928  ZwClose 开始的地址是 0x7C90cfd0,就从这里开:

vol.py -f <镜像文件> --profile=[profile文件] volshell -p[pid]

蓝色框中是正常的内存地址,而红色框是不正常的,可以看到两个不同的值被放到了EDX寄存器。正常的api调用的是0x7ffe0300,数值类型是dword(参照:The system call dispatcher on x86)。而Hooked api调用的是0x7c900050,接着跟踪 0x7c900050

     

      可以看到在0x7c90005d去调用0x7c900066,但是根据反汇编,0x7c900066是在指令0x7c900062开始执行的中间,这可能是使用了一个抗反汇编的技巧。我们试着反汇编0x7c900066

     

      果不其然,所以在调用执行0x7c90005d时,它的返回地址(0x7c900062)被压入堆栈。然后在0x7c900066 执行POP,从堆栈中删除该值,并将其放置在EDX。在0x7c900067,EDX取消引用和调用。所以被取消引用的指针是0x7c900062

     

      该地址上的四个字节:f2009400. 鉴于字节顺序,这其实是0x009400F2

     

     

      通过在这个位置分析代码,就可以了解钩子的确切目的。病毒修改ntdll.dll文件内存映像中PE头的保护属性,然后将偏移0x40处的无用数据改写为跳转代码,用以实现hook。然后使用ZwCreateSection在内存空间中创建一个新的PE节,并将要加载的DLL模块拷贝到其中。

      退出交互模式:ctrl+d

     

 (10)检查恶意驱动程序

vol.py -f <镜像文件> --profile=[profile文件] modules

使用 moddump提取驱动程序

计算sha256hash值 ,然后去www.virustotal.com搜索可查看报告 

使用modscan来查找驱动  


(11)检查驱动内核回调

(12)检查恶意注册表项

      使用printkey插件,我们知道Services注册表项是这样的:ControlSet001\Services\SERVICENAME所以通过关键字来查找,使用如下命令:printkey -K 'ControlSet001\Services\MrxNet'

(13)使用 svcscan 来查看服务

 

 

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值