計(jì)算機(jī)內(nèi)存取證技術(shù)
原文作者:徐志強(qiáng)?? 日期:2018年6月10日
?一、?計(jì)算機(jī)物理內(nèi)存簡介
計(jì)算機(jī)的物理內(nèi)存一般我們指的就是隨機(jī)存取存儲器(Random?Access?Memory,簡稱RAM)。內(nèi)存是一種易失性存儲載體,它保存處理器主動訪問和存儲的代碼和數(shù)據(jù),是一個臨時的數(shù)據(jù)交換空間。大多數(shù)的PC的內(nèi)存屬于一種動態(tài)RAM(DRAM)。 它是動態(tài)變化的,因其利用了電容器在充電和放電狀態(tài)間的差異來存儲數(shù)據(jù)的比特位。 為了維持電容器的狀態(tài),動態(tài)內(nèi)存必須周期性刷新- 這也是內(nèi)存控制器最典型的任務(wù)。
由于計(jì)算機(jī)的內(nèi)存(DRAM)需要持續(xù)供電才能保持?jǐn)?shù)據(jù)可持續(xù)訪問,因此也稱為易失性存儲。美國普林斯頓大學(xué)曾做過關(guān)于計(jì)算機(jī)冷啟動攻擊的研究,計(jì)算機(jī)在斷電后,在很短的時間內(nèi)內(nèi)存的數(shù)據(jù)就會消失,然而通過液態(tài)氮冷卻,可以將內(nèi)存中的數(shù)據(jù)進(jìn)行凍結(jié),再通過一些技術(shù)方法來解凍并獲取原來的內(nèi)存數(shù)據(jù)。以下我們先了解一下與內(nèi)存相關(guān)的基本概念。
地址空間(Address Space)
CPU處理器要在執(zhí)行指令并訪問存儲與內(nèi)中的數(shù)據(jù),它必須為要訪問的數(shù)制定一個唯一性地址。地址空間指的就是一組大量的有效地址,可用于去識別存儲與有限的內(nèi)存分配空間中的數(shù)據(jù)。一個正在運(yùn)行的程序可以訪問的單個連續(xù)的地址空間一般稱為線性地址空間。基于內(nèi)存模型及采用的分頁模式,我們有時將其稱為線性地址,有時稱為虛擬地址。通常我們使用物理地址空間來特指處理器請求訪問物理內(nèi)存的地址。這些地址是通過將線性地址轉(zhuǎn)化為物理地址來獲得。
內(nèi)存分頁(Paging)
從抽象意義上來講頁是一個具有固定尺寸的窗口,從邏輯意義上來講頁是具有固定大小的一組連續(xù)線性地址的集合。
分頁可以將線性地址空間進(jìn)行虛擬化。它創(chuàng)建了一個執(zhí)行環(huán)境,大量線性地址空間通過用適量的物理內(nèi)存和磁盤存儲進(jìn)行模擬。每一個32位的線性地址空間被分為固定長度的片段,稱為頁(Page),頁可以任何順序?qū)⒕€性地址空間映射為物理內(nèi)存。 當(dāng)程序嘗試訪問線性地址時,這樣的映射使用了駐留內(nèi)存的頁目錄(Page Directory)及頁表(Page Table)來實(shí)現(xiàn)。
一個頁的大小可以指定為4KB(212=4KB)的任意倍數(shù),這根據(jù)不同的體系結(jié)構(gòu)或操作系統(tǒng)的設(shè)置而定,而x86架構(gòu)下的Windows/Linux均采用4KB大小的分頁方式,這就說明32位線性地址中必定存在一個12位的指示頁內(nèi)偏移量的域。
物理地址擴(kuò)展
Intel公司的32位架構(gòu)的內(nèi)存分頁機(jī)制支持物理地址擴(kuò)展(Physical Address Extension?,簡稱PAE),該擴(kuò)展支持允許處理器支持超過4GB的物理地址空間。
程序雖然仍只能擁有最高4GB的線性地址空間,但是內(nèi)存管理單元可以將那些地址映射為擴(kuò)展后的64GB物理地址空間。對于支持PAE功能的系統(tǒng),線性地址分為四個索引:
- 頁目錄指針表(Page directory pointer table,簡稱PDPT)
- 頁目錄(Page directory,簡稱PD)
- 頁表(Page table,簡稱PT)
- 頁偏移(Page offset)
二、?物理內(nèi)存中數(shù)據(jù)的價值
計(jì)算機(jī)終端及移動終端均使用了RAM易失性存儲,主要用于數(shù)據(jù)交換、臨時存儲等用途。操作系統(tǒng)及各種應(yīng)用軟件均經(jīng)常需要與物理內(nèi)存進(jìn)行數(shù)據(jù)交互,此外由于內(nèi)存空間有限,因此計(jì)算機(jī)系統(tǒng)還可能將內(nèi)存中的數(shù)據(jù)緩存到磁盤中,如pagefile.sys(頁交換文件)及hiberfil.sys(休眠文件)。
內(nèi)存中有大量的各類數(shù)據(jù),結(jié)構(gòu)化及非結(jié)構(gòu)化數(shù)據(jù)。通過對物理內(nèi)存鏡像可以提取出有價值的數(shù)據(jù)。 常見有價值的數(shù)據(jù),包含以下內(nèi)容:
- 進(jìn)程列表(包括惡意程序進(jìn)程、Rootkit隱藏進(jìn)程等)
- 動態(tài)鏈接庫(當(dāng)前系統(tǒng)或程序加載的動態(tài)鏈接庫)
- 打開文件列表(當(dāng)前系統(tǒng)打開的文件列表)
- 網(wǎng)絡(luò)連接(當(dāng)前活動的網(wǎng)絡(luò)連接)
- $MFT記錄(常駐文件均可以直接提取恢復(fù))
- 注冊表(部分注冊表信息,包括系統(tǒng)注冊表和用戶注冊表文件)
- 加密密鑰或密碼(如Windows賬戶密碼Hash、BitLocker/SafeBoot/PGP/ TrueCrypt/VeraCrypt等全盤加密或加密容器的恢復(fù)密鑰等)
- 聊天記錄(如QQ聊天記錄片段)
- 互聯(lián)網(wǎng)訪問(上網(wǎng)記錄URL地址、網(wǎng)頁緩存及InPrivate隱私模式訪問數(shù)據(jù)等)
- 電子郵件(如網(wǎng)頁郵件緩存頁面)
- 圖片及文檔等(尚未保存到磁盤中的圖片、文檔等文件)
頁交換文件(Pagefile.sys)
除了使用物理內(nèi)存RAM用于數(shù)據(jù)交換,Windows為了能正常工作還使用了各種各樣的文件。從Windows 95開始,Windows開始引入了頁交換文件(Pagefile.sys)來協(xié)助內(nèi)存數(shù)據(jù)的交換。 Pagefile.sys是磁盤中的一個文件,它用于將操作系統(tǒng)中的活動數(shù)據(jù)臨時性地進(jìn)行存儲,在必要的情況下,Windows可將Pagefile.sys文件的中數(shù)據(jù)移動到物理內(nèi)存中或從內(nèi)存中將數(shù)據(jù)移到該文件中,實(shí)現(xiàn)數(shù)據(jù)的臨時交換或緩存。從Pagefile.sys中獲得的數(shù)據(jù)通常是當(dāng)前活動的相關(guān)信息,也通常與調(diào)查相關(guān)性較高。
Windows操作系統(tǒng)最多支持16個頁交換文件。啟用物理地址擴(kuò)展功能(PAE)的Windows 32位和64位系統(tǒng)的最大頁交換文件大小為16TB。64位的安騰架構(gòu)(Itanium)的系統(tǒng)的頁交換文件可以支持高達(dá)32TB。 頁交換文件大小的默認(rèn)值為計(jì)算機(jī)物理內(nèi)存大小的1.5至3倍。
Pagefile.sys用于存儲從物理內(nèi)存中轉(zhuǎn)移過來的數(shù)據(jù)。 要獲得一個正在運(yùn)行的系統(tǒng)的活動全貌或快照,我們通常除了分析物理內(nèi)存,還需要分析pagefile.sys。 部分工具支持同時將物理內(nèi)存和pagefile.sys進(jìn)行檢查分析。通常pagefile.sys文件放置于操作系統(tǒng)所在分區(qū),當(dāng)然用戶也完全可能修改高級設(shè)置或注冊表調(diào)整pagefile.sys的存儲位置。
從Windows?7操作系統(tǒng)版本開始,Windows系統(tǒng)開始支持頁交換文件pagefile.sys的加密。
?
休眠文件(HiberFil.sys)
Hiberfil.sys是當(dāng)系統(tǒng)休眠時,Windows將物理內(nèi)存的數(shù)據(jù)寫入到磁盤生成的一個文件。當(dāng)系統(tǒng)進(jìn)入休眠狀態(tài)后,網(wǎng)絡(luò)連接將會中斷。 當(dāng)系統(tǒng)重新加電時,hiberfil.sys文件中的數(shù)據(jù)重新回寫到物理內(nèi)存中,這也使得從休眠狀態(tài)恢復(fù)到原始狀態(tài)變得相當(dāng)快。
休眠文件包含了標(biāo)準(zhǔn)的頭部(PO_MEMORY_IMAGE),包含了內(nèi)核上下文與寄存器的相關(guān)信息及壓縮的數(shù)據(jù)塊。該文件采用了Xpress算法(帶霍夫曼Huffman及LZ編碼)。 文件頭部通常包含了“hibr”、“HIBR”、“wake”或“WAKE”等特征。 操作系統(tǒng)從休眠狀態(tài)恢復(fù)后,頭部就被清零了。清零后的文件頭可能導(dǎo)致一些取證軟件無法分析該文件。
通過分析hiberfil.sys文件的修改時間戳信息,我們可以了解到該系統(tǒng)最后一次休眠的時間。系統(tǒng)中的休眠文件hiberfil.sys只有一個。當(dāng)系統(tǒng)重新休眠時,當(dāng)前物理內(nèi)存中的內(nèi)容將會覆蓋原有文件的數(shù)據(jù)。 要對hiberfil.sys進(jìn)行分析,要求取證工具可以將休眠文件中的數(shù)據(jù)進(jìn)行解壓為原生數(shù)據(jù)并進(jìn)行數(shù)據(jù)解析。Mattieu Suiche的Windows Memory Toolkit工具h(yuǎn)ibr2bin.exe支持將休眠文件轉(zhuǎn)為原生轉(zhuǎn)儲文件。
當(dāng)取證人員在現(xiàn)場要制作Windows操作系統(tǒng)的物理內(nèi)存鏡像時,可能由于內(nèi)存鏡像工具不兼容操作系統(tǒng)導(dǎo)致無法獲取物理內(nèi)存數(shù)據(jù)。當(dāng)無法成功制作物理內(nèi)存鏡像時,還可以讓系統(tǒng)進(jìn)入休眠模式,從而用變通的方式獲得物理內(nèi)存中的數(shù)據(jù)。
要進(jìn)入休眠模式,首先要讓系統(tǒng)啟用休眠模式支持。Windows 8及以上版本的操作系統(tǒng),默認(rèn)啟用休眠模式支持。取證人員也可以管理員權(quán)限進(jìn)入命令行模式,并輸入powercfg.exe /hibernate ON 來啟用休眠模式支持。要讓操作系統(tǒng)進(jìn)入休眠模式,需要輸入shutdown /h .
Vista以上操作系統(tǒng)在原有支持休眠模式(Hibernate Mode)的基礎(chǔ)上增加了睡眠模式(Sleep Mode)。睡眠模式狀態(tài)下,操作系統(tǒng)使用極少的電量保證內(nèi)存可以繼續(xù)工作,一旦系統(tǒng)電量不足,系統(tǒng)將保存所有內(nèi)存數(shù)據(jù)到磁盤并關(guān)閉計(jì)算機(jī)。而休眠模式狀態(tài)下,系統(tǒng)關(guān)閉,將內(nèi)存中的數(shù)據(jù)寫入休眠文件hiberfil.sys中。
在默認(rèn)的Windows開始菜單中的“電源”找不到“休眠”,可以通過按Win+X鍵,選擇“控制面板”,找到“硬件和聲音”->“電源選項(xiàng)”->“選擇電源按鈕的功能”,選擇“更改當(dāng)前不可用的設(shè)置”,在“關(guān)機(jī)設(shè)置”下將“休眠”選項(xiàng)勾選。后續(xù)在開始菜單選擇“電源”即可直接看到“休眠”選項(xiàng)。
三、?Windows 內(nèi)存取證方法和分析技術(shù)
內(nèi)存取證(Memory Forensics)通常指對計(jì)算機(jī)及相關(guān)智能設(shè)備運(yùn)行時的物理內(nèi)存中存儲的臨時數(shù)據(jù)進(jìn)行獲取與分析,提取有價值的數(shù)據(jù)。內(nèi)存是操作系統(tǒng)及各種軟件交換數(shù)據(jù)的區(qū)域,數(shù)據(jù)易丟失(Volatile),通常在關(guān)機(jī)后數(shù)據(jù)很快就消失。
常見物理內(nèi)存獲取方法:冷啟動攻擊(Cool Boot Attack)、基于火線(1394)或雷電 (ThunderBolt)接口的直接內(nèi)存訪問(DMA)獲取及內(nèi)存獲取軟件工具。
不同的操作系統(tǒng)需要用到不同的物理內(nèi)存獲取工具。
Windows操作系統(tǒng)平臺支持內(nèi)存獲取的常見工具有:
- DumpIt (早期版本名為Win32dd)
- Belkasoft RAMCapturer
- Magnet RAM Capture
- WinEn
- Winpmem
- EnCase Imager
- FTK Imager
- 取證大師
- 取證神探
Linux操作系統(tǒng)常見的內(nèi)存獲取工具:
- dd (適合Linux早期版本)
- LiME ?http://code.google.com/p/lime-forensics/
- linpmem
- Draugr ?http://code.google.com/p/draugr/
- Volatilitux ?http://code.google.com/p/volatilitux/
- Memfetch ?http://lcamtuf.coredump.cx/
- Memdump
Mac?OSX操作系統(tǒng)內(nèi)存獲取工具有:
- MacMemoryReader
- osxpmem
- Recon?for Mac OSX
- Blackbag MacQuisition
Windows操作系統(tǒng)平臺下的DumpIt是一個簡單易用的計(jì)算機(jī)內(nèi)存鏡像獲取工具。通常直接將該工具存放在大容量移動硬盤或優(yōu)盤中??芍苯釉谡谶\(yùn)行Windows系統(tǒng)的平臺直接運(yùn)行,根據(jù)提示操作即可。
?
在獲取物理內(nèi)存數(shù)據(jù)時還需盡量減少對原有內(nèi)存數(shù)據(jù)的覆蓋,最大程度提取處內(nèi)存數(shù)據(jù)。
內(nèi)存分析技術(shù)
Windows操作系統(tǒng)獲取出的物理內(nèi)存鏡像需要使用專門的內(nèi)存分析工具。常見的內(nèi)存分析工具有Volatility、Rekall、Forensic Toolkit(FTK)、取證大師及取證神探等,可以解析出常見的基本信息,包括進(jìn)程信息、網(wǎng)絡(luò)連接、加載的DLL文件及注冊表加載信息等。
Volatility?Framework?
Volatility Framework是一個完全開放的內(nèi)存分析工具集,基于GNU GPL2許可,以python語言進(jìn)行編寫。由于Volatility是一款開源免費(fèi)的工具,無需花任何錢即可進(jìn)行內(nèi)存數(shù)據(jù)的高級分析,此外代碼開源的特點(diǎn),遇到一些無法解決的問題時,還可以對源代碼進(jìn)行修改或擴(kuò)展功能。
在開始使用Volatility之前,我們需要先了解它具有哪些特色功能。
- 即獨(dú)立又整體統(tǒng)一的框架
支持32位和64位操作系統(tǒng)的內(nèi)存分析(如Windows、Linux、Mac系統(tǒng)及32位的Android系統(tǒng))。Volatility的模塊化設(shè)計(jì)允許快速對未來新發(fā)布的操作系統(tǒng)進(jìn)行支持。
- 開放源代碼(GPL v2)
意味著可以自行閱讀源代碼,對源代碼進(jìn)行學(xué)習(xí)及功能擴(kuò)充。 通過了解和學(xué)習(xí)Volatility的工作機(jī)制,你也可以成為一名更有效的分析專家。
- 基于Python語言編寫
Python是一個公認(rèn)的取證及逆向工程語言,帶有豐富的庫文件,也容易集成到Volatility。
- 跨平臺運(yùn)行支持
Volatility只要系統(tǒng)平臺有Python運(yùn)行環(huán)境即可運(yùn)行,因此在Windows、Linux或Mac系統(tǒng)中都可以方便地運(yùn)行。
- 程序接口擴(kuò)展性強(qiáng)、腳本編程支持
Volatility讓取證人員可以不斷創(chuàng)新,自行擴(kuò)展新功能,例如新增支持惡意程序沙盒分析、虛擬機(jī)檢測、自動瀏覽內(nèi)核內(nèi)存等功能。
- 豐富的文件格式支持
支持原始數(shù)據(jù)轉(zhuǎn)儲(Raw Dump)、崩潰轉(zhuǎn)儲(Crash Dump)、休眠文件及各種其它格式,甚至可以支持多個格式之間的轉(zhuǎn)換。
- 快速高效的算法支持
與其它工具相比,Volatility具備快速高效的分析內(nèi)存轉(zhuǎn)儲文件分析能力,無需消耗多余的內(nèi)存。
- 社區(qū)支持
Volatility的共享者來自各行各業(yè),商業(yè)公司、執(zhí)法部門、學(xué)術(shù)機(jī)構(gòu)及全球各行業(yè)人士。
Volatility支持的操作系統(tǒng)版本
- 64-bit Windows Server 2016
- 64-bit Windows Server 2012 及2012 R2
- 32- and 64-bit Windows 10
- 32- and 64-bit Windows 8, 8.1, and 8.1 Update 1
- 32- and 64-bit Windows 7 (支持所有Service?Pack)
- 32- and 64-bit Windows Server 2008 (支持所有Service?Pack)
- 64-bit Windows Server 2008 R2 (支持所有Service?Pack)
- 32- and 64-bit Windows Vista (支持所有Service?Pack)
- 32- and 64-bit Windows Server 2003 (支持所有Service?Pack)
- 32- and 64-bit Windows XP (SP2 和?SP3)
- 32- and 64-bit Linux kernels (2.6.11 ~ 4.2.3)
- 32-bit 10.5.x Leopard (64-bit 10.5 Server尚未支持)
- 32- and 64-bit 10.6.x Snow Leopard
- 32- and 64-bit 10.7.x Lion
- 64-bit 10.8.x Mountain Lion
- 64-bit 10.9.x Mavericks
- 64-bit 10.10.x Yosemite
- 64-bit 10.11.x El Capitan
- 64-bit 10.12.x Sierra
Volatility支持的內(nèi)存鏡像格式
- 原始物理內(nèi)存鏡像格式
- 火線獲取內(nèi)存格式(IEEE 1394)
- EWF格式(Expert Witness)
- 32- and 64-bit Windows 崩潰轉(zhuǎn)儲文件(Crash Dump)
- 32- and 64-bit Windows 休眠文件?(Windows 7及早期版本)
- 32- and 64-bit MachO 文件
- Virtualbox Core Dumps
- VMware 保存狀態(tài)文件?(.vmss) 及快照文件(.vmsn)
- HPAK 格式 (FastDump)
- QEMU 內(nèi)存轉(zhuǎn)儲文件
在Windows系統(tǒng)平臺下,有兩種方式可以運(yùn)行Volatility工具。第一種是獨(dú)立安裝Python運(yùn)行環(huán)境,再下載Volatility源代碼執(zhí)行命令行。第二種為下載Volatility獨(dú)立Windows程序(無需另外安裝和配置Python環(huán)境)。最新Volatility版本為v2.6,可以通過官方網(wǎng)站進(jìn)行下載。
在Windows?64位平臺,最便捷的方式就是直接使用獨(dú)立Windows程序的Volatility版本。進(jìn)入管理員命令行模式,運(yùn)行volatility_2.6_win64_standalone.exe 程序即可。
Volatility常用命令行參數(shù)
- -h 查看相關(guān)參數(shù)及幫助說明
- –info 查看相關(guān)模塊名稱及支持的Windows版本
- -f?指定要打開的內(nèi)存鏡像文件及路徑
- -d?開啟調(diào)試模式
- -v?開啟顯示詳細(xì)信息模式(verbose)
由于幫助說明內(nèi)容太多,通??梢詫?nèi)容輸出為文本文件,方便隨時打開參數(shù)及模塊支持列表。
- volatility_2.6_win64_standalone.exe -h?> help.txt
- volatility_2.6_win64_standalone.exe –info > modules_list.txt
表格 1?Volatility支持的插件列表
插件名稱 | 功能 |
amcache | 查看AmCache應(yīng)用程序痕跡信息 |
apihooks | 檢測內(nèi)核及進(jìn)程的內(nèi)存空間中的API?hook |
atoms | 列出會話及窗口站atom表 |
atomscan | Atom表的池掃描(Pool scanner) |
auditpol | 列出注冊表HKLM\SECURITY\Policy\PolAdtEv的審計(jì)策略信息 |
bigpools | 使用BigPagePoolScanner轉(zhuǎn)儲大分頁池(big page pools) |
bioskbd | 從實(shí)時模式內(nèi)存中讀取鍵盤緩沖數(shù)據(jù)(早期電腦可以讀取出BIOS開機(jī)密碼) |
cachedump | 獲取內(nèi)存中緩存的域帳號的密碼哈希 |
callbacks | 打印全系統(tǒng)通知例程 |
clipboard | 提取Windows剪貼板中的內(nèi)容 |
cmdline | 顯示進(jìn)程命令行參數(shù) |
cmdscan | 提取執(zhí)行的命令行歷史記錄(掃描_COMMAND_HISTORY信息) |
connections | 打印系統(tǒng)打開的網(wǎng)絡(luò)連接(僅支持Windows XP 和2003) |
connscan | 打印TCP連接信息 |
consoles | 提取執(zhí)行的命令行歷史記錄(掃描_CONSOLE_INFORMATION信息) |
crashinfo | 提取崩潰轉(zhuǎn)儲信息 |
deskscan | tagDESKTOP池掃描(Poolscaner) |
devicetree | 顯示設(shè)備樹信息 |
dlldump | 從進(jìn)程地址空間轉(zhuǎn)儲動態(tài)鏈接庫 |
dlllist | 打印每個進(jìn)程加載的動態(tài)鏈接庫列表 |
driverirp | IRP hook驅(qū)動檢測 |
drivermodule | 關(guān)聯(lián)驅(qū)動對象至內(nèi)核模塊 |
driverscan | 驅(qū)動對象池掃描 |
dumpcerts | 提取RAS私鑰及SSL公鑰 |
dumpfiles | 提取內(nèi)存中映射或緩存的文件 |
dumpregistry | 轉(zhuǎn)儲內(nèi)存中注冊表信息至磁盤 |
editbox | 查看Edit編輯控件信息?(Listbox正在實(shí)驗(yàn)中) |
envars | 顯示進(jìn)程的環(huán)境變量 |
eventhooks | 打印Windows事件hook詳細(xì)信息 |
evtlogs | 提取Windows事件日志(僅支持XP/2003) |
filescan | 提取文件對象(file objects)池信息 |
gahti | 轉(zhuǎn)儲用戶句柄(handle)類型信息 |
gditimers | 打印已安裝的GDI計(jì)時器(timers)及回調(diào)(callbacks) |
gdt | 顯示全局描述符表(Global Descriptor Table) |
getservicesids | 獲取注冊表中的服務(wù)名稱并返回SID信息 |
getsids | 打印每個進(jìn)程的SID信息 |
handles | 打印每個進(jìn)程打開的句柄的列表 |
hashdump | 轉(zhuǎn)儲內(nèi)存中的Windows帳戶密碼哈希(LM/NTLM) |
hibinfo | 轉(zhuǎn)儲休眠文件信息 |
hivedump | 打印注冊表配置單元信息 |
hivelist | 打印注冊表配置單元列表 |
hivescan | 注冊表配置單元池掃描 |
hpakextract | 從HPAK文件(Fast Dump格式)提取物理內(nèi)存數(shù)據(jù) |
hpakinfo | 查看HPAK文件屬性及相關(guān)信息 |
idt | 顯示中斷描述符表(Interrupt Descriptor Table) |
iehistory | 重建IE緩存及訪問歷史記錄 |
imagecopy | 將物理地址空間導(dǎo)出原生DD鏡像文件 |
imageinfo | 查看/識別鏡像信息 |
impscan | 掃描對導(dǎo)入函數(shù)的調(diào)用 |
joblinks | 打印進(jìn)程任務(wù)鏈接信息 |
kdbgscan | 搜索和轉(zhuǎn)儲潛在KDBG值 |
kpcrscan | 搜索和轉(zhuǎn)儲潛在KPCR值 |
ldrmodules | 檢測未鏈接的動態(tài)鏈接DLL |
lsadump | 從注冊表中提取LSA密鑰信息(已解密) |
machoinfo | 轉(zhuǎn)儲Mach-O 文件格式信息 |
malfind | 查找隱藏的和插入的代碼 |
mbrparser | 掃描并解析潛在的主引導(dǎo)記錄(MBR) |
memdump | 轉(zhuǎn)儲進(jìn)程的可尋址內(nèi)存 |
memmap | 打印內(nèi)存映射 |
messagehooks | 桌面和窗口消息鉤子的線程列表 |
mftparser | 掃描并解析潛在的MFT條目 |
moddump | 轉(zhuǎn)儲內(nèi)核驅(qū)動程序到可執(zhí)行文件的示例 |
modscan | 內(nèi)核模塊池掃描 |
modules | 打印加載模塊的列表 |
multiscan | 批量掃描各種對象 |
mutantscan | 對互斥對象池掃描 |
notepad | 查看記事本當(dāng)前顯示的文本 |
objtypescan | 掃描窗口對象類型對象 |
patcher | 基于頁面掃描的補(bǔ)丁程序內(nèi)存 |
poolpeek | 可配置的池掃描器插件 |
printkey | 打印注冊表項(xiàng)及其子項(xiàng)和值 |
privs | 顯示進(jìn)程權(quán)限 |
procdump | 進(jìn)程轉(zhuǎn)儲到一個可執(zhí)行文件示例 |
pslist | 按照EPROCESS列表打印所有正在運(yùn)行的進(jìn)程 |
psscan | 進(jìn)程對象池掃描 |
pstree | 以樹型方式打印進(jìn)程列表 |
psxview | 查找?guī)в须[藏進(jìn)程的所有進(jìn)程列表 |
qemuinfo | 轉(zhuǎn)儲Qemu 信息 |
raw2dmp | 將物理內(nèi)存原生數(shù)據(jù)轉(zhuǎn)換為windbg崩潰轉(zhuǎn)儲格式 |
screenshot | 基于GDI Windows的虛擬屏幕截圖保存 |
servicediff | Windows服務(wù)列表(ala Plugx) |
sessions | _MM_SESSION_SPACE的詳細(xì)信息列表(用戶登錄會話) |
shellbags | 打印Shellbags信息 |
shimcache | 解析應(yīng)用程序兼容性Shim緩存注冊表項(xiàng) |
shutdowntime | 從內(nèi)存中的注冊表信息獲取機(jī)器關(guān)機(jī)時間 |
sockets | 打印已打開套接字列表 |
sockscan | TCP套接字對象池掃描 |
ssdt | 顯示SSDT條目 |
strings | 物理到虛擬地址的偏移匹配(需要一些時間,帶詳細(xì)信息) |
svcscan | Windows服務(wù)列表掃描 |
symlinkscan | 符號鏈接對象池掃描 |
thrdscan | 線程對象池掃描 |
threads | 調(diào)查_ETHREAD 和_KTHREADs |
timeliner | 創(chuàng)建內(nèi)存中的各種痕跡信息的時間線 |
timers | 打印內(nèi)核計(jì)時器及關(guān)聯(lián)模塊的DPC |
truecryptmaster | 恢復(fù)TrueCrypt 7.1a主密鑰 |
truecryptpassphrase | 查找并提取TrueCrypt密碼 |
truecryptsummary | TrueCrypt摘要信息 |
unloadedmodules | 打印卸載的模塊信息列表 |
userassist | 打印注冊表中UserAssist相關(guān)信息 |
userhandles | 轉(zhuǎn)儲用戶句柄表 |
vaddump | 轉(zhuǎn)儲VAD數(shù)據(jù)為文件 |
vadinfo | 轉(zhuǎn)儲VAD信息 |
vadtree | 以樹形方式顯示VAD樹信息 |
vadwalk | 顯示遍歷VAD樹 |
vboxinfo | 轉(zhuǎn)儲Virtualbox信息(虛擬機(jī)) |
verinfo | 打印PE鏡像中的版本信息 |
vmwareinfo | 轉(zhuǎn)儲VMware VMSS/VMSN 信息 |
volshell | 內(nèi)存鏡像中的shell |
windows | 打印桌面窗口(詳細(xì)信息) |
wintree | Z順序打印桌面窗口樹 |
wndscan | 池掃描窗口站 |
yarascan | 以Yara簽名掃描進(jìn)程或內(nèi)核內(nèi)存 |
查看系統(tǒng)進(jìn)程列表
volatility_2.6_win64_standalone.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 pslist
將進(jìn)程列表導(dǎo)出為txt文件
volatility_2.6_win64_standalone.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 pslist?> Win7_SP1_x86_pslist.txt
查看網(wǎng)絡(luò)通訊連接信息
volatility_2.6_win64_standalone -f Win7_SP1_x86.vmem –profile=Win7SP1x86 netscan
提取內(nèi)存中的注冊表信息
volatility_2.6_win64_standalone -f Win7_SP1_x86.vmem –profile=Win7SP1x86 dumpregistry
提取內(nèi)存中的MFT記錄信息
volatility_2.6_win64_standalone -f Win7_SP1_x86.vmem –profile=Win7SP1x86 mftparser
導(dǎo)出內(nèi)存中的MFT記錄數(shù)據(jù)
volatility_2.6_win64_standalone -f Win7_SP1_x86.vmem –profile=Win7SP1x86 mftparser –output-file=mftverbose.txt -D mftoutput
表格 2?Volatility常用命名參數(shù)及功能對照表
注:以下表格中用vol.exe替代volatility_2.6_win64_standalone.exe
功能 | 命令行及參數(shù) |
查看進(jìn)程列表 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 pslist |
查看進(jìn)程列表(樹形) | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 pstree |
查看進(jìn)程列表(psx視圖) | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 psxview |
查看網(wǎng)絡(luò)通訊連接 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 netscan |
查看加載的動態(tài)鏈接庫 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 dlllist |
查看SSDT表 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 ssdt |
查看UserAssist痕跡 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 userassist |
查看ShimCache痕跡 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 shimcache |
查看ShellBags | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 shellbags |
查看服務(wù)列表 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 svcscan |
查看Windows帳戶hash | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 hashdump |
查看最后關(guān)機(jī)時間 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 shutdowntime |
查看IE歷史記錄 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 iehistory |
提取注冊表數(shù)據(jù) | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 dumpregistry |
解析MFT記錄 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 mftparser |
導(dǎo)出MFT記錄 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 mftparser –output-file=mftverbose.txt -D mftoutput |
獲取TrueCrypt密鑰信息 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 truecryptmaster |
獲取TrueCrypt密碼信息 | Vol.exe -f Win7_SP1_x86.vmem –profile=Win7SP1x86 truecryptpassphrase |