周凱 重慶警察學院
當今信息化時代下,存在于各類計算機設備中的數據信息已成為越來越多刑事案件偵查的線索來源[1,2]。Windows操作系統作為當今全球計算機使用率最高的操作系統,針對Windows操作系統的電子數據取證一直是電子數據取證領域研究的重點之一[3],其中針對Windows操作系統中用戶常用應用軟件的行為取證分析,已成為近年來公安機關取證人員獲取案件偵查線索的途徑之一[4,5]。
中文輸入法作為Windows中文操作系統必備的一款應用程序,不僅支持中文文字編碼和輸入的功能,還具有自定義、自學習用戶詞庫功能,這一功能將系統用戶常用或者符合用戶用語習慣的字詞句以一種特定的結構形式存儲成獨立的詞庫數據集文件,以方便后期提高輸入效率。這類用戶詞庫文件留存了大量的與系統用戶直接相關的輸入痕跡信息,如目標姓名、地址、談話內容等關鍵詞,都能在輸入法用戶詞庫中有所體現,但用戶詞庫中所存儲的這些信息往往被取證人員忽略。
雖然,目前已有研究者通過對用戶輸入行為日志的研究來改善輸入法軟件性能和提升用戶體驗[6],或者利用中文拼音輸入法數據對方言詞匯進行自動識別[7],也有研究者對中文輸入法用戶詞庫的提取進行研究[8],但其研究對象主要集中于第三方輸入法,缺乏對Windows操作系統自帶輸入法用戶詞庫的研究。尤其,對于適用對象更為廣泛的Win10操作系統,其自帶的中文輸入法更是成為大量Win10用戶的默認首選,但由于對Win10系統中用戶輸入信息的存儲文件數據結構不明確,尚未有合適的方法用于對輸入痕跡信息的提取。
因此,本文以Win10操作系統自帶的中文輸入法作為研究對象,采用基于數據流的逆向分析方法,對其相應詞庫文檔結構及協議進行分析,發(fā)現數據的存儲結構,從而提取用戶輸入痕跡信息。
通過對Win10系統自帶中文輸入法程序運行進程的分析,發(fā)現與中文輸入法相關的用戶詞庫文件主要存儲在C:UsersAdministratorAppDataRoamingMicrosoftInputM ethodChs路徑下,對所有文件的屬性信息分析,發(fā)現其中文件名分別為ChsPinyinIH和ChsPinyinUDL的兩個DAT文件其屬性信息會隨著系統用戶輸入行為的發(fā)生而不斷變化。但由于其是DAT類型文件,無法直接用常規(guī)方法獲取記錄信息。
因此,利用Winhex對這兩個文件進行分析,如圖1所示,發(fā)現存儲的信息具有一定規(guī)律性,數據塊之間存在明顯分隔,并且在Unicode方式顯示下,可以很明顯發(fā)現文件名分別為ChsPinyinIH和ChsPinyinUDL的DAT文件中零散存儲著系統用戶之前輸入的字詞句信息,并且均以Unicode明碼的方式保存在數據區(qū)中。
進一步分析ChsPinyinIH.dat和ChsPinyinUDL.dat兩文件,發(fā)現ChsPinyinIH.dat文件記錄著系統用戶的中文字詞輸入信息,而ChsPinyinUDL.dat文件記錄著系統用戶的中文短句輸入信息。由此可知,Win10中文輸入法用戶詞庫信息采用獨有格式進行存儲,但沒有采用復雜的加密算法對其進行保護處理。
因此,依據中文輸入法的拼音特性,構建基于輸入數據流的逆向分析策略,對詞條信息的內部存儲數據結構進行分析。具體逆向測試策略如下:
策略1初始化用戶詞庫文件信息,分別選定一個單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察兩個文件存儲輸入信息的初始位置。
策略2將策略1所選的單詞和短句,用Win10中文輸入法重復輸入一次,其目的是探察同一詞句輸入次數改變對存儲信息的影響。
策略3有別于策略2的選擇,另選內容不同、字數一樣的單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察詞句內容的改變對已存儲輸入信息位置的影響,即獲取單個詞條存儲信息需占用的總長度。
策略4有別于之前所有策略的選擇,再另選內容不同、字數不同的單詞和短句,用Win10中文輸入法各輸入一次,其目的是探察詞句字數的改變對存儲信息的影響。同時,結合策略3和策略4對比,內容和字數的改變對存儲位置的影響。
依據上述基于數據流的逆向測試策略,對兩個DAT用戶詞庫文件進行結構分析,發(fā)現ChsPinyinIH和ChsPinyinUDL兩個DAT文件存儲的輸入記錄信息數據起始位置分別是在文件偏移地址0x1400處和0x2400處,每條用戶輸入記錄信息的存儲長度都是固定的,占用60個字節(jié)。同時,發(fā)現ChsPinyinIH.dat文件對用戶每條輸入行為信息的存儲結構主要按如圖2所示的固定格式進行存儲。其中關鍵信息主要在第一部分和第三部分的4個字節(jié)以及第四部分的24個字節(jié),第一部分存儲此條字詞的字數,第三部分存儲詞條字詞被輸入的次數,第四部分則存儲了此條字詞的具體內容。
而ChsPinyinUDL.dat文件對用戶每條輸入行為信息的存儲結構主要按如圖3所示的固定格式進行存儲。其中關鍵信息主要在第二部分的2個字節(jié)和第四部分的48個字節(jié),第二部分存儲此條短句的字數,第四部分存儲了此條短句的具體內容。
基于上述分析的結論,對其進行具體實現,分析工具軟件界面如圖4所示。其功能主要包括用戶輸入信息的數據塊檢索、數據塊結構的自解析、關鍵信息的提取及轉換,如圖5所示。
具體程序流程,如圖6所示。首先,分別檢索ChsPinyinIH和ChsPinyinUDL兩個DAT格式用戶詞庫文件中偏移地址在0x1400和0x2400之后的數據區(qū)域;然后,對該區(qū)域數據信息按特定長度進行分割,并對分割出的每條信息進行格式解析,從中提取用戶輸入詞條字數、輸入頻次、詞條內容等關鍵信息;最后,將提取出的信息進行編碼轉換并輸出。
其中,用于實現對用戶詞庫文件中用戶輸入信息數據塊遍歷檢索功能的關鍵代碼如下:
中文輸入法自學習用戶詞庫信息格式解析及提取的功能則由parseChunk()函數完成,關鍵代碼如下:
通過運行程序代碼,可實現對Win10中文系統輸入法自學習用戶詞庫文件的自動解析,進而快速、完整地提取出用戶所有的輸入痕跡。同時,利用詞云圖方式對提取結果進行整理并呈現,如圖7所示,可以明顯發(fā)現很多如地名、機構、姓名、慣用語句等具有明確意義和指向性的關鍵詞或短語,并且字體越大表示輸入的頻次越多。
另外,Win8作為微軟公司開發(fā)的第一款Windows觸屏操作系統,Win10延續(xù)了Win8的觸控模式,其與Win8系統的自帶輸入法程序是一樣的。因此通過實測,本文的提取方法依然適用于對Win8系統用戶中文輸入痕跡信息的提取。
本文通過對Windows10中文輸入法用戶詞庫的文件存儲協議格式進行分析,明確了用戶詞庫文件中存儲詞條信息的初始文件偏移位置,以及單個詞條信息存儲占用的總長度和對應詞條字數、輸入頻率、實際詞條內容的具體存儲結構。利用本文的提取方法可有效提取用戶在使用安裝了Win8、Win10操作系統的臺式或平板電腦之后留存下的中文輸入痕跡。
偵查人員在對電子設備的電子數據分析過程中,有效提取操作系統中自帶輸入法的用戶詞庫信息,可得到系統用戶的輸入痕跡信息,便于掌握計算機用戶的行為特征,拓展案件偵查線索的渠道。