卢小贝 李士文
使用内存取证框架Volatility对获得的内存样本进行分析之前,必须首先为目标操作系统创建一个配置文件。Volatility对所有Windows操作系统的主要版本都有内置的支持,使用时不需要进行额外的制作。然而Linux操作系统是不同的,由于其内核版本、子内核版本和定制内核的数量众多,使得Volatility无法为所有可能的Linux内核版本提供配置文件,需要使用者自己进行制作。
制作工具
下面列出了创建Linux配置文件所需的软件:
dwarfdump:从ELF文件中解析调试信息的工具,如Linux内核和内核模块,输出各种内存结构定义。可以通过使用libdwarf-tools内置的dwarfdump,或者从源代码编译来安装这个工具。
编译器工具:编译c源代码所需的工具,如gcc和make。
Volatility取证框架:创建配置文件所需的VTypes需要Volatility取证框架内置的tools/linux/module.c内核模块,其声明了Volatility需要的所有类型的成员。
配置文件的制作
创建配置文件包括为特定内核版本生成一组VTyoes(结构定义)以及一个内核符号表。Volatility利用这些信息来源对内存镜像进行分析。
创建Vtypes
通过对想要分析的内核进行module.c内核模块的编译就可以实现Vtypes的创建。切换到volatility/tools/linux/目录下并键入make进行编译即可。如果成功,输出如下图所示。
在编译接近结束时,dwarfdump对module.ko生成module.dwarf文件。
獲取符号表
内核符号表包含在System.map文件中,可以在许多地方找到这个文件,包括发行版内核的安装包,安装内核的计算器的/boot目录下,或者编译内核的源代码目录。
System.map文件包含来自内核的所有符号的地址,Volatility使用它来定位内存中的关键数据结构,即便是同一个内核的简单重新编译,也足以改变符号的地址。其/boot目录下的文件如下图所示。
制作配置文件
要创建配置文件,需要将VTypes及内核符号表放入一个压缩文件中,然后将其移到到volatility/plugins/overlays/Linux/目录下并进行一个合适的命名,可以通过如下图所示的命令来完成这些步骤。
结果测试
要使用制作的配置文件,必须先找到volatility分配给它的名称,其格式为“Linux+zip文件名+"x86,x64或ARM"”,可以通过如下的命令进行查看。
可以看到制作的配置文件名称为LinuxCentos7x64。也可以在volatility下正常使用,测试结果如下图。