(空軍參謀部 北京 100038)
USB存儲設(shè)備存儲容量大,優(yōu)盤或閃存卡攜帶和隱藏方便,在工作生活中得到廣泛使用。隨著智能手機存儲容量不斷變大,很多人也將它用作移動存儲。但在國家機關(guān)、企事業(yè)單位和一些高科技公司內(nèi)部,出于網(wǎng)絡(luò)系統(tǒng)安全、敏感信息保密或知識產(chǎn)權(quán)保護的考慮,通常會限制使用移動存儲設(shè)備。因此,如何對計算機上曾使用過移動存儲設(shè)備的痕跡進行分析取證,對安全人員、保密工作者來說,成為一個不斷發(fā)展的計算機取證課題。USB設(shè)備痕跡取證作為計算機取證的重要環(huán)節(jié)[1-2],業(yè)內(nèi)孫奕探討了Windows 7 環(huán)境下電子取證特點[3]、吳玉強研究了Windows 8系統(tǒng)中的USB設(shè)備連接時間戳問題[4]。當(dāng)前,各類品牌計算機、筆記本電腦一般預(yù)裝Windows 10 操作系統(tǒng),本文基于USB設(shè)備識別機制原理,從注冊表信息、系統(tǒng)文件、系統(tǒng)日志等角度探討接入痕跡取證方法。
USB設(shè)備種類眾多,為使操作系統(tǒng)識別出具體廠商型號以加載對應(yīng)驅(qū)動,USB 執(zhí)行論壇(USB-IF)定義了具體的分類標(biāo)準(zhǔn),對每種設(shè)備分配了標(biāo)識符ID。其中,大容量存儲(Mass Storage)的ID為08h,打印機(Printer)的ID為07h,無線控制器(Wireless Controller)的ID為E0h。
根據(jù)USB 規(guī)范的規(guī)定,所有的USB設(shè)備都有確定的供應(yīng)商ID(VID)和產(chǎn)品識別碼(PID),計算機通過不同的VID和PID來區(qū)別不同的設(shè)備,VID和PID都是兩個字節(jié)長,其中,供應(yīng)商ID(VID)由供應(yīng)商向USB 執(zhí)行論壇申請[5],每個供應(yīng)商的VID是唯一的[6],PID 由供應(yīng)商自行決定。常見供應(yīng)商的VID 如表1所示。
表1 常見供應(yīng)商VID
在Windows 10系統(tǒng)中,一個完整的USB 硬件ID 由如下格式構(gòu)成:USBVID_v(4)&PID_d(4)&REV_r(4),其中,r(4)是修正碼。比如,一個HP 迷你閃存它的硬件ID 就是USBVID_0 3F0&PID_5207&REV_1100。
所有USB設(shè)備出廠時,每個硬件都有一個唯一的身份ID:iS erialNumber,設(shè)備的唯一序列碼[7]。在Windows 10系統(tǒng)中,當(dāng)插入USB存儲設(shè)備時,依次打開計算機“設(shè)備管理器”,“通用串行總線控制器”,右鍵打開“USB 大容量存儲設(shè)備”的“屬性”,在彈出的屬性對話框中選擇“詳細(xì)信息”,在“屬性”下拉框中選擇“設(shè)備實例路徑”,可以看到對應(yīng)值為“USBVID_03F0&PID_520 7AA0412700007572”,這里的“AA0412700007572”就是該設(shè)備的序列碼。如圖1所示。需要注意的是,出于成本的考慮,有的廠商會把同一批次的同型號存儲設(shè)備定義成同一序列碼,或者缺省。
圖1 USB設(shè)備詳細(xì)信息
注冊表中蘊含了最完整的USB 接入痕跡。任何一個USB 接口的設(shè)備與計算機初次連接時,操作系統(tǒng)都會在注冊表中寫入該設(shè)備相關(guān)信息[8]。在HKEY_LOCAL_MACHINESYSTEMCurrentCo ntrolSetEnum\USB下創(chuàng)建一個子鍵,形如“VID_03F0&PID_520 7”,這個就是前文提及的硬件ID,通過查找在USB-IF 官方網(wǎng)站上公布的名錄,就能確定設(shè)備供應(yīng)商、產(chǎn)品型號。
如果接入計算機的是存儲設(shè)備、手機或光驅(qū)等,還會在HKE Y_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSBSTO R下創(chuàng)建設(shè)備子鍵,一般來說,子鍵直接寫明了接入設(shè)備的產(chǎn)商和型號。展開該子鍵,就可以看到該設(shè)備的唯一標(biāo)識(iSerialNumbe r)。如圖2所示,注冊表顯示HP v155w是個存儲設(shè)備,序列號為“AA0412700007572”,與圖1一致。
圖2 USB設(shè)備在注冊表中的痕跡1
同時,在序列號子鍵下有個值項ClassGUID[9],是微軟用來確定各種設(shè)備類型的標(biāo)識,常見的設(shè)備類型見表2。值項Service中也直接寫明了設(shè)備類型,比如“disk”、“cdrom”等。圖2所示的“H P v155w USB Device”的ClassGUID值為“{4D36E96DE325-11CE-BFC1-08002BE10318}”,Service的值為“disk”,與表2一致。
表2 常見設(shè)備類型ClassGUID
此外,USB 移動存儲設(shè)備連接計算機后,會在注冊表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlDeviceCla sses{53f56307-b6bf-11d0-94f2-00a0c91efb8b}和HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlDeviceClasses{a5d cbf10-6530-11d2-901f-00c04fb951ed}下留下痕跡,如圖3所示。
圖3 USB設(shè)備在注冊表中的痕跡2
操作系統(tǒng)在上述注冊表位置記錄USB設(shè)備相關(guān)信息時,會同時打上時間戳,直接在注冊表中看不到,通過相關(guān)的API 函數(shù)可獲取子鍵的最后修改時間[10],即USB設(shè)備的最后一次使用時間。也可以選擇導(dǎo)出子鍵內(nèi)容為txt文件,就可以查看到相應(yīng)時間了,如圖4所示,HP v155w 最近一次使用時間是2019/10/30。
圖4 USB設(shè)備末次使用時間
通過注冊表可以獲取USB設(shè)備末次使用時間,而首次使用時間則可以通過系統(tǒng)文件來獲取。Windows 10系統(tǒng)中,在%HOMEDRIVE%/Windows/INF 目錄下,有一個setupapi.dev.log文件[11],用記事本打開后,就可以查找到USB設(shè)備首次使用時間,如圖5所示,HP v155w 首次使用時間是2019/08/26。
圖5 USB設(shè)備在系統(tǒng)文件中的痕跡
在Windows 10 操作系統(tǒng)的系統(tǒng)日志中,也包含USB設(shè)備插拔的痕跡[12]。依次打開“計算機管理”、“系統(tǒng)工具”、“事件查看器”、“Windows日志”、“系統(tǒng)”就可以查看本機的系統(tǒng)日志,與USB設(shè)備痕跡有關(guān)的事件ID 有225、20001、20003、24576、24577、24578。如圖6所示,系統(tǒng)在2019/08/26為HP v155w 安裝了設(shè)備驅(qū)動程序,即該設(shè)備首次使用時間為2019/08/26,與圖5一致。
圖6 USB設(shè)備在系統(tǒng)日志中的痕跡
對USB設(shè)備進行取證,通過注冊表相關(guān)鍵值來判斷是否曾經(jīng)使用過USB設(shè)備;通過設(shè)備的ClassGUID號、注冊表DeviceClasses表項等信息判斷使用的是否為存儲設(shè)備;通過獲取設(shè)備的序列號來對連接設(shè)備進行具體確定;通過比對不同計算機中有無相同序列號,來判斷同一設(shè)備是否在涉密計算機上和非涉密計算機上進行過交叉使用;結(jié)合系統(tǒng)日志和系統(tǒng)文件可以獲取USB設(shè)備的首次使用時間;通過查看注冊表相關(guān)鍵值的最后修改時間來獲得末次使用時間。綜上所述,就完成了Windows 10系統(tǒng)下USB設(shè)備使用痕跡的取證全過程。