秦志紅
(河南警察學(xué)院網(wǎng)絡(luò)安全系, 河南鄭州 450005)
近年來,電子數(shù)據(jù)在案件處理中被廣泛使用,其證據(jù)價(jià)值也越來越高。 除了證明涉案線索事實(shí)依據(jù)等關(guān)鍵要素,操作系統(tǒng)附加在電子數(shù)據(jù)中的時(shí)間戳也非常重要。 時(shí)間信息可以將虛擬空間中的操作與現(xiàn)實(shí)世界的行為進(jìn)行關(guān)聯(lián),在公安機(jī)關(guān)案件調(diào)查中作為關(guān)鍵線索,對形成完整的證據(jù)鏈具有非常重要的作用。 目前,各類案件涉及的電子數(shù)據(jù)來源仍然以Windows 操作系統(tǒng)為主,電子數(shù)據(jù)的主要表現(xiàn)形式為各類文件,Windows 通過文件時(shí)間戳、安全事件日志、NTFS 分區(qū)日志等方式對用戶操作文件的行為進(jìn)行記錄[1]。 不同的Windows 版本,時(shí)間線索存儲方式稍有區(qū)別,文中的實(shí)驗(yàn)操作均在Win10 環(huán)境下實(shí)現(xiàn)。
Windows 系統(tǒng)具有較高的安全性,對文件操作的過程往往采取多種方式進(jìn)行記錄,這樣就會在多個(gè)位置遺留時(shí)間痕跡,除了最常見的安全事件日志以外,NTFS 文件系統(tǒng)的元數(shù)據(jù)文件中也保留著多個(gè)時(shí)間線索。
每個(gè)文件的屬性中都包括創(chuàng)建時(shí)間、修改時(shí)間和訪問時(shí)間,被稱為文件時(shí)間戳。 Win10 系統(tǒng)下,文件的時(shí)間戳保存在文件的$MFT 中[2]。 用戶對文件進(jìn)行復(fù)制、剪切等操作時(shí),操作系統(tǒng)會自動(dòng)根據(jù)系統(tǒng)時(shí)間對$MFT 中的時(shí)間戳進(jìn)行更新,有些特殊類型的文件還會有額外的時(shí)間屬性,如,照片文件的exif 信息中會包括拍攝時(shí)間、曝光時(shí)間等,由此可以判斷用戶行為的先后順序[3]。 文件時(shí)間戳最直接的查看方法是用Windows 資源管理器列出所需要的詳細(xì)信息,然后以排序、篩選、搜索等方式鎖定線索,但要確定時(shí)間戳的真實(shí)性、關(guān)聯(lián)性,則需要深入分析文件的$MFT[4]。
Win10 的文件系統(tǒng)默認(rèn)為NTFS,NTFS 屬于日志型文件系統(tǒng),對磁盤、文件等的修改會寫入日志中,可以保證數(shù)據(jù)的安全性和可恢復(fù)性。 NTFS 的日志文件以元數(shù)據(jù)的形式進(jìn)行保存,其中$Logfile 和$UsnJrnl 中包含了對分區(qū)和文件進(jìn)行操作的大部分日志記錄[5]。 $Logfile 類似數(shù)據(jù)庫的事務(wù)管理,以頁為單位進(jìn)行存儲,每頁大小為2 048 KB,包括重啟區(qū)域、重啟區(qū)域備份和循環(huán)日志區(qū)域; $UsnJrnl位于$Extend 文件夾下,是變更日志文件,其包括兩個(gè)流數(shù)據(jù)屬性,分別是$J 和$MAX, $MAX 用來記錄設(shè)置日志的大小、時(shí)間等信息,$J 中記錄了對文件的創(chuàng)建、刪除等操作[6]。
Windows 操作系統(tǒng)對軟硬件進(jìn)行管理,過程中所發(fā)生的安全事件會以evtx 類型文件進(jìn)行記錄,這些日志文件具有特定的數(shù)據(jù)結(jié)構(gòu),包含事件級別、日期時(shí)間、事件類型、事件ID、來源等[7]。 事件級別按照所發(fā)生事件的嚴(yán)重程度或?qū)徍瞬呗?分為信息、警告、錯(cuò)誤、審核成功、審核失敗[8]。 通過分析這些日志數(shù)據(jù),可以獲得用戶在某個(gè)時(shí)間點(diǎn)所嘗試進(jìn)行的操作,以及操作系統(tǒng)認(rèn)定的操作級別或者操作的結(jié)果為成功或失敗。 Win10 系統(tǒng)自帶的事件查看器可以打開evtx 文件,并能夠按照日志的數(shù)據(jù)結(jié)構(gòu)提取存儲的記錄,根據(jù)不同字段查找篩選特定時(shí)間的用戶行為[9]。
作為證據(jù)使用的電子數(shù)據(jù),要符合合法性、客觀性和關(guān)聯(lián)性,其中文件時(shí)間信息的真實(shí)性尤其重要[10]。 下面針對Win10 下的文件$MFT 時(shí)間戳、NTFS 的$Logfile 和$UsnJrnl $J 元數(shù)據(jù),以及evtx事件日志文件進(jìn)行分析,研究如何正確分析時(shí)間線索、判斷用戶操作行為發(fā)生的順序。
通過文件屬性可以獲得時(shí)間戳,這個(gè)時(shí)間有沒有可能被篡改,如果被篡改,是否能夠檢測到并且得到真實(shí)的時(shí)間戳呢? 要想解決這個(gè)問題,需要了解文件時(shí)間戳在系統(tǒng)中的存儲方式。 Win10 操作系統(tǒng)以$MFT 屬性來存儲時(shí)間信息,分別保存在10 和30 屬性中。 其中10 屬性為基本屬性,時(shí)間戳同文件屬性的時(shí)間相同,30 屬性為文件名屬性,當(dāng)文件名發(fā)生變化時(shí),修改時(shí)間戳與10 屬性一致[11]。 如圖1 左所示為文件“1.jpg”文件記錄表MFT 中的10屬性,圖1 右所示為文件“1. jpg”的屬性。 由于WinHex 提取的$MFT 中的時(shí)間為UTC 時(shí)間,轉(zhuǎn)換時(shí)區(qū)加8 小時(shí)后得到的結(jié)果,與文件屬性中的創(chuàng)建時(shí)間、修改時(shí)間和訪問時(shí)間比對,二者是一樣的。
圖1 文件屬性中的時(shí)間戳
需要注意的是,圖1 中所示文件的創(chuàng)建時(shí)間晚于修改時(shí)間這一現(xiàn)象,可以判斷該文件是從其他位置復(fù)制過來的。
對文件重命名以后,系統(tǒng)首先把30 屬性的時(shí)間修改為10 屬性的時(shí)間,然后按照重命名的時(shí)間更新10 屬性。 如圖2 所示,“1.jpg”重命名為“2.jpg”后,10 屬性和30 屬性發(fā)生了變化。
圖2 文件重命名以后的時(shí)間變化
文件的時(shí)間屬性被人為篡改后,10 屬性就會發(fā)生改變。 要判斷這個(gè)時(shí)間是否真實(shí),可以分析30 屬性的時(shí)間,如果二者存在巨大差異,就存在文件時(shí)間被篡改的可能性。 此外,照片、Office 文檔等類型的文件屬性中還會有拍攝時(shí)間、創(chuàng)建內(nèi)容時(shí)間等,可以和$MFT 中的時(shí)間相互印證,進(jìn)一步確定時(shí)間是否真實(shí)。 如,照片文件的拍攝時(shí)間如果晚于文件的原始創(chuàng)建時(shí)間,則可以判斷文件的創(chuàng)建時(shí)間是存在問題的。
除了判斷文件時(shí)間屬性的真實(shí)性,還可以通過時(shí)間序列分析用戶行為。 以照片文件為例,一般拍攝時(shí)間最早,其次分別是30 屬性的最近訪問時(shí)間、修改時(shí)間、創(chuàng)建時(shí)間,最近的行為時(shí)間在10 屬性中存儲。
NTFS 中的元數(shù)據(jù)大多留存用戶各種行為的發(fā)生時(shí)間,其中對文件操作的痕跡會在$UsnJrnl 和$Logfile 中找到[12]。 $UsnJrnl 的$J 文件和$Logfile 的循環(huán)日志區(qū)域保存NTFS 分區(qū)中對文件的操作以及操作的具體時(shí)間,這兩個(gè)元數(shù)據(jù)文件詳細(xì)記錄了用戶對分區(qū)中各類文件所做的新建、改名等動(dòng)作,按照時(shí)間序列分析操作過程,能夠推斷用戶行為[13-14]。
以Win10 操作系統(tǒng)為例,提取NTFS 分區(qū)根目錄下的$Logfile 元文件和$Extend 下的$UsnJrnl$J 文件,使用LogFileParser 和UsnJrnl2Csv 工具分別解析,把得到的UsnJrnl. csv 和LogFile. csv 導(dǎo)入Excel,結(jié)合Reason 字段含義,可以得到文件在具體時(shí)間所進(jìn)行的操作。 一般來說,對文件的一項(xiàng)操作會同時(shí)產(chǎn)生多條日志,如,文件重命名以后,生成3條USN 記錄, Reason 分別是RENAME _ OLD _NAME、RENAME_NEW_NAME 和CLOSE + RENAME_NEW_NAME;Logfile 日志則更復(fù)雜,重命名后添加6 條記錄,除了對$UsnJrnl 的日志重新記錄,還根據(jù)$STANDARD_INFORMATION 和$INDEX_ROOT 元文件,更新了文件時(shí)間戳。
如圖3 所示,把文件“3. jpg”重命名為“4. jpg”后,“2022/4/13 9:36:24”在$UsnJrnl $J 中添加了3 條記錄,同時(shí)$Logfile 按照$UsnJrnl $J 的更新時(shí)間添加3 行日志。 系統(tǒng)進(jìn)一步對“4. jpg”的時(shí)間戳進(jìn)行了修訂,第一條$STANDARD_INFORMATION記錄中的MFT 更新時(shí)間為“2022-04-13 09:36:23”,文件訪問時(shí)間為“2022-04-13 09:36:17”,文件創(chuàng)建時(shí)間和修改時(shí)間沒有變化。 重命名完成后,第二條$STANDARD_INFORMATION 記錄顯示,其沒有改變文件的時(shí)間戳,但增加的$INDEX_ROOT 記錄對文件時(shí)間戳進(jìn)行了確認(rèn),創(chuàng)建時(shí)間、修改時(shí)間延續(xù)“3. jpg” 的 時(shí) 間 戳,MFT 時(shí) 間 和 訪 問 時(shí) 間 按 照$STANDARD_INFORMATION 記錄進(jìn)行更新。 這樣,整個(gè)操作完成后$Logfile 中添加了6 條日志,與$UsnJrnl$J 相關(guān)的3 條日志記錄了重命名的操作過程,另外3 條日志記錄用于更新時(shí)間戳。 通過分析可以得到,對文件進(jìn)行重命名時(shí),首先改變的是文件的訪問時(shí)間,然后會進(jìn)行改名操作,完成后更新MFT 時(shí)間,最后把原文件的創(chuàng)建時(shí)間和修改時(shí)間賦予新文件。
圖3 文件重命名以后的NTFS 分區(qū)日志
此外,文件刪除操作會在$UsnJrnl $J 中添加Reason 為CLOSE+FILE_DELETE 的記錄, $Logfile隨之更新,如果刪除的為U 盤等無法恢復(fù)的存儲介質(zhì)文件,則只有1 條記錄,否則會把刪除文件重命名為$R 文件,時(shí)間戳的更新類似上面重命名操作過程。 重命名屬于比較簡單的文件操作,按照文件時(shí)間戳的變化過程很容易就能夠推斷用戶行為。 較為復(fù)雜的是編輯文件操作的日志更新,在對文件進(jìn)行編輯的過程中會生成多個(gè)~tmp 文件,時(shí)間也會隨之不斷變化,這樣便可以大致推斷用戶編輯文件的時(shí)間序列。
如果對文件系統(tǒng)或文件系統(tǒng)對象,如文件、文件夾等設(shè)置了安全審核權(quán)限,Windows 操作系統(tǒng)安全日志中就會留存針對這些對象操作的記錄,Win10中這些記錄保存在%SystemRoot% System32WinevtLogsSecurity. evtx 中,可以使用事件查看器或者EventLogView 之類的工具解析查看。 其中審核文件系統(tǒng)的事件ID 主要有4656、4658、4660、4663、4664、4985、5051 和4670 等,日志內(nèi)容包括使用者、對象、進(jìn)程信息、訪問請求信息[15]。
使用者為訪問對象的系統(tǒng)賬戶SID、賬戶名、帳戶域、登錄ID 等,需要注意的是,對象登錄ID 與帳戶的成功登錄日志4624 中是一致的,在時(shí)間序列上應(yīng)該是在4624 之后才能夠生成文件訪問日志,如圖4 所示,“2022/4/25 16:34:27. 192”帳戶“DESKTOP-RO8KL9M$ ”成功登錄,“2022/4/25 16:34:35.995”該帳戶請求對文件操作,安全I(xiàn)D、登錄ID等保持一致。
圖4 對文件操作的登錄帳戶信息
對象和進(jìn)程信息部分指明操作的對象、對象句柄ID、執(zhí)行操作的進(jìn)程ID、進(jìn)程名稱等,這里操作的對象一般指文件或文件夾,進(jìn)程ID 和內(nèi)存中一樣。相同的對象句柄ID 會出現(xiàn)在多條日志記錄中,可以根據(jù)事件時(shí)間和句柄ID 推斷操作對象。 如圖5 所示為刪除文件“3. jpg”的連續(xù)兩條日志記錄。 首先在“2022/4/25 16:35:04. 620”時(shí)間,內(nèi)存進(jìn)程explorer.exe 執(zhí)行了刪除操作,被刪除對象的句柄ID為0x3c90;接下來在“2022/4/25 16:35:04.622”時(shí)間,事件記錄ID4656 的日志中操作對象句柄ID 也為0x3c90,對象名為“DeviceHarddiskVolume8 est3.jpg”,說明前一條日志中記錄的刪除對象為“3.jpg”,Windows 操作系統(tǒng)的文件資源管理器進(jìn)程是“C:Windowsexplorer.exe”,這里進(jìn)程ID 0x207c 為十進(jìn)制8316,與任務(wù)管理器中的explorer. exe 進(jìn)程相對應(yīng),如果提取了內(nèi)存鏡像,可以兩者結(jié)合并使涉案線索形成證據(jù)鏈。
圖5 刪除文件操作的日志
此外,4656、4663 等日志中還留存對文件等對象的訪問請求信息,用于記錄針對對象做不同操作時(shí)賦予進(jìn)程的各種權(quán)限。 如讀取文件數(shù)據(jù)權(quán)限ReadData、將數(shù)據(jù)寫入文件權(quán)限WriteData、讀取文件屬性權(quán)限ReadAttributes、刪除文件權(quán)限D(zhuǎn)ELETE、對文件進(jìn)行同步的權(quán)限SYNCHRONIZE 等,這些日志一般在時(shí)間序列上位于4660 之后。
盡管Windows 操作系統(tǒng)中留存了大量的時(shí)間線索,但是如果不能有效的把這些線索組織起來,各個(gè)時(shí)間不能形成完整的時(shí)間序列,也無法為案件溯源提供可靠幫助。 如上文以Win10 為例研究所述,針對文件操作的時(shí)間痕跡可以在文件時(shí)間戳、NTFS 日志文件、Windows 安全事件日志等處得到,把這些線索分類匯總、綜合分析,相同的操作在時(shí)間上相互印證,可以加強(qiáng)案件證據(jù)的真實(shí)性、關(guān)聯(lián)性,無論是審查單個(gè)證據(jù),還是形成完整證據(jù)鏈都具有重要作用。下面筆者以某案件磁盤鏡像中提取的線索為例,分析涉案文件操作時(shí)間的溯源過程。
本案中的涉案電子數(shù)據(jù)為Win10 操作系統(tǒng)下的文件“產(chǎn)權(quán)證明.pdf”,民警懷疑該文件是偽造的,嫌疑人可能進(jìn)行了一些操作。 提取嫌疑人所使用電腦的硬盤鏡像,對鏡像進(jìn)行檢索,結(jié)果只發(fā)現(xiàn)了2 個(gè)最近訪問快捷方式文件“產(chǎn)權(quán)證明.docx.lnk”和“產(chǎn)權(quán)證明.pdf. lnk”,判斷嫌疑人曾經(jīng)使用過docx 和pdf 格式的“產(chǎn)權(quán)證明”文件,并且原始文件已經(jīng)被徹底銷毀。 接下來希望通過進(jìn)一步分析,確定嫌疑人偽造“產(chǎn)權(quán)證明.pdf”的行為。
為了證明嫌疑人偽造了“產(chǎn)權(quán)證明. pdf”,采取本文的研究思路,結(jié)合相關(guān)文件留存在$MFT 時(shí)間戳、NTFS 文件系統(tǒng)元數(shù)據(jù)和系統(tǒng)安全事件日志等位置的線索進(jìn)行時(shí)間序列梳理,進(jìn)而推斷嫌疑人對文件操作的行為過程。
首先,分析文件“產(chǎn)權(quán)證明. docx. lnk”的MFT屬性,提取文件的創(chuàng)建時(shí)間為UTC +8“2022/04/07 15:58:06”,推斷在這個(gè)時(shí)間WinWord 打開了文件“產(chǎn)權(quán)證明.docx”。 進(jìn)一步分析操作系統(tǒng)的安全事件日志Security.evtx,以關(guān)鍵字“產(chǎn)權(quán)證明.docx”過濾日志記錄,發(fā)現(xiàn)在“2022/4/7 15:58:06.602”內(nèi)存進(jìn)程WINWORD. EXE 請求訪問對象“ Device HarddiskVolume8 est產(chǎn)權(quán)證明.docx”,訪問請求信息為READ_CONTROL。 如圖6 所示,二者在時(shí)間上可以相互印證,證明存在文件“產(chǎn)權(quán)證明. docx”,并且嫌疑人訪問了該文件。
圖6 “產(chǎn)權(quán)證明.docx.lnk”的時(shí)間戳和對應(yīng)系統(tǒng)日志
接下來,如圖7 所示,提取“產(chǎn)權(quán)證明.pdf.lnk”文件的$MFT,得到創(chuàng)建時(shí)間為UTC +8“2022/04/07 16:01:19”,與事件日志記錄結(jié)合分析發(fā)現(xiàn)在這個(gè)時(shí)間WINWORD. EXE 訪問了文件對象“產(chǎn)權(quán)證明.pdf”,并且請求得到寫入數(shù)據(jù)權(quán)限,這表明在“2022/04/07 16:01:19”時(shí)間點(diǎn)WINWORD.EXE 創(chuàng)建了文件“產(chǎn)權(quán)證明.pdf”。
圖7 “產(chǎn)權(quán)證明.pdf.lnk”的時(shí)間戳和對應(yīng)系統(tǒng)日志
那么,在打開“產(chǎn)權(quán)證明.docx”到生成“產(chǎn)權(quán)證明.pdf”這段時(shí)間,嫌疑人是否對文件進(jìn)行了編輯呢? 下面結(jié)合$LogFile 和$UsnJrnl $J,按照時(shí)間序列分析用戶的操作行為。
(1) 2022/4/7 9:55:20 根據(jù)$UsnJrnl $J 中的Reason 為“FILE_CREATE ”,推斷新建文件“產(chǎn)權(quán)證明. docx”;根據(jù)文件修改時(shí)間為“2022-04-03 07:47:50”,推斷文件是復(fù)制或剪切過來的,如圖8所示。
圖8 新增文件“產(chǎn)權(quán)證明.docx”
(2) 如圖9 所示2022/04/7 15:58:06,打開文件“產(chǎn)權(quán)證明.docx”,結(jié)合圖6 中顯示在事件日志中提取的線索,即同一時(shí)間創(chuàng)建的“產(chǎn)權(quán)證明. docx.lnk”文件,推斷“產(chǎn)權(quán)證明. docx”位于“DeviceHarddiskVolume8 est”文件夾下,并且WINWORD打開文件“產(chǎn)權(quán)證明. docx”的同時(shí),新建臨時(shí)文件“ ~產(chǎn)權(quán)證明. docx”,創(chuàng)建時(shí)間和修改時(shí)間均為“2022/04/7 15:58:06”。
圖9 打開文件“產(chǎn)權(quán)證明.docx”
(3) 2022/4/7 15:58:46 保存“產(chǎn)權(quán)證明.docx”,根據(jù)文件創(chuàng)建時(shí)間“2022/4/7 9:55:20”、修改時(shí)間“2022/4/7 15:58:46”,推斷文件被修改后保存,如圖10 所示。
(4) 2022/4/7 15:59:01 保存“產(chǎn)權(quán)證明.docx”,根據(jù)文件創(chuàng)建時(shí)間“2022/4/7 9:55:20”、修改時(shí)間“2022/4/7 15:59:01”,推斷文件再次修改后保存,如圖10 所示。
圖10 修改文件“產(chǎn)權(quán)證明.docx”
(5) 2022/4/7 16:01:19 新建文件“產(chǎn)權(quán)證明.pdf”,如圖11 所示。 結(jié)合圖7 中顯示的文件“產(chǎn)權(quán)證明.pdf.lnk”時(shí)間戳和系統(tǒng)事件時(shí)間,推斷涉案的“產(chǎn)權(quán)證明. pdf”是由WINWORD 在修改“產(chǎn)權(quán)證明.docx”的基礎(chǔ)上另存的文件。
圖11 創(chuàng)建文件“產(chǎn)權(quán)證明.pdf”并刪除原始文件
(6) 2022/4/7 16:01:49 刪除“ ~產(chǎn)權(quán)證明.docx”,根據(jù)文件創(chuàng)建時(shí)間“2022/4/7 9:55:20”、修改時(shí)間“2022/4/7 15:59:01”,推斷關(guān)閉“產(chǎn)權(quán)證明.docx”后沒有保存,如圖11 所示。
(7) 2022/4/7 16:05:38 根據(jù)$Logfile 和$UsnJrnl$J 中只存在“RENAME_OLD_NAME”而不存在“RENAME_NEW_NAME”的Reason 記錄,推斷徹底刪除或者剪切了“產(chǎn)權(quán)證明.docx”和“產(chǎn)權(quán)證明.pdf”,如圖11 所示。
通過分析涉案鏡像中的相關(guān)文件,提取留存在文件$MFT 時(shí)間戳、NTFS 文件系統(tǒng)元數(shù)據(jù)、系統(tǒng)安全事件日志中的線索,能夠推斷出用戶對文件操作的行為和時(shí)間,圖12 展示了以時(shí)間軸的方式對案情進(jìn)行梳理,呈現(xiàn)嫌疑人偽造“產(chǎn)權(quán)證明. pdf”的行為過程。
圖12 嫌疑人偽造過程的時(shí)間軸
綜上,結(jié)合$MFT 時(shí)間戳、安全事件日志和$LogFile、$UsnJrnl$J 中留存的時(shí)間線索,詳細(xì)分析涉案相關(guān)文件的各類痕跡,能夠合理推斷嫌疑人執(zhí)行了一系列操作,最終偽造了涉案文件“產(chǎn)權(quán)證明.pdf”,并銷毀證據(jù)。
文件操作過程中所留存的時(shí)間痕跡記錄了用戶行為的先后順序,所形成的時(shí)間線索在電子數(shù)據(jù)取證中具有重要作用。 本文基于Windows 操作系統(tǒng)的文件管理模式,以Win10 為例綜合文件MFT 屬性、NTFS 文件系統(tǒng)日志元數(shù)據(jù)、系統(tǒng)安全事件等留存的時(shí)間線索,根據(jù)時(shí)間序列分析文件的操作過程,并推斷用戶行為,為還原案件真實(shí)場景提供參考。 此外,在研究過程中發(fā)現(xiàn),對文件進(jìn)行操作時(shí)系統(tǒng)會在同一時(shí)刻生成多條日志記錄,這些記錄表示用戶的同一行為能夠觸發(fā)Windows 系統(tǒng)在多個(gè)位置遺留痕跡,如果其中某些日志被人為破壞,可以在其他位置找到蛛絲馬跡。