盧小貝 李士文
使用內(nèi)存取證框架Volatility對(duì)獲得的內(nèi)存樣本進(jìn)行分析之前,必須首先為目標(biāo)操作系統(tǒng)創(chuàng)建一個(gè)配置文件。Volatility對(duì)所有Windows操作系統(tǒng)的主要版本都有內(nèi)置的支持,使用時(shí)不需要進(jìn)行額外的制作。然而Linux操作系統(tǒng)是不同的,由于其內(nèi)核版本、子內(nèi)核版本和定制內(nèi)核的數(shù)量眾多,使得Volatility無法為所有可能的Linux內(nèi)核版本提供配置文件,需要使用者自己進(jìn)行制作。
制作工具
下面列出了創(chuàng)建Linux配置文件所需的軟件:
dwarfdump:從ELF文件中解析調(diào)試信息的工具,如Linux內(nèi)核和內(nèi)核模塊,輸出各種內(nèi)存結(jié)構(gòu)定義??梢酝ㄟ^使用libdwarf-tools內(nèi)置的dwarfdump,或者從源代碼編譯來安裝這個(gè)工具。
編譯器工具:編譯c源代碼所需的工具,如gcc和make。
Volatility取證框架:創(chuàng)建配置文件所需的VTypes需要Volatility取證框架內(nèi)置的tools/linux/module.c內(nèi)核模塊,其聲明了Volatility需要的所有類型的成員。
配置文件的制作
創(chuàng)建配置文件包括為特定內(nèi)核版本生成一組VTyoes(結(jié)構(gòu)定義)以及一個(gè)內(nèi)核符號(hào)表。Volatility利用這些信息來源對(duì)內(nèi)存鏡像進(jìn)行分析。
創(chuàng)建Vtypes
通過對(duì)想要分析的內(nèi)核進(jìn)行module.c內(nèi)核模塊的編譯就可以實(shí)現(xiàn)Vtypes的創(chuàng)建。切換到volatility/tools/linux/目錄下并鍵入make進(jìn)行編譯即可。如果成功,輸出如下圖所示。
在編譯接近結(jié)束時(shí),dwarfdump對(duì)module.ko生成module.dwarf文件。
獲取符號(hào)表
內(nèi)核符號(hào)表包含在System.map文件中,可以在許多地方找到這個(gè)文件,包括發(fā)行版內(nèi)核的安裝包,安裝內(nèi)核的計(jì)算器的/boot目錄下,或者編譯內(nèi)核的源代碼目錄。
System.map文件包含來自內(nèi)核的所有符號(hào)的地址,Volatility使用它來定位內(nèi)存中的關(guān)鍵數(shù)據(jù)結(jié)構(gòu),即便是同一個(gè)內(nèi)核的簡(jiǎn)單重新編譯,也足以改變符號(hào)的地址。其/boot目錄下的文件如下圖所示。
制作配置文件
要?jiǎng)?chuàng)建配置文件,需要將VTypes及內(nèi)核符號(hào)表放入一個(gè)壓縮文件中,然后將其移到到volatility/plugins/overlays/Linux/目錄下并進(jìn)行一個(gè)合適的命名,可以通過如下圖所示的命令來完成這些步驟。
結(jié)果測(cè)試
要使用制作的配置文件,必須先找到volatility分配給它的名稱,其格式為“Linux+zip文件名+"x86,x64或ARM"”,可以通過如下的命令進(jìn)行查看。
可以看到制作的配置文件名稱為LinuxCentos7x64。也可以在volatility下正常使用,測(cè)試結(jié)果如下圖。