Volatility3学习笔记

弘连网络

共 2157字,需浏览 5分钟

 ·

2021-05-24 19:09

Volatility是一款顶级的开源(https://github.com/volatilityfoundation)内存取证分析工具,支持Windows、Linux、MacOS、Android等系统的内存取证,它由Python编写成。Volatility有2个主要版本:已经成熟稳定的2和正在开发的3。
学习笔记主要以Volatility3为例,记录常用操作,供大家平时工作中快速检索查阅。示例的镜像文件由刀锋现场快取V2.5在Windows7制作而成。
关注公众号并回复“内存”,可以下载相关文件:一个配好环境的Volatility3文件夹、供练习的内存镜像、Windows版本号查询.pdf、Volatility3学习笔记学习笔记.pdf。


1. 帮助手册(-h)

-h的帮助命令主要提供1个有效信息:Volatility所支持的插件列表,也就是后面可以使用的命令列表。由于-h命令输出很长,所以只截取了开头部分。


2. 系统基本信息(windows.info)

根据上图可以看出以下信息:

2.1 内存镜像制作时间为(SystemTime): 2021年5月23日,注意这是UTC时间需要加8才是中国时区。

2.2 NTBuildLab第一个数字7601,根据Windows版本号查询得知该系统为Windows 7, Service Pack 1。

2.3 Is64Bit True 表示这是一个64位系统,结合上述版本号可知其系统为:Win7SP1 64位。


3. 进程命令行参数(windows.cmdline.CmdLine)
进程号(PID),进程名称(Process)和参数(Args)三列


4. 进程列表(windows.pstree)

pstree可以获得关于进程的大量消息:
4.1 子父进程关系:PID代表当前进程IDPPID代表父进程ID
pstree按照子父进程关系(每行前面星号个数)排列进程信息。
比如424号进程(wininit.exe)下有1个子进程(PID为524的services.exe)。
反过来讲,PID为524的services.exe的父进程为PID为424的wininit.exe。

4.2 Wow64是用于在64位系统上运行32位应用程序的子系统。

如果值为False表示该进程是一个原生的64位应用程序,否则为32位应用程序。

4.3 Windows中4号进程固定为System,它是Windows页面内存管理进程。

其创建时间基本等于系统开机时间。

4.4 进程名称,句柄数,线程数这些是很多比赛中会经常考到的值。


5. 动态库列表(windows.dlllist)

动态库列表可以从内存中搜索所有进程加载的动态库列表,有一些关键字段分别是所属进程PID,进程名称,动态库路径。

需要注意可执行文件自身也会当作动态库显示出来。

当需要从内存中导出指定进程的可执行文件时,可以采用--dump参数,比如

pythonvolatility3\vol.py -f Spring-PC_memory.raw windows.dlllist --pid 2176  --dump

Tips:dlllist输出大量信息很难做查找工作,此时可以用重定向将结果输出到文件。

pythonvolatility3\vol.py -f Spring-PC_memory.raw windows.dlllist  > dllresult.txt


6. 账户信息(windows.hashdump)

只有很少的几个字段,主要是用户名,rid和nthash


7. 注册表数据(windows.registry.hivelist)

上面结果只能看看,加--dump参数把注册表文件导出来才有实际价值。

将导出的SAM,SYSTEM,SOFTWARE,SECURITY等文件放在Windows/System32/config文件夹下,加载火眼证据分析,就可以获得更为完整的用户数据:


8. 网络连接状态(windows.netscan.NetScan)


9. 服务运行状态(windows.svcscan)


10. 进程环境变量(windows.envars)


11. 进程缓存的文件(windows.dumpfiles)

该命令默认将内存中全部缓存文件dump到本地目录,所以使用改命令时务必添加--pid参数,导出来的大部分都是dll。


常见恶意文件分析思路:

1. 使用windows.pstree找到其pid;

2. 根据pid使用windows.netscan.NetScan查找端口监听情况;

3. 根据pid使用windows.cmdline.CmdLine获得启动参数;

4. 根据pid使用windows.handles获得打开句柄(通常包含注册表和文件);

5. 根据pid使用windows.dlllist 导出exe和相关dll到本地做逆向分析;


浏览 588
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报