Volatility初步学习

Volatility是一个内存分析工具,其能够分析操作系统的物理内存,获取其语义信息。

针对一个Linux操作系统(安装文件),Volatility进行内存分析时,其需要获取profile,profile包括两个内容:systemmap和dwarf,

其中systemmap列出了一系列符号的虚拟地址;

dwarf是使用Volatility中的工具生成的文件,包含了内核中一系列数据的结构信息,其是通过将Linux内核的源代码输入工具中,工具进行分析,确定一系列结构的信息,其以树状形式反应,<1>开头的表示是根,<2>表示是根下面的结构信息,比如struct task_struct中,task_struct中包括tasks,则dwarf文件中的形式为<1> task_struct <2> tasks

真实分析的时候,Volatility应该是如下进行的:

1. 首先根据systemmap获取虚拟地址,然后进行虚拟地址到物理地址的转换;

线性地址结构如下图所示:

Page Map level 4        Page Directory Pointer    Page Table Selector     Page Table   Enter                页内字节寻址

---------------------                ------------------------             ---------------------     ----------------------                  ----------------------

47                       39    38                           30    29                       21       20                          12          11                          0

概念:

PML4T(Page Map Level4 Table)及表内的PML4E结构,每个表为4K,内含512个PML4E结构,每个8字节

PDPT (Page Directory Pointer Table)及表内的PDPTE结构,每个表4K,内含512个PDPTE结构,每个8字节

PDT (Page Directory Table) 及表内的PDE结构,每个表4K,内含512个PDE结构,每个8字节

PT(Page Table)及表内额PTE结构,每个表4K,内含512个PTE结构,每个8字节。


2. 取出对应物理地址的内容,然后按照dwarf中获取的结构信息,解析语义信息,获取语义。

通过分析,针对进程而言,可以获取dtb、进程名称(至多16个字符)、uid、gid、pid

针对文件,可以获取打开文件的进程名称、pid、文件路径信息。

你可能感兴趣的:(Volatility初步学习)