錢 勤,董步云,唐 哲,伏 曉,茅 兵
(1.江蘇省高級人民法院技術處,南京 210093;2.南京大學a.軟件學院;b.計算機軟件新技術國家重點實驗室,南京 210093)
隨著計算機的普及以及網絡的廣泛應用,越來越多的計算機犯罪開始出現并且嚴重影響到社會安全。據統(tǒng)計,在2009年全球有超過336000次報道是關于各種各樣的計算機犯罪,比如網上詐騙、身份盜用和經濟間諜活動[1]。每年由于計算機犯罪給企業(yè)帶來的損失多達數千萬美元[2]。因此,計算機取證變得尤為重要,重構入侵計算機的行為和找到相關證據不僅可以懲戒犯罪分子,還能幫助企業(yè)和國家挽回很多經濟損失。
傳統(tǒng)的計算機取證證據獲取和分析方法大多數針對系統(tǒng)的持久化數據,比如計算機磁盤、硬盤上的數據,然而對于存儲在計算機RAM中的信息,以往的方法經常忽略或回避。隨著計算機硬盤的容量不斷增長,加密技術的發(fā)展和廣泛應用,想要及時地分析獲取到的存儲介質鏡像需要花費大量的精力。而且由于惡意程序的不斷發(fā)展,獲取的存儲介質鏡像中往往會有惡意程序,這樣通過分析帶有惡意程序的存儲介質鏡像得到的結果也是不正確的。因此在2005年的DFRWS取證挑戰(zhàn)中,開始出現了對于系統(tǒng)臨時的與狀態(tài)相關的信息恢復研究[3]。
從2005年至今,計算機取證領域發(fā)展迅速,已經出現了各種各樣的內存獲取和分析的方法,然而許多方法都是針對特定版本的操作系統(tǒng),并且還要在特定的環(huán)境中才能工作,這給取證工作中選取方法帶來不便。另外,這些方法的準確性和可靠性還無法證實,在計算機取證領域需要對目前所有主要的內存獲取和分析方法進行總結和分析。
本文主要對目前主流的內存獲取、分析的方法以及內存取證過程進行全面的分析和比較。對那些基于Windows操作系統(tǒng)的內存獲取和分析的方法進行研究。
在Windows操作系統(tǒng)中,每個進程都有自己的私有虛擬地址空間。在一個32位的平臺上,虛擬地址空間最多可以達到4 GB。一般用戶進程默認有2 GB的虛擬地址空間,另外一半地址空間是保留給系統(tǒng)使用的。Windows x86的32位操作系統(tǒng)內存地址空間分布如圖1所示。
圖1 內存地址空間分布
Windows操作系統(tǒng)采用頁式內存管理,也就是說虛擬地址空間是按頁來管理的,對應于物理內存也按頁來管理。在虛擬地址空間中連續(xù)的頁面對應于在物理內存中的頁面可以不必連續(xù)。在每個虛擬地址32位信息中,其中一部分位信息指定了一個物理頁面,其余的位信息則指定了頁內的偏移量,即虛擬地址分成了2個部分:頁索引+頁內偏移。32位虛擬地址中頁索引部分分成頁目錄索引(10位)和頁表索引(10位)2個部分。基于這樣的虛擬地址構成,每個虛擬地址空間對應一個頁目錄,其中包含1024個頁目錄項;每個頁目錄項指向一張包含1024項的頁表。在解析一個虛擬地址時,首先根據最高10位在頁目錄中定位到一個頁目錄項,它指向一個頁表。然后根據接下來的10位在頁表中定位到一個頁表項,該頁表項指定了目標頁面的物理地址。最后再在該物理地址的基礎上加上頁內偏移,即得到最終的物理地址。具體解析過程如圖2所示[4]。
圖2 x86的32位虛擬地址的解析過程
取證分析需要有一個規(guī)范化的過程才能使得取證所得證據能被法官所認可,成為真正的證據。計算機取證過程通常需要遵循3個原則:獲取證據時保證完整性;鑒別收集到的數據有效性確保這些數據和原始一樣;分析數據的同時保持數據完整性[5]。從很早開始就有很多組織開始討論和研究計算機取證及其標準和準則[6],比如國家司法協會(NIJ)?,F有的取證過程模型亦是圍繞這3個原則,目前較為權威的取證過程模型包括美國司法部(DOJ)的取證過程模型[7]、抽象電子取證模型[8]、綜合的電子調查模型(IDIP)[9]。除了各種取證模型,各種研究犯罪的組織比如英國司法部門(ACPO)[10]、國際評估合作組織(IOCE)[11]、國際計算機調查專家(IACIS)[12]也紛紛提出基于計算機電子取證的原則和指導方案。
美國司法部門在電子犯罪調查中提出了取證過程模型,包括了4個階段:收集,檢查,分析,報告。抽象電子取證模型則提出一個標準的電子取證過程包含9個組成部分:鑒別,準備,制定方法策略,保護,證據收集,檢查,分析,展示,歸還證據。綜合電子調查模型(IDIP)由5個部分17階段組成,它集合了早期的模型,使得模型能夠完整地描述取證過程,但由于過程十分復雜,有效過程在時間操作中無法實現。改善的電子調查過程模型則改正了綜合電子調查模型的一些缺點(EIDIP)[13],如圖3所示。
圖3 改善的電子調查過程模型
數字取證從出現到現在不過十多年的事,而從2005年DFRWS起內存取證才真正開始發(fā)展起來,在2005年之后各種各樣的內存取證技術開始不斷出現,但目前尚無專門針對內存取證的取證模型。內存取證過程一般是遵循數字取證的基本模型進行。在內存取證過程中,內存鏡像的收集、獲取和對獲取數據的分析是關鍵步驟,已有的研究工作也主要集中于這2個方面,對其他步驟的關注很少。因此,下文將主要針對這2類方法進行綜述。
內存獲取方法常被研究者分為基于硬件和基于軟件2種。但是由于缺乏對基于硬件和基于軟件的準確定義,因此最近出現的許多內存獲取方法很難定義為哪種。按內存獲取方法是否依賴操作系統(tǒng),是否使用操作系統(tǒng)提供的API進行分類。
首次嘗試獲取內存鏡像用于取證工作的是使用一種特殊硬件——Tribble進行直接內存獲取(DMA)[14]。由于Tribble使用了 DMA 技術,因此此方法不依賴于現有操作系統(tǒng)的結構和功能。Tribble使用的時候需要像專用的PCI設備那樣安裝在計算機上,然后它就能把內存中信息保存到一個外部的存儲設備。
另外有2個類似的使用特殊硬件芯片進行內存獲取的是“Copilot”[15]和“FRED”[16]。
在PCI芯片出現的同時,還有另外一種硬件技術同PCI芯片類似,也能進行內存獲取。這種技術使用IEEE1394總線,其中一個例子是PCMCIA總線,使用 DMA 操作[17]。
隨著虛擬化技術的發(fā)展和使用,使用虛擬機的服務器和計算機越來越多。通過虛擬機人們能模擬完整的完全隔離的可靠的系統(tǒng)環(huán)境。虛擬機的優(yōu)點是可以暫停,將系統(tǒng)掛起,這樣虛擬機中的操作系統(tǒng)的狀態(tài)就被凍結,這一時刻的虛擬內存就可以保存到主機硬盤上了[18]。目前使用最為廣泛的虛擬機是VMware,VMware的所有內存信息都保存在一個.vmem文件上。通過分析這個文件就能進行取證工作。
最近隨著硬件技術的提高,有一種冷啟動的方法基于易失性的信息在計算機斷電后并不會立即擦除,仍然可以在一個短時間內恢復的特點[19]。通過人工降溫RAM模塊,比如使用液氮,可以使這些易失性的信息保留時間延長。然后就能通過一個定制的內核進行冷啟動來獲取保留的內存信息。
在對內存取證進行研究的初期,最先想到的應該就是使用某個軟件來獲得計算機的內存。目前內存獲取方法中最常使用的也是通過某個內存獲取軟件來獲得內存dump。
著名的Data-Dumper(DD)就是一個在用戶級別通過軟件方法獲取內存的一個工具,是Forensic Acquisition Utilities的一部分[20]。
由于使用DD保存整個內存既大又花費大量時間,因此在Data-Dumper之后又產生了各種保存單個進程地址空間的軟件,比如 PMDump[21],Process Dumper[22]。這些工具能夠得到單一進程的內存內容、進程的環(huán)境和狀態(tài)信息,并保存到一個文件。
為了減少在用戶級別獲取內存時的限制,許多內核級別的應用程序出現。內核級別的免費的程序有 Mantech ’s MemoryDD[23],Windows Memory Toolkit[24]和 Memoryze[25]。
除了一些可以不考慮操作系統(tǒng)的硬件設備外,還有一些針對特定操作系統(tǒng)的內存獲取方法。
在的Sun Solaris系統(tǒng)中有一種叫OpenBoot的中間件,OpenBoot可以使用Sparc結構獲取物理內存[26]。
許多Unix操作系統(tǒng)有一個進程偽文件系統(tǒng),它一般存放在/proc/下,保存著內核和運行進程的信息。因此,備份該文件系統(tǒng)即可得到內存?zhèn)浞?。不同Unix操作系統(tǒng)結構可能不同,但大部分都有類似的目錄結構和功能。
在Windows操作系統(tǒng)中所有Windows2000及以上的版本都可以通過配置記錄debug信息,也就是內存dump文件。在系統(tǒng)崩潰的情況下,系統(tǒng)狀態(tài)被凍結,內存和CPU相關信息保存到系統(tǒng)根目錄下為下次啟動做檢查。dump文件保存了計算機處理器當時的內容以及系統(tǒng)的一些狀態(tài),這些文件可以通過微軟官方提供的Microsoft Debugging Tools for Windows打開或人工分析[27]。將這項技術應用到內存取證上可以使用第三方應用程序或內置的CrashOnCtrlScroll的功能[28]。當然這個功能默認是關閉的,需要通過修改注冊表內容將其開啟。
Windows除了有crash功能還有一個休眠功能,能將內存數據與會話保存至硬盤,以便計算機斷電重新啟動后可以快速恢復會話所需的內存鏡像文件,存放在操作系統(tǒng)安裝的根目錄下[29]。當系統(tǒng)即將進入休眠模式,系統(tǒng)狀態(tài)會被凍結,系統(tǒng)會話和狀態(tài)信息會被保留。
文獻[30]設想了一個叫做Body-Snatcher的應用程序。這個程序能夠注入一個獨立的操作系統(tǒng)到計算機的內核,通過凍結計算機的狀態(tài),只靠注入的操作系統(tǒng)提供的函數可以得到一個可靠的內存。
目前計算機取證領域還沒有一個標準的評估準則來評估不同的獲取方法。文獻[31]首次提出了評估這些方法的3個重要指標,即真實性、可靠性和可用性。真實性要求得到的內存鏡像必須是原計算機內存的一個精確拷貝??煽啃砸筮@個獲取技術不能很容易地被反取證工具攻破??捎眯源砹诉@個方法適用于任意環(huán)境的適用程度。
之后又總結了一個初步的評估內存獲取方法的評估框架。這個評估框架基于2個指標:原子性和可用性。原子性用于度量真實性。但是,由于這個初步的框架對于這2個指標描述得不夠清楚,并未成為計算機取證領域公認的評估準則。
文獻[32]提出了4個評估獲取的內存鏡像質量好壞的標準,即正確性、完整性、速度和干擾程度。類似地,文獻[33]定義了3個評估內存鏡像的因素:正確性,原子性和完整性。
以上各種內存獲取方法各有各的特點,有些能支持所有操作系統(tǒng),但有些只針對特定的操作系統(tǒng);有些可靠性較高較安全,有些易受到惡意程序攻擊;有些能獲得完整的內存,但有些獲取的內存已經被修改了。因此,從可靠性、完整性、原子性和可用性這4個維度對以上各種方法進行了比較,并使用高、中、低進行比較,如表1所示。
表1 內存獲取方法比較
不依賴操作系統(tǒng)及其API的方法由于不使用操作系統(tǒng)提供的任何功能,因此不易受到隱藏在計算機中惡意程序的攻擊,這類方法可靠性比較高。另外這類方法在獲取內存時會把原操作系統(tǒng)掛起,因此,獲取操作是原子的,并且獲得的內存沒有被改變。但是由于這類方法需要預先將取證硬件或虛擬機安裝在計算機上,而這在取證調查過程中往往是很難做到的,因此這類方法應用范圍比較窄,可用性不好。僅針對特定操作系統(tǒng)的方法由于也不使用操作系統(tǒng)提供的API,因此可靠性也很高。但這類方法只適用于某類特定操作系統(tǒng),可用性很低,并且這些方法一般使用操作系統(tǒng)內置的某些功能(例如休眠),獲得的內存不完全。依賴操作系統(tǒng)及API的方法易受到惡意程序的攻擊,可靠性沒前2種高,但這種方法只需要在受到攻擊的計算機上安裝某個小軟件就能實現,可用性較高,獲得的內存也較為完整(盡管安裝過程會影響內存,但影響通常不大)。
在內存被獲取后就需要進一步對這些數據進行分析。內存分析方法多種多樣,可以按分析對象進行分類也可以按分析技術進行分類。本文按分析技術將內存分析方法分為基于字符串搜索、基于內存掃描、基于特征和基于操作系統(tǒng)內核關鍵數據結構的方法。
最初分析內存數據的方法便是使用命令行工具進行字符串搜索[34],或者使用能打開二進制文件的Winhex軟件進行字符串搜索。這種技術可以搜索一些已知的關鍵信息詞,比如用戶名、密碼。同時為了查詢犯罪記錄,也能搜索那些可能是攻擊行為的詞匯,比如色情圖片。
除了簡單的字符串搜索,對于計算機狀態(tài)的分析也能使用搜索方法。計算機命令行保存著計算機許多寶貴的狀態(tài)信息,通過搜索一些有名的命令或搜索存儲命令行歷史的數據結構的簽名能對計算機狀態(tài)進行分析。
文獻[35]中描述了一個線性內存掃描的技術,這是一種暴力破解的方法,逐個字節(jié)地掃描整個內存,然后使用可能的一塊數據作為密鑰進行破解。
文獻[36]提出了一個基于特征的掃描器。它使用一系列的規(guī)則來精確描述系統(tǒng)進程或線程的結構。掃描器的結果可以用來和標準的進程列表作對比。如果有不同,則能證明惡意程序的存在。
除了可以根據進程數據結構的特征進行掃描獲得進程列表,還有些加密技術也利用了特征將密碼緩存在偏移量為0x417處[37-38]。這樣加密密鑰恢復只需掃描這個偏移量特征就能恢復加密密鑰。
文獻[39]提出了掃描操作系統(tǒng)中不會被換出的池(non-paged pool)來找到監(jiān)聽socket的分配。算法基于一個池標記TCPA和一個預先定義好的池大小。一旦鑒別到可能的地址,socket列表就能創(chuàng)建,獲得打開的網絡連接列表。
操作系統(tǒng)內核關鍵數據有很多,其中對于取證最重要也最有用的就是進程結構EPROCESS?;贓PORCESS早期的方法從_EPROCESS結構的ActiveProcessLinks出發(fā)依次獲得系統(tǒng)中的運行進程。其中,Windows Memory Forensics Toolkit(WMFT)就是使用這樣的方法列舉出進程列表。Memparser同樣使用這樣的方法,并可以dump進程的內存。
但是之后研究發(fā)現一些惡意程序使用一種叫做DKOM的方法可以將進程自己從ActiveProcessLinks的鏈表上刪除,如圖4所示[40]。因此,循環(huán)獲得進程列表的方法可能不可靠,無法找到那些使用DKOM的惡意進程。
2009年,一個結合了掃描技術和鏈表遍歷技術的方法被提出[41]。這個方法基于 KPCR(Kernel Processor Control Region)。通過這種方法能有效地避免DKOM獲得完整的進程列表。
圖4 DKOM方法示意圖
EPROCESS結構中還有對于系統(tǒng)進程狀態(tài)的一些信息。其中,StartTime和ExitTime屬性表示了進程開始和結束的時間,可以用來創(chuàng)建取證的時間線。另外EPROCESS結構中有一個內核進程塊KPROCESS,其中包含了一個應用程序在系統(tǒng)和用戶模式下的一些狀態(tài)信息。這類數據可能在程序終止24小時之后還能恢復,因此,應該對于這些狀態(tài)信息特別關注。EPROCESS結構中的Token成員還能幫助恢復安全上下文(security context),安全上下文描述了與進程相關的權限、賬號和組。
除了用于進程分析的EPROCESS結構,在面對加密技術的發(fā)展以及廣泛使用的今天,還能從內存中的一些保存master key的數據結構來對加密密鑰進行恢復。在2009年通過研究密鑰產生的算法(key schedule)并解析某些內存數據結構也能獲得密鑰信息。
Windows系統(tǒng)的注冊表是一個集中的以層次結構管理系統(tǒng)配置信息的數據庫,它是由一系列hive組成的。分析內存中hive的信息能獲得系統(tǒng)的一些寶貴信息[42]。Hive分析類似虛擬地址到物理地址的機制,如圖5所示。
圖5 注冊表分析
2010年,文獻[43]找到了2個在 tcpip.sys驅動文件中的散列表:_AddrObjTable,TCBTable。每個散列表有一個保存著IP地址和端口綁定的列表的指針。遍歷這個列表就能獲得存在的socket和打開的網絡連接,具體如圖6所示。
進程環(huán)境塊(PEB)是進程的一部分,可以作為分析進程文件的工具。它有一個Ldr成員和3個雙向列表,里面保存著所有裝載的dll的名字、大小和基地址,遍歷每個單獨的列表就能鑒別是否有dll注入的攻擊[44]。
圖6 網絡分析
分析文件和dll的最主要方法是基于VAD的方法[45]。VAD是一個內核數據結構,由內存管理器維護,用于跟蹤分配的內存。它存儲著分配內存的開始和結束的地址信息以及訪問(access)和描述符(descriptor)標記。VAD樹上的每一個節(jié)點都有一個池標記,類型是 VadS,Vad或 Vadl。Vad和 Vadl這2種類型的節(jié)點有一個指向_Control_Area的結構。_Control_Area結構指向保存著文件名和其他文件信息的_File_Object對象,如圖7所示。獲取所有的文件對象就能通過從上到下遍歷VAD樹實現[46]。
圖7 VAD樹
在2010年,研究者發(fā)現另外一個重要數據結構DOSKEY整合在命令行shell里,可以編輯過去命令和展示命令的歷史記錄[47]。
隨著內存取證的發(fā)展,內存分析技術越來越多。面對內存獲取獲得的不同內存鏡像需要選擇合適的內存分析技術才能有效準確地進行分析得到想要的結果。因此,需要對以上各種類型內存分析方法進行比較。使用可靠性、可用性、準確性三方面來對以上分析方法進行比較,如表2所示。
表2 內存分析方法比較
基于字符串搜索的方法可以在各類場景中使用,可用性很高。這種搜索粒度比較粗,獲得結果包含了大量的噪音,準確性很低,但可靠性很高。基于掃描的方法準確性和可靠性同第一種,并且它只能適用于某些在內存中以線性方式存儲的信息,可用性也很低?;跀祿Y構特征的方法采用了某些數據結構的一些特點來找到它們,準確性較高,不會有偏差,但可用性也因此不是很高?;诓僮飨到y(tǒng)關鍵數據結構的方法由于找到操作系統(tǒng)中某些有用的數據結構無論可靠性,還是準確性、可用性都比較高。
隨著內存取證領域的發(fā)展以及各種內存獲取分析技術的出現,各種各樣的內存取證工具應運而生。盡管各式各樣的內存取證工具各有特點,但所有的內存取證工具都有一個共同問題——操作系統(tǒng)的限定。由于操作系統(tǒng)版本的變化,內存中一些對于取證關鍵的數據結構也會有相應的變化。雖然有時這些變化很小,但是一個很小的地址變化就會導致那些硬編碼地址的程序運行錯誤。所以在開始取證工作前有必要了解各種內存取證工具的特點以及限制,這樣才能靈活運用各種工具達到目的。以下將分內存獲取工具和內存分析工具進行介紹。
內存獲取早期經常使用一些硬件工具來實現,比較著名的有“Tribble”。這些不依賴操作系統(tǒng)的工具在早期能很有效地獲取內存,但隨著計算機各種技術的發(fā)展一些早期的方法性能上產生了很大問題。后來有很多內存獲取軟件出現,這些軟件能比較容易地獲取內存。
最為有名的內存獲取軟件就是Data-Dumper(DD)。DD在開發(fā)初期是一個用戶級別的工具,后來又開發(fā)了內核級別的KntDD,能夠避免用戶級別的各種限制,提高了效率。其他類似DD的內存獲取工具還有:PMDump,Process Dumper和Memoryze。
另外,現在網絡上還能找到各種各樣的免費的內存獲取小工具,這些工具能夠十分容易地獲取內存,比如 DumpIt[48]。
在最初研究內存取證的階段使用的工具主要功能是打開二進制文件,可以查看具體地址信息的所在地址的內容,比如 WinHex[49]。WinHex可以打開內存dump文件并查看相應的地址和內容,這樣只要在其中進行字符串搜索就能找到想要的內容。
除了最基本的WinHex外微軟公司還提供了用于Windows操作系統(tǒng)的debug工具(Microsoft Debugging Tools for Windows)。Windows debug工具是一個包含了一系列各種功能的工具集,其中某些小工具能十分簡便的幫助人們進行取證工作,比如打開Windows崩潰的dump文件??梢栽趯indows操作系統(tǒng)的取證過程中使用它進行前期的工作。
內存分析工具更多的是各國取證研究者開發(fā)的一些工具,在 Linux中比較有名的有 Forensix[50]和Backtracker,在這里不作過多介紹。在Windows中,前期針對進程分析產生了很多工具,比如Windows Memory Forensics Toolkit(WMFT)、Memparser。這些工具都能通過遍歷進程結構獲得進程列表。之后的研究者由于發(fā)現DKOM技術又開發(fā)了一些新的能夠解決DKOM 的工具,比如Kntlist和PTFinder。
在2008年,內存取證領域有了一定的發(fā)展并出現了一個集合了其他各種內存取證工具的取證框架工具 Volatility[51]。Volatility是一個開源的內存取證分析框架,包含了一些由Python寫的核心模塊,提供了一些基本功能,比如列出進程列表。Volatility各項功能都是由插件實現的,各地的取證研究者可以根據自己的需要開發(fā)Volatility的插件。
如今取證分析工具越來越多,在取證工作中需要根據具體情況選擇合適的取證工具。使用可用性、準確性和可靠性來對內存獲取和分析工具進行比較,如表3和表4所示。
表3 內存獲取工具比較
表4 內存分析工具比較
內存獲取工具Tribble需要預先安裝在計算機上,可用性較低。DD系列工具和一些類似DD的用于單個進程內存獲取的工具各方面都比較好,應該采用。DumpIt這類免費的小工具使用十分方便,但可靠性和準確性都不能保證。
內存分析工具WinHex是一個可以打開內存dump的工具,但由于沒有專門針對分析的功能,因此準確性較低。Windows的debug工具相對有更多的功能,準確性也有所提高,但這類工具只能在Windows操作系統(tǒng)上使用。WMFT等是早期的分析進程的工具,由于DKOM技術的發(fā)現,因此可靠性和準確性都不是很高。但之后的PTFinder等解決了DKOM的問題因此各方面都很好。Volatility是最近的一個內存分析框架,結合了各類分析工具的特點并且開源可擴展,是目前較為全面的內存分析工具。
內存取證從2005年開始發(fā)展到現在出現了各種各樣的工具以及獲取和分析的方法。盡管已有不少有價值的工作,但目前內存取證技術還不夠成熟,未來需要研究的問題很多。目前取證領域大部分獲取或分析方法都依賴于特定版本的操作系統(tǒng)。如何能設計出完全不依賴于操作系統(tǒng)的方法值得研究者關注。內存取證過程如果有很多人工干預的話,不僅對取證研究者能力要求很高而且耗時易錯。這就要求內存取證方法能夠盡可能實現自動化,這樣不僅節(jié)省了人力還提高了效率?,F有的內存取證方法在這方面還需要進一步加強。目前內存取證的很多工具都只是針對內存中某一類型對象進行獲取分析,未來內存取證需要一個能夠恢復和分析內存中全部對象的完整內存取證框架,并且在內存取證模型方面也值得研究者做進一步研究。
[1]Vomel S,Freiling F C.A Survey of Main Memory Acquisition and Analysis Techniques for the Windows Operating System[J].Digital Investigation,2011,8(1):3-22.
[2]Computer Security Institute.14th Annual CSI Computer Crime and Security Survey[EB/OL].(2009-12-05).http://www.personal.utulsa.edu/~ james-childress/cs5493/CSISurvey/CSISurvey2009.pdf.
[3]DFRWS.DFRWS 2005 Forensics Challenge[EB/OL].(2005-05-14).http://www.dfrws.org/2005/challenge.
[4]潘愛民.Windows內核原理與實現[M].北京:電子工業(yè)出版社,2010.
[5]Kruse W G,Heiser J G.Computer Forensics:Incident Response Essentials[M].[S.l.]:Addison-Wesley Professional,2001.
[6]孫 波,孫玉芳,張相鋒,等.電子數據取證研究概述[J].計算機科學,2005,32(2):2-4.
[7]National Institute of Justice.Electronic Crime Scene Investigation A Guide for First Responders[EB/OL].(2001-07-23).http://www.ncjrs.org/pdffiles1/nij/187736.pdf.
[8]Reith M,Carr C,Gunsch G.An Examination of Digital Forensic Models[J].International Journal of Digital Evidence,2002,1(3):3-5.
[9]Carrier B,Spafford E H.Getting Physical with the Investigative Process[J].International Journal of Digital Evidence,2003,2(2):2-4.
[10]ACPO.Association of Chief Police Officers[EB/OL].(2011-06-12).http://www.acpo.police.uk/.
[11]IOCE.International Organization for Cooperation in Evaluation[EB/OL].(2009-11-10).http://www.ioce.net/index.php.
[12]IACIS.International Association of Computer Investigation Specialist[EB/OL].(2010-09-28).http://www.iacis.com/.
[13]Baryamureeba V,TushabeF.The Enhanced Digital Investigation Process Model[C]//Proc.of the 4th Digital Forensic Research Workshop.[S.l.]:IEEE Press,2004.
[14]Carrier B D,Grand J.A Hardware-based Memory Acquisition Procedure for Digital Investigations[J].Digital Investigation,2004,1(1):50-60.
[15]Petroni N L,Fraser T,Molina J et al.Copilot——A Coprocessor-based Kernel Runtime Integrity Monitor[C]//Proc.of the 13th USENIX Security Symposium.New York,USA:[s.n.],2004.
[16]BBN Technologies,Fred:Forensic Ram Extraction Device[EB/OL].(2006-01-09).http://www.ir.bbn.com/vkawadia/.
[17]Hulton D.Cardbus Bus-mastering:Owning the Laptop[C]//Proc.ofShmooCon’06.Columbia,USA:[s.n.],2006.
[18]Smith J E,Nair R.The Architecture of Virtual Machines[J].Journal of Computer,2005,38(5):32-38.
[19]Halderman J A,Schoen S D,Heninger N,et al.Lest We Remember:Cold-boot Attacks on Encryption Keys[J].Communications of the ACM,2009,52(5):91-98.
[20]Garner G M.Forensic Acquisition Utilities[EB/OL].(2009-07-20).http://gmgsystemsinc.com/fau/.
[21]Vidstrom A.Pmdump[EB/OL].(2002-06-17).http://ntsecurity.nu/toolbox/pmdump/.
[22]Klein T,Process Dumper[EB/OL].(2006-10-29).http://www.trapkit.de/research/forensic/pd/index.html.
[23]ManTech CSI,Inc..Memory DD[EB/OL].(2009-03-14).http://sourceforge.net/projects/mdd/files/.
[24]Windows Memory Toolkit.MoonSols[EB/OL].(2010-09-22).http://moonsols.com/product.
[25]Mandiant.Memoryze[EB/OL].(2010-09-13).http://www.mandiant.com/products/free_software/memoryze/.
[26]Chris D,Kimberley B.PANIC!UNIX System Crash Dump Analysis Handbook[M].[S.l.]:Pearson Education,1995.
[27]Microsoft Corporation.Kb254649-overview of Memory Dump File Options for Windows Vista,Windows Server 2008 R2,Windows Server 2008,Windows Server 2003,Windows XP,and Windows2000[EB/OL].(2010-07-15).http://support.microsoft.com/?scid=kb3Benus3B 254649&x=13&y=5.
[28]Microsoft Corporation.Kb244139-windows Feature Lets You Generate a memory Dump File by Using The Keyboard,Crash Dump File Generation[EB/OL].(2010-06-30).http://support.microsoft.com/?20sci d=kb3Ben-us3B244139&x=&y=9.
[29]Libster E,Kornblum J D.A Proposal for An Integrated Memory Acquisition Mechanism[J].ACM SIGOPS Operating Systems Review,2008,42(3):14-20.
[30]Schatz B.Bodysnatcher:Towards Reliable Volatile Memory Acquisition by Software[J].Digital Investigation,2007,4(9):126-134.
[31]Schatz B.Recent Developments in Volatile Memory Forensics[EB/OL].(2007-12-18).http://www.schatzforensic.com.au/presentations/BSchatz-CERTCSD2007.pdf.
[32]Inoue H,Adelstein F,Joyce R A.Visualization in Testing a volatile Memory Forensic Tool[J].Digital Investigation,2011,8(1):42-51.
[33]Vomel S,FreilingF C.Correctness,Atomicity,and Integrity:Defining Criteria for Forensically-sound Memory Acquisition[J].Digital Investigation,2012,9(2):125-137.
[34]Burdach M.An Introduction to Windowsmemory forensic[EB/OL].(2005-07-09).http://forensic.seccure.net.
[35]Hargreaves C,Chivers H.Recovery of Encryption Keys from Memory Using a Linear Scan[C]//Proc.of the 3rd International Conference on Availability,Reliability and Security.Barcelona,Spain:[s.n.],2008:1369-1376.
[36]Schuster A.Searching for Processes and Threads in Microsoft Windows Memory Dumps[J].Digital Investigation,2006,3(1):10-16.
[37]Bolieau A.Bioskbsnarf[EB/OL].(2008-04-10).http://www.storm.net.nz/static/files/bioskbsnarf.
[38]Anon.Defeating WholeDisk Encryption -Part 1[EB/OL].(2007-03-26).http://breach-inv.blogspot.com/2007/05/defeating-wholedisk-encryption-part-1.html.
[39]Schuster A.Pool Allocations as an Information Source in Windows Memory Forensics[C]//Proc.of International Conference on IT-incident Management& IT-forensics.[S.l.]:IEEE Press,2006.
[40]Bilby D.Low Down and Dirty:Anti-forensic Rootkits[C]//Proc.of Ruxcon’06.[S.l.]:IEEE Press,2006.
[41]Zhang Ruichao,Wang Linhai,Zhang Shuhui.Windows Memory Analysis Based on KPCR[C]//Proc.of the 5th International Conference on Information Assurance and Security.[S.l.]:IEEE Press,2009:677-680.
[42]Dolan G B.Forensic Analysis of the Windows Registry in Memory[J].Digital Investigation,2008,5(1):26-32.
[43]Okolica J,Peterson G L.Windows Operating Systems Agnostic Memory Analysis[J].Digital Investigation,2010,7(1):48-56.
[44]Russinovich M E,Solomon D A,Ionescu A.Microsoft Windows Internals[M].[S.l.]:Microsoft Press,2009.
[45]Dolan G B,The Vad Tree:A Process-eye View of Physical Memory[J].Digital Investigation,2007,4(1):62-64.
[46]van Baar R B,Alink W,van Ballegooij A R.Forensic Memory Analysis:Files Mapped in Memory[J].Digital Investigation,2008,5(S1):52-57.
[47]Stevens R M,Casey E.Extracting Windows Command Line Details from PhysicalMemory[J].Digital Investigation,2010,7(1):57-63.
[48]Sols M.DumpIt[EB/OL].(2011-07-18).http://www.moonsols.com/2011/07/18/moonsols-dumpit-goesmainstream/.
[49]X-way.Winhex[EB/OL].(2010-10-15).http://www.x-ways.net.
[50]Goel A,Feng Wuchang,Maier D,et al.Forensix:A Robust,High-performance Reconstruction System[C]//Proc.of the 25th IEEE International Conference on Distributed Computing Systems Workshops.[S.l.]:IEEE Press,2005.
[51]Volatile Systems.LLC,Volatility[EB/OL].(2008-11-14).https://www.volatilesystems.com/default/volatility.