徐國天 中國刑事警察學(xué)院
Office軟件的主要版本包括:2000、2003、2007和2010,當前大部分基于windows操作系統(tǒng)的計算機安裝了Office軟件。政府機關(guān)、企事業(yè)單位、金融機構(gòu)及個人用戶普遍使用Office軟件編輯word文檔、制作excel數(shù)據(jù)表、編制ppt匯報,尤其是很多財務(wù)報表使用excel制作。在這些Office文檔內(nèi)保存了大量對案件辦理有價值的數(shù)據(jù)信息。為了逃避法律的制裁,迷惑辦案人員,犯罪分子可能不是刪除整個Office文件,而只是刪除或修改了Office文檔中的部分內(nèi)容,如幾段文字、幾張圖片或幾個數(shù)據(jù)表,恢復(fù)這些被刪除和修改的數(shù)據(jù)內(nèi)容,提取出修改的時間和修改人使用的用戶名,對公安機關(guān)的調(diào)查、取證工作有重要的意義,但是目前這部分被刪除或修改的數(shù)據(jù)信息無法有效提取。
當前公安機關(guān)遇到此類檢驗需求時,主要是使用通用數(shù)據(jù)恢復(fù)軟件來完成(如Final Data、Easy Recovery)。但是現(xiàn)有數(shù)據(jù)恢復(fù)軟件只能恢復(fù)出被刪除的Office文檔,而不能很好地完成文件中間編輯過程的痕跡提取,進而不能滿足公安機關(guān)逐漸增多的Office文件編輯過程痕跡提取和破損Office文件修復(fù)類的檢驗需求。
針對這種要求,本文開發(fā)了一款Office文件編輯過程痕跡自動提取軟件系統(tǒng),該系統(tǒng)可以準確地對NTFS格式磁盤內(nèi)殘留的Office痕跡碎片進行提取,具有很好的實戰(zhàn)價值。
以圖1為例解釋Office文件編輯過程痕跡提取效果。在硬盤存儲空間中,陰影區(qū)域代表已被其它文件使用的存儲空間,即已占用空間。白色區(qū)域代表空閑的、可以使用的存儲區(qū)域。用戶對某個Excel文件執(zhí)行了第一次編輯操作,在其中添加了一條記錄:“張明 ¥5000”,單擊保存時,這個文檔被保存到第一塊空閑空間中。隨后另一個用戶執(zhí)行了第二次編輯操作,修改了第一條記錄的金額,同時增加了兩條新的記錄,之后單擊了保存按鈕。Office軟件有這樣一個特點,它不會將數(shù)據(jù)保存在原始的存儲位置(即使原始空間足夠),而是在硬盤空閑區(qū)域重新尋找一塊空間存儲數(shù)據(jù)。在本例中,第二組痕跡被保存在第二塊空閑存儲空間內(nèi),之前第一塊存儲空間內(nèi)的數(shù)據(jù)并沒有真正消失,只是存儲狀態(tài)由已占用狀態(tài)重新調(diào)整為空閑狀態(tài),只要這塊存儲空間不被其它文件重新使用,第一組痕跡數(shù)據(jù)就可以成功恢復(fù)。最后第三個用戶對這個Excel文件執(zhí)行了第三次編輯操作,刪除了最后一條記錄,修改了前兩條記錄的金額字段。完成編輯之后,這組痕跡數(shù)據(jù)被保存至第三塊存儲區(qū)域。
編輯過程痕跡提取要完成的第一個任務(wù)就是從硬盤中提取出三組編輯痕跡,形成三個可以直接查看的excel文件。第二要提取出三次編輯操作執(zhí)行的日期和時間,精確到秒。第三要提取出執(zhí)行這三個編輯操作的用戶名。第四要提取出每組編輯痕跡對應(yīng)的編輯次序。這樣一來,從得到的編輯次序序列中就可以直觀地看到缺少了哪幾次編輯,這些丟失的編輯操作可能不是發(fā)生在這塊磁盤,或者對應(yīng)的編輯痕跡數(shù)據(jù)已經(jīng)被覆蓋。
目前沒有一款專門的軟件系統(tǒng)進行Office文件編輯過程痕跡提取,有此類檢驗需求時,普遍使用通用數(shù)據(jù)恢復(fù)軟件(如Final data、Easy recovery)來完成。但是現(xiàn)有通用數(shù)據(jù)恢復(fù)軟件在進行Office文件編輯過程痕跡提取時存在以下問題,見圖2說明。
如果痕跡數(shù)據(jù)保存在一塊存儲區(qū)域中(如編輯1產(chǎn)生的痕跡一),那么現(xiàn)有軟件可以恢復(fù)這組痕跡數(shù)據(jù),形成可以查看的Office文件,但是不能確定痕跡的產(chǎn)生時間和執(zhí)行這次編輯操作的用戶名稱,也不能確定每個痕跡隸屬于哪個文件(即得到一些孤立的、無關(guān)聯(lián)信息的Office文件)。如果痕跡數(shù)據(jù)保存在多個存儲區(qū)域(如編輯2產(chǎn)生的痕跡二就分別存儲在兩個存儲區(qū)域),那么現(xiàn)有軟件無法進行提取。
本文開發(fā)的軟件系統(tǒng)可以提取出Office文件編輯痕跡的形成時間和執(zhí)行這次編輯操作的用戶名稱,找出Office 文件殘留在存儲設(shè)備中的所有痕跡,并按照產(chǎn)生時間順序進行排列,形成完整的時間鏈條。
如果某次編輯產(chǎn)生的痕跡數(shù)據(jù)保存在若干個分隔開來的存儲區(qū)域中,使用現(xiàn)有數(shù)據(jù)恢復(fù)軟件無法提取這種離散存儲的數(shù)據(jù)。課題開發(fā)軟件系統(tǒng)可以找出所有的存儲分片,排列次序組合成完整的Office文件。圖3中的編輯2產(chǎn)生的痕跡存儲在兩個存儲區(qū)域,應(yīng)用課題開發(fā)軟件系統(tǒng)可以識別出這兩個分片,確定先后次序,重組成一個完整的Office文件。
殘留的痕跡數(shù)據(jù)極可能被部分覆蓋,此時恢復(fù)出的Office文件不能正常查看,應(yīng)用課題開發(fā)的軟件系統(tǒng)可以修復(fù)損壞的Office痕跡文件,正常顯示殘留的數(shù)據(jù)信息。圖3中編輯3產(chǎn)生的痕跡三局部遭到覆蓋,造成文件內(nèi)容缺失,無法正常打開。課題軟件可以從破損文件中提取出殘留的數(shù)據(jù),并顯示出來。
Ooxml是Office Open Xml的簡稱,是微軟新一代辦公軟件文檔格式標準,是由微軟開發(fā)的一種以XML為基礎(chǔ)并以ZIP格式壓縮的電子文件規(guī)范,支持DOCX文件、XLSX電子表格、PPTX幻燈片等。
DOCX文件由若干個XML文件、文本文件、圖片、視頻文件組成,這些文件采用ZIP格式壓縮存儲。所有的文字、表格、圖片和視頻的ID號均保存在document.xml文件內(nèi)。所有的多媒體文件均保存在media文件夾下。document.xml.rels文件保存了所有多媒體文件的ID和存儲位置影射關(guān)系。
在2007和2010版本的Office文檔中、所有的文字數(shù)據(jù)均保存在document.xml文件中,如圖4-a所示,文字信息夾雜在標記符號
在document.xml文件中只保存了圖片數(shù)據(jù)的ID編號,如圖4-b所示。關(guān)鍵詞imagedata是圖片的標志,這個位置圖片的編號為rId26。在document.xml.rels文件中記錄了Office文件中所有對象的ID號與存儲位置的對應(yīng)關(guān)系。編號rId26的圖片保存在media/image20.jpeg。
Office文件中的文本對象(如XML文件)是以ZIP格式壓縮存儲的。圖5顯示的是document.xml部分數(shù)據(jù)。起始位置是四個字節(jié)的文件頭標志,0X 50 4B 電子="。0X 1400代表解壓文件所須最低版本為20。0X 0600 是通用標記位。0X 0800代表采用的壓縮方法,注意這個字段可以用來區(qū)分文檔是否采用了ZIP壓縮。
0X 00002100代表修改時間,即1980-01-01,所有Office文件的修改時間均為這個數(shù)值。0X A2 6F 9E 96是文件的CRC32校驗和,注意這里的校驗和不是根據(jù)隨后的壓縮數(shù)據(jù)計算的,而是根據(jù)解壓之后的數(shù)據(jù)計算的。只要壓縮數(shù)據(jù)中某個比特位發(fā)生變化,得到的校驗和就會不同。0X 80 0E 時間即1代表壓縮后的文件大小為1379968字節(jié)。0X C3 9B 1C 00代表壓縮之前的文件大小為1874883字節(jié)。0X 0代壓縮代表文件名長度為17。文件名為“word/document.xml”共17個字節(jié)。
Office文檔中的圖片數(shù)據(jù)沒有進行壓縮處理。這可能是考慮到圖像本身已經(jīng)采用了某種壓縮算法進行處理,使用ZIP算法進行二次壓縮,文件大小不會有明顯的縮小,而解壓縮文件還要消耗大量的時間,因此圖像數(shù)據(jù)不進行壓縮處理。
Office文件在編輯過程中,某些中間步驟的痕跡數(shù)據(jù)不會保存在一塊連續(xù)的存儲空間內(nèi),而是離散存儲在多個位置。這就需要準確定位這些離散存儲的碎片,同時對這些碎片進行排序,重新組合成一個完整的Office文件。
可以通過文件頭標志準確識別出硬盤空閑空間內(nèi)的Office碎片,包括三個特征值:0X 50 4B tre=、0X 50 4B 504B和0X 50 4B 504B。由于Office文檔的頭部特征值與ZIP數(shù)據(jù)塊的頭部特征值相同,這就極易出現(xiàn)誤判的情況。因此定位到一個數(shù)據(jù)碎片之后,判斷其修改時間字段,如修改時間為1980-01-01,則認定為Office文件,否則認定為ZIP數(shù)據(jù)塊。
另一個關(guān)鍵問題是如何確定哪些數(shù)據(jù)碎片屬于同一文件。這可以通過Office文檔尾部保存的ZIP核心目錄數(shù)據(jù)來確定。Office文件中的每一個對象在ZIP核心目錄區(qū)域均有一條記錄。根據(jù)每個目錄項保存的對象名、壓縮前后大小和CRC32校驗和就可以定位到離散存儲的數(shù)據(jù)碎片。同時目錄項也記錄了所有對象的排列次序,通過它也可以確定所有碎片的排序。
圖6說明的是通過目錄信息定位數(shù)據(jù)碎片的舉例。圖6-b目錄信息中的CRC32校驗和、壓縮前后文件大小和文件名與圖6-a數(shù)據(jù)碎片部分的對應(yīng)數(shù)據(jù)完全相同,可以認定這組數(shù)據(jù)碎片隸屬于當前Office文件。
軟件系統(tǒng)采用VC++6.0開發(fā),設(shè)計流程如圖7所示。首先讀取NTFS文件系統(tǒng)的BPB參數(shù)表,獲得空閑空間的分布情況。之后根據(jù)Office文件頭部特征值在空閑空間內(nèi)搜索所有Office碎片。之后依次判斷每個目錄數(shù)據(jù)碎片是否為一個完整的Office文件(即整個文件保存在一塊連續(xù)的存儲空間內(nèi))。如果不是一個完整的Office文件,則根據(jù)目錄項逐個尋找散落的數(shù)據(jù)碎片,并將它們提取、組合成一個文件。
隨后軟件自動對提取的Office文件進行解壓縮,從中提取出文件創(chuàng)建時間、編輯時間、編輯者使用的用戶名、編輯次序信息。將具有相同文件創(chuàng)建時間的Office文件劃歸為一組(即認為這些文件屬于同一個原始Office文件的編輯痕跡,依據(jù)是在一秒內(nèi)不可能創(chuàng)建多個Office文件)。最后判斷每個Office文件是否遭到破壞(可以通過CRC32檢驗和進行識別),如未損壞,則可以使用Office軟件正常打開。如果已經(jīng)遭到破壞,則使用自行開發(fā)的軟件系統(tǒng)進行打開。課題開發(fā)的軟件系統(tǒng)可以將未損壞部分正常解壓縮,使的殘留的數(shù)據(jù)信息(如部分文字、部分圖像)仍然可以正常顯示。
本文系統(tǒng)可以提取出Word、Excel、ppt文件的編輯痕跡,形成可直接查看的Office文件,同時獲取到文件的編輯次序、編輯時間、執(zhí)行編輯操作的用戶名,軟件的運行情況舉例說明見圖8~圖10。
軟件體積小,只有500kB,可以在Winxp、Win7、Win8環(huán)境下運行,工作時指定準備提取Office文件編輯過程痕跡的目標磁盤分區(qū)和用于保存提出痕跡的結(jié)果分區(qū)。例如本次測試對外置U盤“I”進行痕跡提取,結(jié)果保存在外置U盤“H”中。
軟件會自動在結(jié)果分區(qū)中創(chuàng)建一個restore文件夾,并在其中建立三個子文件夾,分別存儲提取出的DOCX、PPTX和XLSX文件編輯痕跡。提出的編輯痕跡保存在以文件創(chuàng)建時間命名的文件夾內(nèi),圖8顯示的是提取出兩個DOCX文件的編輯痕跡,這兩個文件的創(chuàng)建時間分別是2014-06-3004:26:00和2015-02-0111:17:06。
圖9顯示的是提取出的某個DOCX文件的編輯痕跡,共提取出四條痕跡,以第一條記錄為例加以解釋。
revision = 09 表示這是第9次對該DOCX文件編輯產(chǎn)生的痕跡。可以看到這四個痕跡的編輯次序并不連續(xù),缺失的痕跡有兩種情況。一是這些缺失的編輯操作不在這塊U盤上完成,例如將文件復(fù)制到其它存儲設(shè)備上,編輯完成后再復(fù)制回原U盤,同名覆蓋原始文件。二是部分缺失痕跡已被覆蓋,無法提取。modified_time = 2015-02-2608:19:00表示修改時間。lastModifiedBy = xiaoping表示這次編輯操作是由xiaoping用戶完成。creator = xiaoping表示這個文件由xiaoping用戶創(chuàng)建。
圖10顯示的是提取出的某個Excel文件的編輯痕跡,與DOCX和PPTX文件不同的是,Excel文件不能提取出編輯次序,但是Excel文件的編輯時間可以精確到秒,因此可以通過編輯時間區(qū)分出先后編輯次序。
課題組對軟件的實踐效果進行了大量測試分析,測試結(jié)果顯示,未被完全覆蓋的編輯痕跡均可正常提取,可得到編輯次序鏈條,如圖8~圖10所示。
本文針對2007和2010版本的Office軟件開發(fā)出一款文件編輯過程痕跡提取軟件系統(tǒng),該系統(tǒng)可以提取Office文件遺留在磁盤內(nèi)的痕跡數(shù)據(jù),形成一系列可以直接查看的Office文件,同時獲取到痕跡的編輯時間、編輯者的用戶名和編輯次序。
由于2003版本的Office文檔與2007和2010版本的文檔采用了完全不同的存儲方式,因此筆者計劃進一步研究根據(jù)NTFS文件系統(tǒng)日志數(shù)據(jù),提取出2003版本Office文檔的編輯過程痕跡。
[1] 戴士劍,涂彥暉.數(shù)據(jù)恢復(fù)技術(shù)(第二版)[M].北京:電子工業(yè)出版社, 2005.
[2] 徐國天. NTFS系統(tǒng)下“小文件”取證軟件的設(shè)計與實現(xiàn)[J].信息網(wǎng)絡(luò)安全,2011.
[3] 董立波,羅潔,邵永軍. SIM卡中信息提取方法的研究[J]. 刑事技術(shù), 2007.
[4] 徐國天. 基于“連帶效應(yīng)”和“過期日志”的EXT3文件系統(tǒng)數(shù)據(jù)恢復(fù)方法研究[J]. 中國司法鑒定, 2015.