0x01 Volatility 介绍
volatility 是一款内存取证和分析工具,可以对 Procdump 等工具 dump 出来的内存进行分析,并提取内存中的文件。该工具支持 Windows 和 Linux,Kali 下面默认已经安装。
0x02 安装过程
利用Volatility进行Windows内存取证分析(一):初体验
0x03 概念
0x03a Vtypes
Vtypes 是 Volatility 框架中数据结构定义以及解析的语言,大部分操作系统底层都是使用 C 语言编写的,其中大量使用数据结构来组织和管理相关的变量以及属性。
因为 Volatility 是用 Python 语言编写的,所以我们需要一种方式在Python 源文件中表示 C 语言的数据结构。
VTypes 正是用于实现这一点的。
eg:
C
struct process{
int pid;
int parent_pid;
char name[10];
char* command_line;
void* ptv;
};
vtype
'process' : [ 26, {
'pid' : [ 0, ['int']],
'parent_pid' : [ 4, ['int']],
'name' : [ 8, ['array', 10, ['char']]],
'command_line' : [ 18, ['pointer', ['char']]],
'ptv' : [ 22, ['pointer', [' void']]],
}]
0x03b Profiles
profile 是特定操作系统版本以及硬件体系结构(x86,x64,ARM)中VTypes,共用体,对象类型的集合.除了这些组件以外,profile 还包括如下:
元数据:操作系统的名称(例如:“windows”,“mac”,“linux”),内核版本,以及编译号.
系统调用信息:索引以及系统调用的名称
常量值:全局变量-在某些操作系统中能够在硬编码的地址处找到的全局变量
系统映射:关键全局变量和函数的地址(仅限 Linux 和 Mac)
每个 profile 有个一个唯一的名称,通常是由操作系统的名称,版本,服务包,系统结构等信息组成.例如:Win7SP1x64 是 64 位的 Windows 7 SP1 系统配置文件的名称。
不同版本的操作系统,其中的内核数据结构成员以及偏移可能会发生改变,因此产生了 profiles 配置选项。
eg:
python vol.py -f <文件名> --profile=<配置文件> <插件> [插件参数]
python vol.py -f /opt/cuckoo/storage/analyses/9/memory.dmp --profile=Win7SP1x86 volshel
链接
github 仓库
https://github.com/volatilityfoundation/volatility
官方网站
https://www.volatilityfoundation.org/