陳俊珊 黃君燦 蘇再添 吳少華
摘? ?要:在電子數(shù)據(jù)取證中對(duì)痕跡的提取和分析是非常重要的一項(xiàng)工作,通過對(duì)應(yīng)用程序運(yùn)行痕跡的提取,可以分析出用戶的行為特征,對(duì)計(jì)算機(jī)取證具有重要的意義。Prefetch(簡稱PF)是微軟Windows操作系統(tǒng)用來存放系統(tǒng)預(yù)讀信息的一種文件,該文件中包含可執(zhí)行文件的名稱、所調(diào)用DLL文件列表(Unicode)、路徑、運(yùn)行次數(shù)和最后一次運(yùn)行時(shí)間等信息。由于PF文件格式?jīng)]有官方的文檔描述,在不同Windows系統(tǒng)下結(jié)構(gòu)也有區(qū)別,而且國內(nèi)目前對(duì)Windows 10下壓縮型PF文件的研究較少。文章主要研究了Windows操作系統(tǒng)下的幾種PF文件格式,提出了一種針對(duì)Prefetch文件取證的方法,通過提取并分析應(yīng)用程序的運(yùn)行痕跡,為案件的偵破提供重要的線索。
關(guān)鍵詞:Prefetch;Windows 10;運(yùn)行痕跡;取證
中圖分類號(hào):TP311.1? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: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 引言
隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,計(jì)算機(jī)給人們生活帶來極大便利的同時(shí),針對(duì)計(jì)算機(jī)犯罪的不法行為也不斷涌現(xiàn),呈現(xiàn)的形式也越來越多樣化。計(jì)算機(jī)犯罪不僅對(duì)個(gè)人和企業(yè)的利益造成影響,甚至嚴(yán)重危害到社會(huì)的發(fā)展和國家的穩(wěn)定。在利用計(jì)算機(jī)進(jìn)行犯罪的過程中,計(jì)算機(jī)的軟硬件在使用過程都會(huì)產(chǎn)生各種痕跡,所有用戶的正常和惡意行為都會(huì)被如實(shí)記錄,通過對(duì)這些記錄的提取和分析,可以得到敏感的信息以及用戶的行為特征,對(duì)案件的偵查和取證具有重要作用[1]。PF文件是微軟Windows操作系統(tǒng)用于存放系統(tǒng)已訪問過文件的預(yù)讀信息,里面記錄了用戶運(yùn)行程序時(shí)的信息,其中包括可執(zhí)行文件的名稱、運(yùn)行次數(shù)、最后運(yùn)行時(shí)間等重要記錄,這些記錄都是由操作系統(tǒng)內(nèi)部自動(dòng)生成的痕跡[2],不摻雜人的主觀意志,所以它對(duì)用戶行為特征的分析具有重要意義。
PF文件格式?jīng)]有官方的文檔描述,而且在不同Windows系統(tǒng)中的結(jié)構(gòu)也不完全一致,如果要對(duì)PF文件中的信息進(jìn)行提取,需要理解它的文件結(jié)構(gòu)以及不同版本系統(tǒng)的差別。Windows 10版本的系統(tǒng)對(duì)PF文件進(jìn)行了壓縮處理,需要先對(duì)壓縮文件進(jìn)行解壓之后才能提取到數(shù)據(jù)。本文詳細(xì)分析PF文件的結(jié)構(gòu)和數(shù)據(jù)提取方法,同時(shí)針對(duì)Windows 10系統(tǒng)中經(jīng)過壓縮的PF文件進(jìn)行重點(diǎn)說明。
2? 技術(shù)綜述
PF是從Windows XP系統(tǒng)開始,微軟引入的一種預(yù)讀取技術(shù)。當(dāng)Windows系統(tǒng)啟動(dòng)時(shí),會(huì)讀取大量文件到內(nèi)存進(jìn)行處理,不同時(shí)間會(huì)加載相同文件的不同片段。因?yàn)槎啻未蜷_和訪問文件時(shí)會(huì)浪費(fèi)大量的時(shí)間,為了加快程序的啟動(dòng)速度,操作系統(tǒng)在程序啟動(dòng)時(shí)會(huì)自動(dòng)記錄下啟動(dòng)過程都訪問了哪些代碼和數(shù)據(jù),在下次啟動(dòng)時(shí)根據(jù)PF中記錄的這些信息,可以更快地加載代碼和數(shù)據(jù)到內(nèi)存中[3]。操作系統(tǒng)通過Windows Cache Manager程序來跟蹤程序啟動(dòng)過程中用到的代碼和數(shù)據(jù),再由系統(tǒng)的一個(gè)核心進(jìn)程“NTKRNLPA.exe”把記錄組織成PF格式的文件并寫入到Prefetch文件夾,在下次啟動(dòng)相同的程序時(shí),先從Prefetch文件夾中讀取PF文件,根據(jù)PF文件的記錄預(yù)先加載代碼和數(shù)據(jù)到內(nèi)存中[4]。
預(yù)讀取文件存儲(chǔ)在“%SystemRoot%\Prefetch”文件夾下,每個(gè)程序?qū)?yīng)PF文件的名字是由應(yīng)用程序可執(zhí)行文件名稱、英文半角破折號(hào)和8位十六進(jìn)制哈希值組成的文件名,其擴(kuò)展名為“.pf”,除擴(kuò)展名外文件名全部大寫,如360殺毒軟件PF文件名稱為“360SD.EXE-3F47D00F.pf”。文件名中的8位哈希值與應(yīng)用程序運(yùn)行位置相關(guān),如果同一個(gè)應(yīng)用程序是從磁盤不同位置中啟動(dòng)運(yùn)行的話,在Prefetch目錄下會(huì)產(chǎn)生兩個(gè)不同的PF文件。在不同的Windows系統(tǒng)中,用于計(jì)算PF文件名哈希的函數(shù)不盡相同[5]。
3 實(shí)驗(yàn)分析方法
3.1 普通PF文件分析
(1) PF文件的頭部結(jié)構(gòu)如表1所示。
(2)PF文件的第一個(gè)DWORD字節(jié)的值表示PF文件的版本,在不同操作系統(tǒng)下的值不一樣,主要包含幾種[6],如表2所示。
(3)不同版本PF文件應(yīng)用程序運(yùn)行次數(shù)存放位置不同,如表3所示。
(4)不同版本PF文件應(yīng)用程序最后一次運(yùn)行時(shí)間存放位置不同,如表4所示。
通過對(duì)PF文件結(jié)構(gòu)的分析可以從不同Windows操作系統(tǒng)的PF文件中提取出重要的信息,其主要流程如圖1所示。
圖2以Windows 7下的PF文件作為實(shí)例來分析說明如何從PF文件中提取應(yīng)用程序名、運(yùn)行次數(shù)和運(yùn)行時(shí)間等信息。
各個(gè)片段從低地址到高地址說明如下:
(1)00H:0x00000017表示W(wǎng)indows 7下的PF文件;
(2)04H:0x41434353 表示“SCCA”簽名;
(3)0CH:0x00029B5C 表示整個(gè)PF文件的長度;
(4)10H:表示應(yīng)用程序的名稱(360AI.EXE);
(5)4CH:0x7A8347C4 表示PF文件的哈希值(360AI.EXE-7A8347C4.pf);
(6)80H:0x01D246C9~0x7527432B 表示最后一次運(yùn)行的時(shí)間(FILETIME);
(7)98H:0x0000002A 表示運(yùn)行的次數(shù)。
從對(duì)Windows 7下的PF文件分析可以看出,在每個(gè)PF文件中都會(huì)記錄用戶實(shí)際運(yùn)行的程序名稱(Actual File Name)、運(yùn)行的次數(shù)(Number Times Run)以及最后一次運(yùn)行的時(shí)間(UTC Time),其中實(shí)際運(yùn)行的程序名稱和最后一次的運(yùn)行時(shí)間對(duì)取證具有重要的意義,可以通過時(shí)間排序的方式得到案發(fā)時(shí)間附近用戶運(yùn)行的應(yīng)用程序,通過查詢應(yīng)用程序的實(shí)際用途進(jìn)一步分析出用戶的行為特征,為后續(xù)的案件偵查提供重要的線索[7]。
3.2 Windows 10 PF文件分析
在Windows 10系統(tǒng)下,PF文件是經(jīng)過壓縮處理的,其文件結(jié)構(gòu)如表5所示。
壓縮型PF文件采用Micorosoft XPPESS Huffman(LZXPRESS)的壓縮方法[8]。微軟提供RtlDecompressBufferEx方法,可以對(duì)RtlCompressBuffer函數(shù)壓縮的數(shù)據(jù)進(jìn)行解壓。
RtlDecompressBufferEx各項(xiàng)參數(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ū)是在解壓過程中用到的臨時(shí)緩沖區(qū),需要使用RtlGetCompressionWorkSpaceSize函數(shù)來計(jì)算正確的工作緩沖區(qū)大小。
RtlGetCompressionWorkSpaceSize各項(xiàng)參數(shù)說明如下。
(1)CompressionFormatAndEngine:壓縮格式和引擎,PF文件在解壓時(shí)使用COMPRESSION_FORMAT_XPRESS |COMPRESSION_ENGINE_STANDARD。
(2)CompressBufferWorkSpaceSize:計(jì)算RtlCompressBuffer的工作空間大小。
(3)CompressFragmentWorkSpaceSize:計(jì)算RtlDecompressFragment的工作空間大小,在PF解壓中沒有用到。
Windows 10 PF文件解壓前和解壓后的數(shù)據(jù)對(duì)比如圖3和圖4所示。
4 實(shí)驗(yàn)結(jié)果分析
為驗(yàn)證本文分析結(jié)果的正確性,針對(duì)Windows不同版本的操作系統(tǒng)下的PF文件進(jìn)行了測試實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖5所示。
5 結(jié)束語
在電子取證過程中,偵查人員會(huì)通過提取用戶在機(jī)算機(jī)使用過程中留下的各種痕跡,分析出用戶的行為特征,再根據(jù)這些行為特征對(duì)犯罪動(dòng)機(jī)和犯罪手法進(jìn)行預(yù)判和推測。通過對(duì)操作系統(tǒng)自動(dòng)產(chǎn)生的PF文件分析和提取可以精確地得到用戶運(yùn)行程序的痕跡,包括運(yùn)行程序的名稱、次數(shù)和最后一次的運(yùn)行時(shí)間等信息,對(duì)這此信息進(jìn)行挖掘可以進(jìn)一步分析出更多有用的線索,對(duì)案件的偵破起到重要的作用[10]。
本文主要分析PF文件的結(jié)構(gòu)并說明如何提取當(dāng)中有用的信息,針對(duì)不同Windows操作系統(tǒng)中的PF文件進(jìn)行全面的分析和對(duì)比,特別是對(duì)Windows 10下有壓縮的PF文件做了詳細(xì)的介紹,對(duì)計(jì)算機(jī)取證具有重要的意義。
參考文獻(xiàn)
[1] 李可可.Windows環(huán)境下痕跡的提取與行為分析[J].電子技術(shù)與軟件工程, 2013(22):239-240.
[2] 羅文華.Windows環(huán)境下可執(zhí)行文件操作痕跡分析方法[J].刑事技術(shù),2013(4):61-63.
[3] 李艷.Windows系統(tǒng)中Prefetch信息的提取與分析[J].信息安全與技術(shù),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].信息技術(shù),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].北京:科學(xué)出版社,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使用記錄軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件,2014,35(1):4-7.+