内存取证基础&思考方式

可以看到有两个文件,一个mem.vmem,一个suspicion

1-3

vmem文件:表示虚拟内存文件,与pagefile.sys(亦称分页文件)同。当VMware虚拟系统执行关机操作后,vmem文件消失,但挂起关闭时,不消失。

我们可以使用Linux下的file命令分析一下后面那个没有后缀的文件是什么

file suspicion                                 

可以看出返回的是data数据,不知道这是什么,那我们就先分析第一个文件

之前我们提到vmem格式是VMware虚拟机的内存dump文件,这是一道典型的内存取证。

其他的还有 raw等格式的内存文件。

这里我们需要使用Linux下的内存分析神器Volatility

Volatility是一款开源的,基于Python开发的内存取证工具集,可以分析内存中的各种数据。Volatility支持对32位或64位Wnidows、Linux、Mac、Android操作系统的RAM数据进行提取与分析。

kali也是默认安装了这个工具的,直接就可以使用

volatility 使用:

volatility -f <文件名> –profile=<配置文件> <插件> [插件参数]

我们先使用imageinfo插件来猜测dump文件的profile(配置文件)

profile是特定操作系统版本以及硬件体系结构(x86,x64,ARM)中VTypes,共用体,对象类型的集合.除了这些组件以外,profile还包括如下:

元数据:操作系统的名称(例如:”windows”,”mac”,”linux”),内核版本,以及编译号. 系统调用信息:索引以及系统调用的名称 常量值:全局变量-在某些操作系统中能够在硬编码的地址处找到的全局变量 系统映射:关键全局变量和函数的地址(仅限Linux和Mac)

每个**profile(配置文件)**都有个一个唯一的名称,通常是由操作系统的名称,版本,服务包,系统结构等信息组成.

例如:Win7SP1x64是64位的Windows 7 SP1系统配置文件的名称.

获取–profile的参数

常用的命令如下:

命令 功能
cmdline/cmdscan 列出历史cmd命令
filescan 扫描文件,可配合grep使用
netscan 扫描建立的连接和套接字,类似于netstat
pslist/psscan 列出进程列表
svcscan 扫描windows服务列表
screenshot 显示GDI样式的截屏
memdump 从内存dump进程的内存
dumpfiles 从内存dump文件

这里使用命令(-f参数是指定一个文件

volatility -f mem.vmem imageinfo

2-2

我们可以看到这个内存是WinXPSP2x86

什么意思呢,就是Windows XP sp2版本,32位的

然后我们再分析在运行的进程(pslist是打印输出此时在运行的进程)

volatility -f mem.vmem --profile=WinXPSP2x86 pslist

3-2

简单看一下进程,如果不知道是哪个程序的可以百度一下。根据这个我们就能知道此时哪些软件在内存中运行。

上面的一般都很熟悉,是一些输入法什么的,我们查到最下面TrueCrypt.exe这个进程的时候,就发现是一个加密软件。

这时候就要警觉了,这是关键点。

4-2

我们可以推测之前那个未知的文件suspicion是通过这个加密软件加密的文件

接下来我们尝试破解这个加密

首先得把suspicion文件的相关内存dump出来,用Volatility即可完成。

TrueCrypt.exe进程**(PID 2012)dump出来,结果文件为2012.dmp**

volatility -f mem.vmem memdump -p 2012 --dump-dir ./

我们在网上可以找到TrueCrypt的破解工具Elcomsoft Forensic Disk Decryptor CracKed By Hmily

使用这个软件进行解密

5-3

6-2

7-2

这里已经破解成功

8-2

把这个磁盘挂载到本地**(Mount Disk)**

9-1

点Mount

10-1

生成本地磁盘F

直接找到文件就是flag