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: 1. 首先在Kali Linux中打开终端。 2. 输入以下命令以更新Kali Linux:sudo apt-get update 3. 安装Volatility工具:sudo apt-get install volatility 4. 等待安装完成后,输入以下命令以验证安装:volatility -h 5. 如果成功安装,将显示Volatility工具的帮助菜单。 6. 现在您可以使用Volatility工具分析内存映像文件。 ### 回答2: Kali是一款流行的安全测试和渗透测试工具,它为安全研究人员和黑客提供了许多有用的工具和功能。Volatility是一款专门用于分析内存镜像的工具,它可以帮助用户发现潜在的恶意代码、病毒和其他安全漏洞。 Kali默认安装了Volatility工具,但在某些情况下,用户可能需要手动安装它。以下是在Kali中手动安装Volatility工具的步骤: 第一步:更新Kali系统 在安装任何新软件之前,最好先更新Kali系统。可以使用以下命令更新: sudo apt-get update sudo apt-get upgrade 第二步:安装Python Volatility需要使用Python 2.6或更高版本,因此需要先安装Python。可以使用以下命令安装: sudo apt-get install python2.7 第三步:安装依赖项 在安装Volatility之前,需要安装一些依赖项。可以使用以下命令安装: sudo apt-get install pcregrep libsmdev-utils libsmdev1 libsmraw-utils libsmraw1 python-crypto python-distorm3 python-pefile python-pxdlib python-pytsk3 python-boto python-dateutil python-defusedxml python-dfdatetime python-dfvfs python-dfwinreg python-oauth python-openpyxl python-requests python-xlrd sleuthkit zlib1g-dev 第四步:下载Volatility 可以从Volatility的官方网站https://www.volatilityfoundation.org/releases下载最新的稳定版本。下载后将文件解压缩到Kali的文件系统中。 第五步:运行Volatility 现在,可以通过运行以下命令来启动Volatilitypython vol.py 这将打开一个交互式命令行界面,用户可以使用其中的各种命令来分析内存镜像。 总结: 安装Volatility需要在Kali上安装Python和一些依赖项。然后,用户需要从Volatility的官方网站上下载最新版本。最后,用户可以使用python vol.py命令来启动Volatility,并使用其内置的命令来进行内存镜像分析。 ### 回答3: Kali Linux是基于Debian的Linux发行版,它提供了各种安全测试和渗透测试工具。其中,Volatility是一种开源的内存取证工具,它可以帮助分析内存镜像中的恶意代码和缓解攻击活动。本文将讲述如何在Kali Linux中安装Volatility工具。 第一步是从官方网站上下载Volatility工具。我们可以通过以下命令在终端中打开官方网站: ``` firefox https://www.volatilityfoundation.org/releases ``` 在浏览器中,我们可以找到可下载的最新版本的工具。我们需要下载 .zip 文件。 第二步是解压缩下载的文件,可以通过以下命令在终端中进行: ``` unzip volatility-2.6.1.zip ``` 第三步是安装Python和PIP。Volatility是基于Python编写的,因此我们需要先安装Python才能使用它。我们可以使用以下命令检查Python是否已经安装: ``` python --version ``` 如果Python未安装,我们可以使用以下命令安装Python: ``` apt install python3 apt install python3-pip ``` 第四步是安装Volatility所需的依赖项。为了使Volatility正常运行,我们需要安装一些必要的依赖项。可以使用以下命令安装它们: ``` pip3 install distorm3 pip3 install pycrypto pip3 install openpyxl pip3 install yara-python ``` 第五步是测试安装。如果所有依赖项都正确安装,我们就可以使用Volatility工具了。我们可以使用以下命令来验证安装是否成功,并输出工具的帮助信息: ``` cd volatility-2.6.1/ python3 vol.py -h ``` 如果成功安装,并且命令行界面输出了Volatility的帮助信息,那么我们就可以愉快地使用了。 综上所述,以上是在Kali Linux中安装Volatility工具的步骤。Volatility工具是一种非常有用的内存取证工具,可以帮助我们分析攻击活动和恶意代码,从而更好地保护我们的系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值