Volatility是一個開源的Windows,Linux,Mac,Android的內存取證分析工具,由python編寫成,命令行操作,支持各種作業系統。本次討論主要基於Linux下Volatility的分析。
Volatility有豐富的插件命令,能夠加載相應的配置文件profile 進行加載插件。需要特別說明的是,windows系統的profiles相當齊全,但linux下的profile就得自己製作了。
1、kali便捷版
2017版kali自帶有volatility,在「應用程式」-「數字取證」中。只需裝載kali,不用任何配置,就可以享受volatility。
下載地址推薦:
https://pan.baidu.com/s/1mbzHoRBs44etfQtXXAXx0Q 提取碼:jj70
跟LiME一樣,volatility作為開源工具,亦可以直接下載至Linux中解壓使用。但在Linux中自主配置volatility時,需要考慮當前系統是否存在一些輔助包。
volatility安裝包下載地址:
https://github.com/volatilityfoundation/volatility/archive/master.zip
安裝步驟 :將volatility安裝包下載及解壓至Linux下,終端進入volatility解壓路徑執行命令:
Python setup.py install
運行volatility:vol.py --info
或者Python ./vol.py --info
在運行過程中若出現如下圖錯誤,可能因系統缺少pycrypto,distorm這兩個輔助包而無法加載相應插件導致的。
解決方法:
下載pycrypto:
https://pypi.org/project/pycrypto/#files
下載distorm:
https://pypi.org/project/distorm3/#files
安裝輔助包:分別進入pycrypto/distorm解壓文件路徑執行命令:Python setup.py install
在安裝輔助包時亦可能出現缺失Python的頭文件和靜態庫包導致安裝失敗問題,這時便需要在系統上安裝python-dev開發包,安裝命令:apt-get install python-dev。由於系統環境不同,輔助包的安裝也有可能出現許多不一樣的錯誤且複雜無法解決,可以暫且忽視「缺少輔助包錯誤」亦直接使用volatility常用命令。
在前面說過,Linux下的profile是需要自己製作的,其實,對應Linux鏡像的Profile製作原理很簡單,把內核system.map文件和 module.dwarf文件打包成的一個zip文件即可,具體如下:
1、找system.map文件:
在/boot目錄下找到system.map文件,一般格式為System.map-x.xx.x-x-amd64,如下圖方框所示:
.進入「/usr/src/kernels」查看,確保安裝必要的linux頭文件
.進入「/lib/modules」路徑下,創建build和source的軟連接:
ln -s /usr/src/linux-headers-x.xx.x-x-amd64 build
ln -s /usr/src/linux-headers-x.xx.x-x-common source
.將/volatility/tools/linux目錄設置為777權限
.在「/volatility/tools/linux」目錄,執行make命令,即可得到module.dwarf
在make命令之後,若出現「dwarfdump:未找到命令」錯誤,如下圖:
則說明該環境缺少dwarfdump工具,需安裝,否則無法寫入module.dwarf,安裝方法如下:
安裝:yum install elfutils-devel
獲取dwarfdump的源文件:
wget http://www.prevanders.net/libdwarf-20140413.tar.gz
解壓壓縮包:tar -xz libdwarf-20140413.tar.gz
執行命令:#./configure
# Make
執行以上兩條命令後,進入dwarfdump文件夾下執行命令:Make install
自此dwarfdump就安裝好了。
將上面得到的module.dwarf和system.map放在一起打包為ZIP文件,就是我們需要的profile文件。再將製作好的ZIP文件放置volatility/plugins/overlays/linux/目錄下,通過volatility --info查看,就可以看到我們配置好profile文件了(volatility會以它識別方式重新命名配置文件)。
使用volatility工具對Centos內存鏡像分析:
volatility版本:volatility2.6.1
Centos版本:Centos 7
內存鏡像大小及類型:使用Lime工具生成,格式為.Lime,大小為1G。
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_pslist
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_netstat
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_bash
./vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_bash_env
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_arp
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_getcwd
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_ifconfig
vol.py -f /root/centos.lime --profile=Linuxcentos7_x64 linux_dynamic_env
以上就是部分常用命令列舉,剩下部分可以參照以下附表。
來源:廣西南寧平衡信息技術有限公司,作者:Three-H