陳俊珊 黃君燦 蘇再添 吳少華
摘? ?要:在電子數(shù)據(jù)取證中對痕跡的提取和分析是非常重要的一項工作,通過對應用程序運行痕跡的提取,可以分析出用戶的行為特征,對計算機取證具有重要的意義。Prefetch(簡稱PF)是微軟Windows操作系統(tǒng)用來存放系統(tǒng)預讀信息的一種文件,該文件中包含可執(zhí)行文件的名稱、所調用DLL文件列表(Unicode)、路徑、運行次數(shù)和最后一次運行時間等信息。由于PF文件格式沒有官方的文檔描述,在不同Windows系統(tǒng)下結構也有區(qū)別,而且國內目前對Windows 10下壓縮型PF文件的研究較少。文章主要研究了Windows操作系統(tǒng)下的幾種PF文件格式,提出了一種針對Prefetch文件取證的方法,通過提取并分析應用程序的運行痕跡,為案件的偵破提供重要的線索。
關鍵詞:Prefetch;Windows 10;運行痕跡;取證
中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:B
Abstract: In electronic data forensics, the extraction and analysis of traces is a very important work. By extracting the traces of the application program, we can analyze the user's behavior characteristics, which is of great significance to computer forensics. Prefetch (PF) is a file used by Microsoft Windows operating system to store system pre-reading information. The file contains the name of the executable file, the list of DLL files invoked (Unicode), the path, the number of runs and the last run time. Because PF file format has no official document description, the structure of PF file under different Windows systems is also different, and there is less research on compressed PF file under Windows 10 in China at present. This paper mainly studies several PF file formats under Windows operating system, and puts forward a method for forensics of Prefetch file. This method can extract and analyze the running trace of application program, and provide important clues for case detection.
Key words: Prefetch; Windows 10; running trace; forensics
1 引言
隨著計算機和網(wǎng)絡技術的不斷發(fā)展,計算機給人們生活帶來極大便利的同時,針對計算機犯罪的不法行為也不斷涌現(xiàn),呈現(xiàn)的形式也越來越多樣化。計算機犯罪不僅對個人和企業(yè)的利益造成影響,甚至嚴重危害到社會的發(fā)展和國家的穩(wěn)定。在利用計算機進行犯罪的過程中,計算機的軟硬件在使用過程都會產生各種痕跡,所有用戶的正常和惡意行為都會被如實記錄,通過對這些記錄的提取和分析,可以得到敏感的信息以及用戶的行為特征,對案件的偵查和取證具有重要作用[1]。PF文件是微軟Windows操作系統(tǒng)用于存放系統(tǒng)已訪問過文件的預讀信息,里面記錄了用戶運行程序時的信息,其中包括可執(zhí)行文件的名稱、運行次數(shù)、最后運行時間等重要記錄,這些記錄都是由操作系統(tǒng)內部自動生成的痕跡[2],不摻雜人的主觀意志,所以它對用戶行為特征的分析具有重要意義。
PF文件格式沒有官方的文檔描述,而且在不同Windows系統(tǒng)中的結構也不完全一致,如果要對PF文件中的信息進行提取,需要理解它的文件結構以及不同版本系統(tǒng)的差別。Windows 10版本的系統(tǒng)對PF文件進行了壓縮處理,需要先對壓縮文件進行解壓之后才能提取到數(shù)據(jù)。本文詳細分析PF文件的結構和數(shù)據(jù)提取方法,同時針對Windows 10系統(tǒng)中經過壓縮的PF文件進行重點說明。
2? 技術綜述
PF是從Windows XP系統(tǒng)開始,微軟引入的一種預讀取技術。當Windows系統(tǒng)啟動時,會讀取大量文件到內存進行處理,不同時間會加載相同文件的不同片段。因為多次打開和訪問文件時會浪費大量的時間,為了加快程序的啟動速度,操作系統(tǒng)在程序啟動時會自動記錄下啟動過程都訪問了哪些代碼和數(shù)據(jù),在下次啟動時根據(jù)PF中記錄的這些信息,可以更快地加載代碼和數(shù)據(jù)到內存中[3]。操作系統(tǒng)通過Windows Cache Manager程序來跟蹤程序啟動過程中用到的代碼和數(shù)據(jù),再由系統(tǒng)的一個核心進程“NTKRNLPA.exe”把記錄組織成PF格式的文件并寫入到Prefetch文件夾,在下次啟動相同的程序時,先從Prefetch文件夾中讀取PF文件,根據(jù)PF文件的記錄預先加載代碼和數(shù)據(jù)到內存中[4]。
預讀取文件存儲在“%SystemRoot%\Prefetch”文件夾下,每個程序對應PF文件的名字是由應用程序可執(zhí)行文件名稱、英文半角破折號和8位十六進制哈希值組成的文件名,其擴展名為“.pf”,除擴展名外文件名全部大寫,如360殺毒軟件PF文件名稱為“360SD.EXE-3F47D00F.pf”。文件名中的8位哈希值與應用程序運行位置相關,如果同一個應用程序是從磁盤不同位置中啟動運行的話,在Prefetch目錄下會產生兩個不同的PF文件。在不同的Windows系統(tǒng)中,用于計算PF文件名哈希的函數(shù)不盡相同[5]。
3 實驗分析方法
3.1 普通PF文件分析
(1) PF文件的頭部結構如表1所示。
(2)PF文件的第一個DWORD字節(jié)的值表示PF文件的版本,在不同操作系統(tǒng)下的值不一樣,主要包含幾種[6],如表2所示。
(3)不同版本PF文件應用程序運行次數(shù)存放位置不同,如表3所示。
(4)不同版本PF文件應用程序最后一次運行時間存放位置不同,如表4所示。
通過對PF文件結構的分析可以從不同Windows操作系統(tǒng)的PF文件中提取出重要的信息,其主要流程如圖1所示。
圖2以Windows 7下的PF文件作為實例來分析說明如何從PF文件中提取應用程序名、運行次數(shù)和運行時間等信息。
各個片段從低地址到高地址說明如下:
(1)00H:0x00000017表示W(wǎng)indows 7下的PF文件;
(2)04H:0x41434353 表示“SCCA”簽名;
(3)0CH:0x00029B5C 表示整個PF文件的長度;
(4)10H:表示應用程序的名稱(360AI.EXE);
(5)4CH:0x7A8347C4 表示PF文件的哈希值(360AI.EXE-7A8347C4.pf);
(6)80H:0x01D246C9~0x7527432B 表示最后一次運行的時間(FILETIME);
(7)98H:0x0000002A 表示運行的次數(shù)。
從對Windows 7下的PF文件分析可以看出,在每個PF文件中都會記錄用戶實際運行的程序名稱(Actual File Name)、運行的次數(shù)(Number Times Run)以及最后一次運行的時間(UTC Time),其中實際運行的程序名稱和最后一次的運行時間對取證具有重要的意義,可以通過時間排序的方式得到案發(fā)時間附近用戶運行的應用程序,通過查詢應用程序的實際用途進一步分析出用戶的行為特征,為后續(xù)的案件偵查提供重要的線索[7]。
3.2 Windows 10 PF文件分析
在Windows 10系統(tǒng)下,PF文件是經過壓縮處理的,其文件結構如表5所示。
壓縮型PF文件采用Micorosoft XPPESS Huffman(LZXPRESS)的壓縮方法[8]。微軟提供RtlDecompressBufferEx方法,可以對RtlCompressBuffer函數(shù)壓縮的數(shù)據(jù)進行解壓。
RtlDecompressBufferEx各項參數(shù)說明如下[9]。
(1)CompressionFormat:壓縮格式,目前該函數(shù)支持的壓縮方法有以下兩種:COMPRESSION_FORMAT_LZNT1和COMPRESSION_FORMAT_XPRESS,PF使用COMPRESSION_FORMAT_XPRESS。
(2)UnCompressedBuffer:指向存放解壓后數(shù)據(jù)的緩沖區(qū),該參數(shù)是必需的且不能為NULL。
(3)UnCompressedBufferSize:存放解壓后數(shù)據(jù)的緩沖區(qū)大小。
(4)CompressedBuffer:指向解壓前數(shù)據(jù)塊,該參數(shù)是必需的且不能為NULL。
(5)CompressedBufferSize:解壓前數(shù)據(jù)塊長度。
(6)FinalUncompressedSize:指向解壓后的數(shù)據(jù)塊長度。
(7)WorkSpace:指向解壓過程的工作緩沖區(qū),該緩沖區(qū)是在解壓過程中用到的臨時緩沖區(qū),需要使用RtlGetCompressionWorkSpaceSize函數(shù)來計算正確的工作緩沖區(qū)大小。
RtlGetCompressionWorkSpaceSize各項參數(shù)說明如下。
(1)CompressionFormatAndEngine:壓縮格式和引擎,PF文件在解壓時使用COMPRESSION_FORMAT_XPRESS |COMPRESSION_ENGINE_STANDARD。
(2)CompressBufferWorkSpaceSize:計算RtlCompressBuffer的工作空間大小。
(3)CompressFragmentWorkSpaceSize:計算RtlDecompressFragment的工作空間大小,在PF解壓中沒有用到。
Windows 10 PF文件解壓前和解壓后的數(shù)據(jù)對比如圖3和圖4所示。
4 實驗結果分析
為驗證本文分析結果的正確性,針對Windows不同版本的操作系統(tǒng)下的PF文件進行了測試實驗,實驗結果如圖5所示。
5 結束語
在電子取證過程中,偵查人員會通過提取用戶在機算機使用過程中留下的各種痕跡,分析出用戶的行為特征,再根據(jù)這些行為特征對犯罪動機和犯罪手法進行預判和推測。通過對操作系統(tǒng)自動產生的PF文件分析和提取可以精確地得到用戶運行程序的痕跡,包括運行程序的名稱、次數(shù)和最后一次的運行時間等信息,對這此信息進行挖掘可以進一步分析出更多有用的線索,對案件的偵破起到重要的作用[10]。
本文主要分析PF文件的結構并說明如何提取當中有用的信息,針對不同Windows操作系統(tǒng)中的PF文件進行全面的分析和對比,特別是對Windows 10下有壓縮的PF文件做了詳細的介紹,對計算機取證具有重要的意義。
參考文獻
[1] 李可可.Windows環(huán)境下痕跡的提取與行為分析[J].電子技術與軟件工程, 2013(22):239-240.
[2] 羅文華.Windows環(huán)境下可執(zhí)行文件操作痕跡分析方法[J].刑事技術,2013(4):61-63.
[3] 李艷.Windows系統(tǒng)中Prefetch信息的提取與分析[J].信息安全與技術,2012,3(5):46-48.
[4] NK Shashidhar,D Novak.Digital Forensic Analysis on Prefetch Files[J].European Physical Journal Special Topics,2015,174(1):65-79.
[5] 李艷.Windows系統(tǒng)中特殊文件的提取與分析[J].信息技術,2012,36(7):194-196+198.
[6] WiKi.Windows Prefetch File Format[EB/OL].http://forensicswiki.org/wiki/Windows_Prefetch_File_Format,2016.
[7] HarlanCarvey,Carvey,王智慧,等.Windows取證分析[M].北京:科學出版社,2009.
[8] WiKi.Windows 10[EB/OL].http://www.forensicswiki.org/wiki/Windows_10,2016.
[9] Microsoft.RtlDecompressBufferEx function[EB/OL].https://msdn.microsoft.com/en-us/library/windows/hardware/hh439511(v=vs.85).aspx,2018.
[10] 張佑樂,王宏韜,李康,等.Windows使用記錄軟件的設計與實現(xiàn)[J].軟件,2014,35(1):4-7.+