王丹 丁兆錕 周鋒 趙燕
(南京拓界信息技術(shù)有限公司 江蘇省南京市 210014)
眾所周知,內(nèi)存是計(jì)算機(jī)的重要組成部分之一,在系統(tǒng)運(yùn)行時(shí)起到了關(guān)鍵的存儲(chǔ)作用。但內(nèi)存與硬盤等介質(zhì)存儲(chǔ)不同,其只有在計(jì)算機(jī)工作時(shí)進(jìn)行數(shù)據(jù)存儲(chǔ)。計(jì)算機(jī)一旦關(guān)機(jī),內(nèi)存中的所有數(shù)據(jù)將不再存在。因此,內(nèi)存取證又被稱為易失性數(shù)據(jù)提取。本文在研究和分析內(nèi)存取證方法及工具的基礎(chǔ)上,提出了基于動(dòng)態(tài)內(nèi)存讀取技術(shù)(DMA),通過(guò)主機(jī)主板外部或內(nèi)部的不同接口直接訪問(wèn)內(nèi)存,實(shí)現(xiàn)在不破壞內(nèi)存完整性的前提下,對(duì)內(nèi)存鏡像進(jìn)行提取的方法,并依據(jù)相關(guān)司法規(guī)定討論該方法的合法性。
從目前能夠查詢到的資源材料來(lái)看,計(jì)算機(jī)取證起源于1984年,而內(nèi)存取證作為計(jì)算機(jī)取證的一個(gè)分支直到2002年才被美國(guó)空軍特別調(diào)查辦公室的Kornblum 提出[1]。此后,Brain D.Carrier 和Joe Grand 于2004年在Digital Investigation 雜志發(fā)表《A hardwarebased memory acquisition procedure for digital investigations》對(duì)易失性數(shù)據(jù)提取的可行性進(jìn)行了分析[2]。2005年,DFRWS 發(fā)起了一場(chǎng)數(shù)字挑戰(zhàn)賽,從而拉開了內(nèi)存取證技術(shù)研究的大幕。眾多學(xué)者開始關(guān)注內(nèi)存取證。綜合當(dāng)前的研究成果來(lái)看,內(nèi)存取證主要集中在兩個(gè)方面:
(1)物理內(nèi)存提取;
(2)虛擬內(nèi)存提取。
物理內(nèi)存提取是當(dāng)前學(xué)者研究比較多的方向,也是物理磁盤取證與內(nèi)存取證不同的主要著眼點(diǎn)。PetroniJr N L,Walters A,F(xiàn)raser T,Zhang S,Wang L,Zhang R 等學(xué)者都先后對(duì)內(nèi)存取證提出了自己的方法及研究成果。同時(shí),美國(guó) Guidance Software 公司、美國(guó)AccessData 公司、韓國(guó) FinalData 公司、德國(guó) X-Ways software 公司等公司也先后利用多種方法制作了內(nèi)存提取工具。基于對(duì)這些研究搜索發(fā)現(xiàn),物理內(nèi)存取證的方法主要集中的三個(gè)方面:
1.1.1 利用硬件進(jìn)行物理內(nèi)存提取
這種方法主要是通過(guò)計(jì)算機(jī)外部硬件連接來(lái)完成對(duì)計(jì)算機(jī)內(nèi)存的提取。如,Brian Carrier 和 Joe Grand 通過(guò)對(duì)計(jì)算機(jī)安裝 “Tribble”硬件擴(kuò)展卡的方式,來(lái)實(shí)現(xiàn)將物理內(nèi)存中的數(shù)據(jù)復(fù)制到外接存儲(chǔ)設(shè)備中進(jìn)行保存。再比如比較流行的 Volatility 開源工程。
1.1.2 利用應(yīng)用軟件進(jìn)行物理內(nèi)存提取
這種方法被應(yīng)用的較多,通過(guò)編寫程序完成一個(gè)軟件,利用該軟件對(duì)物理內(nèi)存進(jìn)行按地址獲取并記錄到物理存儲(chǔ)設(shè)備中。這種方法中,有的利用用戶模式的應(yīng)用程序達(dá)到讀取內(nèi)核內(nèi)存區(qū)對(duì)象的目的。但該方法常常受到算法及權(quán)限的影響,導(dǎo)致物理內(nèi)存提取不全或者失敗。如Dolan-Gavitt 曾經(jīng)借助VAD 樹算法來(lái)枚舉內(nèi)存進(jìn)程與線程信息,并存儲(chǔ)到物理設(shè)備中。有的利用內(nèi)核模式程序進(jìn)行內(nèi)存取證。這種方法可以有效解決系統(tǒng)權(quán)限等安全問(wèn)題引起的數(shù)據(jù)獲取難題,可以輕松繞過(guò)系統(tǒng)安全機(jī)制而完整獲取內(nèi)存空間對(duì)象。研究成果中,學(xué)者Betz 和Andreas 分別從Windows 2000 內(nèi)核數(shù)據(jù)結(jié)構(gòu)以及內(nèi)核進(jìn)程、線程結(jié)構(gòu)等角度提出了自己的方法,并制作成了MemParser 和PTFinder 工具。
1.1.3 利用系統(tǒng)休眠機(jī)制或者崩潰機(jī)制進(jìn)行內(nèi)存取證
(1)自從WindowsXP 開始支持ACPI Advanced Configurationand Power Interface 以來(lái),Windows 系統(tǒng)便有了系統(tǒng)休眠功能。該功能主要通過(guò)將將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)儲(chǔ)到硬盤上一個(gè)休眠文件來(lái)實(shí)現(xiàn)切斷系統(tǒng)供電不會(huì)導(dǎo)致數(shù)據(jù)丟失的目的。據(jù)此,有學(xué)者提出,如果在系統(tǒng)休眠的情況下,對(duì)硬盤上的休眠文件進(jìn)行提取,就可以達(dá)到內(nèi)存取證的目的。那么,如何在計(jì)算機(jī)斷電情況下,硬盤上的休眠文件提出來(lái),又不破壞計(jì)算機(jī)內(nèi)存數(shù)據(jù)呢?常用的方法可以通過(guò)計(jì)算機(jī)帶電折機(jī)的方法,將硬盤利用只讀硬盤復(fù)制機(jī)進(jìn)行拷貝。但這樣一來(lái),對(duì)內(nèi)存取證的技術(shù)要求便提高了很多,常常會(huì)因?yàn)椴僮魇д`而導(dǎo)致內(nèi)存損壞。所以在司法鑒定領(lǐng)域應(yīng)用并不多。
(2)利用系統(tǒng)崩潰機(jī)制進(jìn)行內(nèi)存提取,Garner 和 Mora 團(tuán)隊(duì)通過(guò)逆向分析 Windows 2000 崩潰轉(zhuǎn)儲(chǔ)文件的重要內(nèi)核數(shù)據(jù)結(jié)構(gòu)發(fā)現(xiàn),操作系統(tǒng)崩潰時(shí)記錄下來(lái)的當(dāng)前系統(tǒng)狀態(tài)信息可以給內(nèi)存取證提供了便利,據(jù)此還開發(fā)了內(nèi)存取證工具 KNTList。這種方法與休眠方法類似,雖然可以解決內(nèi)存取證問(wèn)題,但對(duì)內(nèi)存取證人員的技術(shù)要求過(guò)高。首先,技術(shù)人員要清楚的知道崩潰文件的存儲(chǔ)位置;其次,技術(shù)人員要能夠精確的控制系統(tǒng)崩潰;最后還要實(shí)現(xiàn)將崩潰文件拷貝到指定存儲(chǔ)設(shè)備中。有一個(gè)環(huán)節(jié)出了問(wèn)題,都會(huì)導(dǎo)致系統(tǒng)內(nèi)存數(shù)據(jù)損失。
通過(guò)對(duì)計(jì)算機(jī)存儲(chǔ)介質(zhì)的虛擬化,實(shí)現(xiàn)對(duì)內(nèi)存的管理和利用是虛擬內(nèi)存的重要作用。頁(yè)交換文件是虛擬內(nèi)存的一個(gè)重要特征,其中包含有某些進(jìn)程的部分信息,因此2008年James M 等學(xué)者就提出要對(duì)這部分信息的提取加以重視。經(jīng)過(guò)資料檢索發(fā)現(xiàn),從2008年以來(lái),雖然學(xué)者們對(duì)頁(yè)交換文件作為取證的一部分并無(wú)太多異議,但真正的研究成果并不是很多。零星的一些方法包括利用注入簽名驅(qū)動(dòng)的方法進(jìn)行提取,利用文件系統(tǒng)直接提取等。
綜合物理內(nèi)存取證和虛擬內(nèi)存取證的調(diào)研成果來(lái)看,本文所研究的重點(diǎn)應(yīng)該屬于物理內(nèi)存取證范疇,因此對(duì)于虛擬內(nèi)存取證本文不做過(guò)多探討。在物理內(nèi)存取證方法中,DMA 技術(shù)提取內(nèi)存又是利用硬件進(jìn)行物理內(nèi)存提取的范圍,而且并非本文首次提出。PetroniJr N L 等人4 就提出使用FireWire 設(shè)備進(jìn)行物理內(nèi)存提取的方法,該方法就是利用了DMA 技術(shù),但這一技術(shù)一直無(wú)法完全解決系統(tǒng)藍(lán)屏死機(jī)或者丟失部分內(nèi)存信息等問(wèn)題。本文繼續(xù)對(duì)這一技術(shù)進(jìn)行研究,力爭(zhēng)找到一條穩(wěn)定、可靠且符合司法鑒定要求的物理內(nèi)存提取方法。
DMA 技術(shù)又稱為直接內(nèi)存存取技術(shù)。它可以利用DMA 控制器直接與系統(tǒng)內(nèi)存進(jìn)行讀寫,而不需要依賴于計(jì)算機(jī)CPU。正是因?yàn)檫@一特性,使得利用此技術(shù)對(duì)內(nèi)存直接讀取并寫入外部存儲(chǔ)器成為可能。
利用 DMA(direct memory access,直接內(nèi)存訪問(wèn))指令去獲取物理內(nèi)存,同樣可以完全內(nèi)存取證工作。在獲取物理內(nèi)存時(shí),目標(biāo)系統(tǒng)的CPU 將暫停,以避免因操作系統(tǒng)的執(zhí)行而改變內(nèi)存數(shù)據(jù)。基于DMA 技術(shù)進(jìn)行內(nèi)存取證,需要有DMA 控制器,利用控制器,通過(guò)PCI、IEEE 1394 火線以及雷電等接口與目標(biāo)主機(jī)連接,從而利用程序控制內(nèi)存提取。具體步驟如下:第一步,將DMA 控制器通過(guò)PCI、IEEE 1394 火線以及雷電等接口與目標(biāo)主機(jī)連接。第二步,通過(guò)仲裁器協(xié)調(diào)DMA 請(qǐng)求的優(yōu)先權(quán),等等目標(biāo)主機(jī)回應(yīng)。第三步,對(duì)目標(biāo)主機(jī)的內(nèi)存進(jìn)行提取。
采用這類方法的優(yōu)點(diǎn)是,在基于Intel 架構(gòu)的操作系統(tǒng)(Windows,Linux,Mac OS 等)中,都可以利用該方法獲取物理內(nèi)存;同時(shí)DMA 方式能夠在不干擾操作系統(tǒng)和 CPU 的情況下,較為準(zhǔn)確地獲取物理內(nèi)存。但該方法也存在一些兼容性缺點(diǎn)。由于需要有硬件設(shè)備插入目標(biāo)主機(jī)主板中,受目標(biāo)主機(jī)形態(tài)的影響,很可能會(huì)導(dǎo)致硬件環(huán)境不滿足,從而內(nèi)存取證失敗。
在實(shí)際工作場(chǎng)景中,內(nèi)存存在很多其他類型的密碼信息,比如系統(tǒng)密碼,第三方加密工具的密鑰信息,部分應(yīng)用程序,如微信,QQ 等的數(shù)據(jù)庫(kù)密鑰信息。因此,在動(dòng)態(tài)讀取內(nèi)存技術(shù)的基礎(chǔ)上,進(jìn)一步研究其他類型的密鑰在內(nèi)存中的特征,找到第三方加密工具或社交軟件數(shù)據(jù)庫(kù)的加密方式,獲取解密數(shù)據(jù)庫(kù)的密鑰值,從而分析出更多的密鑰信息。
傳統(tǒng)獲取內(nèi)存的方式是基于軟件的內(nèi)存獲取,但該種方式往往需要運(yùn)行特定的程序來(lái)實(shí)現(xiàn),而外部程序一旦在內(nèi)存中運(yùn)行,就會(huì)破壞部分內(nèi)存信息,導(dǎo)致獲取的動(dòng)態(tài)內(nèi)存數(shù)據(jù)不準(zhǔn)確。本課題研究是基于硬件的內(nèi)存獲取,利用 DMA 指令直接獲取物理內(nèi)存。因此,相對(duì)于傳統(tǒng)的軟件內(nèi)存獲取方式,其優(yōu)點(diǎn)在于,獲取物理內(nèi)存時(shí),能夠避免取證軟件造成的內(nèi)存數(shù)據(jù)變化,從而保證目標(biāo)系統(tǒng)內(nèi)存信息的完整性與一致性,實(shí)現(xiàn)在不干擾操作系統(tǒng)和 CPU 的情況下,較為準(zhǔn)確地獲取物理內(nèi)存數(shù)據(jù),為進(jìn)一步取證分析工作提供必要條件。
內(nèi)存取證在司法取證中被稱為易失數(shù)據(jù)取證,在相關(guān)的司法規(guī)定中有明確的取證要求。
(1)符合電子數(shù)據(jù)取證原則。《電子數(shù)據(jù)司法鑒定通用實(shí)施規(guī)范》SF/Z JD0400001-2014 中明確規(guī)定了電子數(shù)據(jù)鑒定基本原則,包括原始性原則、完整性原則、安全性原則、可靠性原則、可重現(xiàn)原則、可追溯原則以及及時(shí)性原則。基于DMA 技術(shù)的內(nèi)存取證方法利用外部設(shè)備進(jìn)行內(nèi)存提取,首先保證了被取證設(shè)備內(nèi)存的完整性和原始性,同時(shí)該方法具有安全、可靠以及可重現(xiàn)等特點(diǎn),能夠符合電子數(shù)據(jù)鑒定基本原則的規(guī)定。
(2)符合電子數(shù)據(jù)證據(jù)獲取規(guī)范。《電子數(shù)據(jù)證據(jù)現(xiàn)場(chǎng)獲取通用規(guī)范》SF/Z JD0400002——2015 中明確規(guī)定了易丟失數(shù)據(jù)的提取和固定步驟,同時(shí)提出了利用計(jì)算電子數(shù)據(jù)和存儲(chǔ)介質(zhì)的完整性校驗(yàn)值進(jìn)行完整性校驗(yàn)。從取證方法上來(lái)看,基于DMA 技術(shù)的內(nèi)存取證方法能夠滿足該規(guī)范要求。
(3)多種取證方法的原則性比較,如表1所示,通過(guò)與休眠文件、崩潰轉(zhuǎn)儲(chǔ)等方法進(jìn)行比較發(fā)現(xiàn),本文中提出的方法具有一定的可操作性和可靠性,便于在司法鑒定過(guò)程中進(jìn)行實(shí)施。

表1:多種取證方法原則性比較
內(nèi)存取證技術(shù)是當(dāng)前計(jì)算機(jī)取證技術(shù)的重要組成部分,也是目前取證領(lǐng)域的研究熱點(diǎn),本文從動(dòng)態(tài)內(nèi)存讀取技術(shù)原理的角度出發(fā),通過(guò)利用Windows 主機(jī)中的雷電3、Express Car 等接口,結(jié)合動(dòng)態(tài)內(nèi)存讀取技術(shù),有效地進(jìn)行內(nèi)存固定與提取,同時(shí)針對(duì)易失數(shù)據(jù)證據(jù)固定中的相關(guān)規(guī)范文件,對(duì)該方法從取證原則到方法步驟進(jìn)行對(duì)比,符合司法鑒定的相關(guān)要求。