内存取证之Volatility ——合天网安实验室学习笔记

实验链接

Volatility是一款*的开源内存取证分析工具,支持Windows,Linux,MaC,Android等系统的内存取证,它由Python编写成,通过本实验学习内存取证的思想与方法,掌握volatility的使用。

链接:http://www.hetianlab.com/expc.do?ce=aeca012d-d9b1-4706-b761-d0240089d7c5

实验简介

实验所属系列: 数据安全

实验对象: 本科/专科信息安全专业

相关课程及专业: 操作系统

实验类别: 实践实验类

预备知识

  • 关于volatility

    Volatility是开源的Windows,Linux,MaC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。

  • 注册表

    是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。

实验目的

通过该实验了解内存取证的思想与方法,深入掌握volatility的技巧与使用。

实验环境

服务器:kali,IP地址:随机分配

测试文件请在实验机内下载使用:http://tools.hetianlab.com/tools/T023.zip,将压缩包内的文件保存在文件系统下:
内存取证之Volatility ——合天网安实验室学习笔记

实验步骤

步骤一

打开volatility
内存取证之Volatility ——合天网安实验室学习笔记

启动后看到的supported flugin command都是volatility可用的插件
内存取证之Volatility ——合天网安实验室学习笔记

左边是插件的命令右边是插件的效果

所有的操作系统都将信息存储在RAM,然后不同的操作系统可能存储在不同的路径下,在volatility中,根据操作系统的不同,我们必须选择合适的profile来帮助volatility识别数据存储的位置以及有用的信息

为了选择格式的profile,我们先用imageinfo插件查看一下系统的版本等信息

volatility -f cridex.vmem imageinfo
内存取证之Volatility ——合天网安实验室学习笔记

建议的profile也在回显中给出
内存取证之Volatility ——合天网安实验室学习笔记
选择好合适的profile之后我们就可以进行下一步的分析了

步骤二

进程识别及分析

为了识别内存镜像中的相关的进程、PID、开始时间等信息我们可以ps相关的插件

volatility --profile=WinXPSP3x86 -f cridex.vmem pslist
内存取证之Volatility ——合天网安实验室学习笔记

pslist命令不仅显示了所有正在运行的进程,而且给出了有价值的信息,比如PID、PPID、启动的时间。

volatility --profile=WinXPSP3x86 -f cridex.vmem pstree
内存取证之Volatility ——合天网安实验室学习笔记

另一个相似的命令是pstree。与pslist命令不同的地方在于还可以识别子进程以及父进程

volatility --profile=WinXPSP3x86 -f cridex.vmem psscan
内存取证之Volatility ——合天网安实验室学习笔记

psscan命令可以显示出被恶意软件比如rootkit为了躲避用户或杀毒软件而隐藏的进程

分析网络服务及连接

volatility可以用来分析和识别隐藏的、终止的、活跃的连接以及相应的端口和进程。可以使用下列的命令

volatility --profile=WinXPSP3x86 -f cridex.vmem connections
内存取证之Volatility ——合天网安实验室学习笔记

connections命令列出活跃的连接和端口,以及本地和远程的ip、PID、端口等

volatility --profile=WinXPSP3x86 -f cridex.vmem connscan
内存取证之Volatility ——合天网安实验室学习笔记

connscan比之上一条命令,能列出已经被终止的连接。

拿到ip之后还可以在网站上查询进一步的信息,比如125.19.103.198

(试验机貌似不可联网)
内存取证之Volatility ——合天网安实验室学习笔记

volatility --profile=WinXPSP3x86 -f cridex.vmem sockets
内存取证之Volatility ——合天网安实验室学习笔记

sockets插件可以被用来展示出额外的连接信息监听的sockets,sockets插件支持所有的协议。

分析DLL

dll是windows特有的,包含可以被大量程序同时使用的代码,通过了解进程正在运行的dll和版本信息有助于分析关联的进程信息

相关的插件有:

volatility --profile=WinXPSP3x86 -f cridex.vmem verinfo
内存取证之Volatility ——合天网安实验室学习笔记

verinfo插件可以列出PE文件的版本信息

volatility --profile=WinXPSP3x86 -f cridex.vmem dlllist
内存取证之Volatility ——合天网安实验室学习笔记

dlllist插件可以列出所有正在运行的dll。

步骤三

注册表分析

关于用户、设置、程序以及操作系统的信息都可以在注册表中找到,甚至被散列了的密码也可以找到,在分析windows注册表时,我们可以使用下面的插件

volatility --profile=WinXPSP3x86 -f cridex.vmem hivescan
内存取证之Volatility ——合天网安实验室学习笔记

hivescan插件显示了可用的注册表配置单元的物理地址

volatility --profile=WinXPSP3x86 -f cridex.vmem hivelist

内存取证之Volatility ——合天网安实验室学习笔记

更加详细的信息可以通过hivelist命令查看,这条命令会显示虚拟地址、物理地址的细节以及更容易识别的路径等

timeliner插件

volatility --profile=WinXPSP3x86 -f cridex.vmem timeliner
内存取证之Volatility ——合天网安实验室学习笔记

timeliner插件可以通过提供所有时间发生时的时间线来帮助取证。

恶意软件分析

volatility --profile=WinXPSP3x86 -f cridex.vmem malfind
内存取证之Volatility ——合天网安实验室学习笔记

malfind插件用于寻找可能注入到各种进程中的恶意软件。使用malfind时也可以使用-p直接指定进程,比如

volatility --profile=WinXPSP3x86 -f cridex.vmem malfind -p 608
内存取证之Volatility ——合天网安实验室学习笔记
从上图中可以看到pid是608对应的进程是winlogon.exe

答题

内存取证之Volatility ——合天网安实验室学习笔记