郝姍姍,陳紅玉
(鐵道警官高等專科學(xué)校公安管理系,河南鄭州450053)
作為計算機領(lǐng)域、法學(xué)領(lǐng)域和刑事偵查領(lǐng)域的一門交叉科學(xué),計算機取證技術(shù)因其在捕獲與犯罪相關(guān)的數(shù)字證據(jù)、辨析和確認(rèn)犯罪證據(jù)和嫌疑人、有效打擊計算機犯罪等方面的出色表現(xiàn),逐漸成為人們研究與關(guān)注的焦點。計算機取證也稱數(shù)字取證,是指把計算機看作犯罪現(xiàn)場,運用先進的辨析方法,以符合法律規(guī)范的形式對計算機、相關(guān)外設(shè)和網(wǎng)絡(luò)中的數(shù)字證據(jù)進行識別、獲取、傳輸、保存、分析和提交的過程。計算機取證的主要目的就是收集數(shù)字證據(jù),重構(gòu)犯罪現(xiàn)場,為訴訟案件提供可靠、有效的證據(jù)。但數(shù)字證據(jù)本身及計算機取證過程的原則使得傳統(tǒng)計算機取證技術(shù)已不能滿足實際需要,因此對計算機取證技術(shù)的改進成為司法和計算機科學(xué)等領(lǐng)域的新挑戰(zhàn)[1]。
計算機取證分為靜態(tài)取證和動態(tài)取證。靜態(tài)取證是在事后對各種形式的存儲介質(zhì)進行提取、分析、取證的過程。這種方法主要針對文件系統(tǒng)的恢復(fù),且不能達到對系統(tǒng)完整還原的目標(biāo)。而且隨著計算機犯罪手段不斷的升級和發(fā)展,大部分犯罪嫌疑人會在入侵后掩蓋、刪改證據(jù),因而有些數(shù)據(jù)文件即使經(jīng)過技術(shù)恢復(fù)被恢復(fù)了,但仍可能是被篡改過的數(shù)據(jù),因而不能作為呈堂證據(jù)。另外,由于現(xiàn)在大部分入侵攻擊都來自計算機網(wǎng)絡(luò),采用靜態(tài)取證方法無法獲取網(wǎng)絡(luò)信息,從而對網(wǎng)絡(luò)入侵行為無能為力,所以這種方法存在一定的缺陷。動態(tài)取證是將取證技術(shù)結(jié)合到防火墻、入侵檢測技術(shù)以及蜜罐技術(shù)中,對所有可能的計算機犯罪行為進行實時數(shù)據(jù)獲取和智能分析,誘敵深入,實時監(jiān)控和分析入侵企圖,迅速采取相應(yīng)措施,在確保系統(tǒng)安全的情況下獲取大量的證據(jù)[2]。不難看出,動態(tài)取證技術(shù)能更快、更多地獲取入侵信息,實時監(jiān)控入侵活動,及時分析入侵者的活動企圖,及時獲取更多的犯罪證據(jù),也可以隨時采取相應(yīng)措施,將損失降到最小。
計算機取證是主要圍繞數(shù)字證據(jù)展開的工作,最終目標(biāo)是要把存在于計算機系統(tǒng)中的能體現(xiàn)和證明犯罪事實的各種犯罪信息以訴訟證據(jù)的形式呈送給法庭。數(shù)字證據(jù)的來源所具有的形式和內(nèi)容的特殊性,使得它們具有與傳統(tǒng)證據(jù)有別的高科技性、易滅失性、易篡改性、表現(xiàn)形式多樣性,以及保存和傳輸?shù)奶厥庑缘忍匦?,因此,為了保證取證工作的順利進行,就必須遵從一定的方法步驟。主要包括如下環(huán)節(jié)。
數(shù)據(jù)證據(jù)一般可包括靜態(tài)證據(jù)和動態(tài)證據(jù)。靜態(tài)證據(jù)主要指存儲在硬盤和移動存儲設(shè)備介質(zhì)中的數(shù)據(jù)信息,而針對計算機動態(tài)取證的動態(tài)證據(jù)主要來自計算機系統(tǒng)和正在運行的網(wǎng)絡(luò)。內(nèi)容形式上主要包括四類:
1.犯罪行為發(fā)生時的實時主機運行參數(shù);
2.與外網(wǎng)的物理鏈接狀況及網(wǎng)絡(luò)通信情況;
3.相應(yīng)的郵件信息;
4.各種日志信息。
網(wǎng)絡(luò)攻擊入侵必須依靠網(wǎng)絡(luò)進行傳輸通信數(shù)據(jù),到達目標(biāo)系統(tǒng)后才能發(fā)起攻擊行為。證據(jù)采集時可將網(wǎng)卡設(shè)為混雜模式,從而達到對經(jīng)過該網(wǎng)段的數(shù)據(jù)進行監(jiān)聽的目的,一旦發(fā)現(xiàn)報警,立即將相關(guān)運行信息保存至日志。對接受的每一個數(shù)據(jù)包,讀取包頭信息,并與規(guī)則庫中的相應(yīng)規(guī)則進行匹配,不滿足規(guī)則獲取條件的便將其丟棄,否則立即以二進制格式按時間間隔存儲為網(wǎng)絡(luò)數(shù)據(jù)文件,它們既可作為日后呈堂的證據(jù)使用,又可通過實時或事后讀取這些數(shù)據(jù)進行在線入侵分析和離線取證分析。
對犯罪現(xiàn)場勘查過程中獲取的數(shù)字證據(jù),可以采用光纜以RS-232為接口通過異步數(shù)據(jù)傳輸?shù)姆绞?,從被取證的計算機系統(tǒng)中安全轉(zhuǎn)移到取證分析機上。由于計算機取證的整個過程有不可篡改性的要求,因此,數(shù)據(jù)在傳送前要先對數(shù)據(jù)進行MD5校驗、數(shù)字簽名和壓縮等操作,通過認(rèn)證、加密后使用VPN進行傳送。
鑒于計算機證據(jù)作為證據(jù)呈堂時形式與內(nèi)容的特殊性,因而必須保證被保存證據(jù)的真實性、可靠性、完整性與合法性。一般在保存證據(jù)時使用一定的存儲介質(zhì)如硬盤或光盤進行原始鏡像備份,并可使用加密、物理隔離、數(shù)字簽名、時間戳等技術(shù)措施來作保全和固定的保證。
通過證據(jù)獲取階段獲取的證據(jù)數(shù)據(jù)量是龐大且不斷更新的,取證系統(tǒng)如何從海量且變化的數(shù)據(jù)中深入地分析出正常與異常數(shù)據(jù),如何挖掘出有效信息,提取出與計算機犯罪案件相關(guān)的、反映案件事實的相關(guān)信息和直接證據(jù),并提取、固定可被法庭接受的數(shù)字證據(jù)已成為動態(tài)取證過程的關(guān)鍵。在動態(tài)取證的證據(jù)分析階段,通常運用專用的輔助分析軟件工具篩選已獲取數(shù)據(jù),從中尋找、匹配關(guān)鍵詞短語,根據(jù)已獲取的文件或數(shù)據(jù)的用詞、語法和編程風(fēng)格,推斷出作者使用的工具與技術(shù),挖掘出同一犯罪事件中不同證據(jù)間的聯(lián)系,根據(jù)數(shù)據(jù)進行犯罪實施過程的確定與再現(xiàn),包括入侵事件、使用IP地址、修改的文件、增加的文件、刪除的文件、上傳和下載的文件等[3]。
根據(jù)當(dāng)前取證技術(shù)的缺陷和實際工作需要,本文設(shè)計的計算機動態(tài)取證系統(tǒng),綜合運用計算機取證技術(shù)與網(wǎng)絡(luò)監(jiān)控技術(shù),能自動審核全網(wǎng)計算機對注冊表、文件、網(wǎng)絡(luò)的任何操作,對存在的可疑文件及操作自行跟蹤并收集數(shù)據(jù)。一旦發(fā)現(xiàn)犯罪行為,取證系統(tǒng)立刻啟動,進行動態(tài)取證,因此能夠較為完整地記錄系統(tǒng)工作及網(wǎng)絡(luò)犯罪事件的全過程。系統(tǒng)能動態(tài)收集、識別犯罪證據(jù),并能及時分析犯罪企圖,將犯罪損失降到最低。同時系統(tǒng)將經(jīng)過分析、提取的證據(jù)傳送至證據(jù)庫作證據(jù)保全[4]。在證據(jù)的傳送、保存過程中,系統(tǒng)采取認(rèn)證、加密、隔離等安全手段,以確保證據(jù)的真實性、準(zhǔn)確性及不可篡改性,使其成為有效的法庭證據(jù)。系統(tǒng)在對取證的事跡、地點、環(huán)境的把握上明顯優(yōu)于靜態(tài)取證。系統(tǒng)采用Client/Server結(jié)構(gòu),主要由服務(wù)器、取證代理、網(wǎng)絡(luò)取證機、取證分析機、管理控制臺等部分組成。整個系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
本文所討論的動態(tài)取證系統(tǒng)不但針對傳統(tǒng)的來自網(wǎng)絡(luò)外部的以網(wǎng)絡(luò)內(nèi)的計算機系統(tǒng)為目標(biāo)的犯罪行為,同時還獲取包括來自網(wǎng)絡(luò)內(nèi)部的以計算機系統(tǒng)為工具的濫用、越權(quán)使用等犯罪行為。本系統(tǒng)由三個部分組成:注冊表狀態(tài)監(jiān)控模塊、文件操作監(jiān)控模塊和上網(wǎng)記錄監(jiān)控模塊。注冊表狀態(tài)監(jiān)控模塊主要利用鉤子技術(shù)(Hook技術(shù))監(jiān)控注冊表的活動,對所有注冊表操作進行記錄分析。文件操作監(jiān)控模塊則是對文件信息的變更、復(fù)制傳播等操作進行記錄統(tǒng)計,必要時能阻止有威脅的信息傳播。上網(wǎng)記錄監(jiān)控模塊主要利用WinPcap抓獲數(shù)據(jù)包,解析數(shù)據(jù)包,并獲取相關(guān)數(shù)據(jù)。
1.注冊表狀態(tài)監(jiān)控原理
注冊表狀態(tài)監(jiān)控模塊監(jiān)控并顯示被監(jiān)控機系統(tǒng)注冊表的活動情況,能夠查詢系統(tǒng)中注冊表調(diào)用的情況,借用函數(shù)(Openkey,Closekey,QueryValue,QueryvalueEX,Enumkey等)指出調(diào)用注冊表的操作以及調(diào)用注冊表操作的相關(guān)進程(指出是哪個進程調(diào)用了注冊表),進程所關(guān)聯(lián)的注冊表的位置,該進程是否已成功地訪問了注冊表和當(dāng)前所訪問注冊表的鍵值。該模塊具有查找某個鍵值的功能,可以過濾出我們要監(jiān)控的鍵值,對某個指定的鍵值具有修改性。當(dāng)需要對注冊表進行寫操作時,如果該鍵值需要保護,可以給予阻斷。
Windows基于對象的訪問控制權(quán)限要求用戶要調(diào)用內(nèi)核組件的功能,就必須通過系統(tǒng)服務(wù)調(diào)用來實現(xiàn)。應(yīng)用程序先調(diào)用API函數(shù),再通過Ntdll.Dll提供的用戶模式函數(shù)接口進入內(nèi)核模式,然后訪問系統(tǒng)服務(wù)調(diào)度表(System Service Dispath Table即SSDT)得到相應(yīng)的服務(wù)函數(shù)入口地址,最后調(diào)用相應(yīng)的系統(tǒng)服務(wù)函數(shù)完成操作。
為了達到注冊表監(jiān)控的目的,我們可以修改SSDT所監(jiān)控的系統(tǒng)服務(wù)程序的入口地址,使之變?yōu)樽远x的監(jiān)控函數(shù)的地址。這樣一來應(yīng)用程序在進行系統(tǒng)調(diào)用時便先執(zhí)行掛接的模塊,然后再執(zhí)行原始系統(tǒng)服務(wù)地址處的函數(shù),從而實現(xiàn)了對注冊表監(jiān)控的目的。而要實現(xiàn)監(jiān)控模塊,關(guān)鍵在于定位系統(tǒng)服務(wù)調(diào)度表。在Windows系統(tǒng)中有一個未公開的單元KeService Descriptor Table,通過它可實現(xiàn)對SSDT的訪問與修改。該單元對應(yīng)一個數(shù)據(jù)結(jié)構(gòu),其中一個參數(shù)(定義為Service Table Base)表示系統(tǒng)服務(wù)程序的地址,修改該參數(shù)就可實現(xiàn)對相關(guān)系統(tǒng)服務(wù)調(diào)用的Hook。
2.注冊表狀態(tài)監(jiān)控模塊流程
在本監(jiān)控模塊內(nèi),我們新建了函數(shù)Hook On及Hook Off來響應(yīng)開啟和關(guān)閉監(jiān)控命令,以達到掛接目的。當(dāng)某應(yīng)用程序要對注冊表進行操作時,先通過相應(yīng)的API函數(shù)及動態(tài)鏈接庫進入內(nèi)核,進而調(diào)用相應(yīng)的函數(shù)。我們定義了鉤子函數(shù) ZwSetValueKeyHook,通過它可以實現(xiàn):獲取要操作的注冊表鍵名,與規(guī)則庫中所定義的鍵名進行比較,根據(jù)規(guī)則中要求進行下一步操作,如如允許通過、拒絕、詢問用戶等。另外,我們還定義了一個日志函數(shù) Log Txt,該函數(shù)記錄對注冊表操作的日期、具體操作的鍵以及處理結(jié)果,再利用On Button Log Saving函數(shù)可將日志導(dǎo)出以便日后查詢。本模塊是在VC6.0環(huán)境下生成,主要包括Hide Hook驅(qū)動及Reg Hook文件。點擊Reg Hook后便先啟動后臺監(jiān)控進程Hide Hook,此時本模塊便處于監(jiān)控狀態(tài)。
文件操作監(jiān)控作為保障信息安全的有效機制,可以實現(xiàn)對本地各類文件和用戶操作的保護與監(jiān)控。通過對文件和用戶操作等監(jiān)控技術(shù)的深入研究分析,可以更好地根據(jù)系統(tǒng)需求選用適當(dāng)?shù)募夹g(shù)方式,提高監(jiān)控的針對性,確保系統(tǒng)的穩(wěn)定與高效。
1.文件實時監(jiān)控技術(shù)
文件實時監(jiān)控技術(shù)的核心就是文件系統(tǒng)的過濾器驅(qū)動(File System Filter Driver),這種驅(qū)動運行于操作系統(tǒng)的核心模式,它可以針對文件的任何操作(打開、創(chuàng)建、修改、關(guān)閉、刪除等)進行實時監(jiān)查,病毒感染文件以及其他任何相關(guān)操作都會被監(jiān)控[5]。
文件操作監(jiān)控模塊主要是基于Windows API完成的。Windows應(yīng)用程序接口(API)是Windows系統(tǒng)提供給用戶進行系統(tǒng)編程和外設(shè)控制的函數(shù)庫。其中,與實現(xiàn)文件變更監(jiān)控相關(guān)的API函數(shù)為Read Directory Changes W。模塊可以利用重定義 Read Directory Changes W函數(shù)進行監(jiān)控:用戶首先通過定制監(jiān)控目錄選擇要監(jiān)控的網(wǎng)頁文件。當(dāng)進行實時監(jiān)控時,系統(tǒng)啟動多個并發(fā)的監(jiān)控線程對多個目錄實施實時監(jiān)控,一個線程監(jiān)控一個目錄。傳送控制部分負(fù)責(zé)啟動監(jiān)控線程,接收監(jiān)控線程傳來的目錄變更的消息,并根據(jù)消息將備份文件覆蓋異常文件,產(chǎn)生報警和審計信息。
2.模塊系統(tǒng)的運行
打開應(yīng)用程序后,在主界面窗口可通過工具欄上的按鈕選項設(shè)置調(diào)出子窗口監(jiān)視選項來設(shè)置監(jiān)控的內(nèi)容。當(dāng)要監(jiān)控文件時,只要單擊“選項設(shè)置”就可以彈出如下的監(jiān)視選項窗口,我們可以通過選擇該窗口中的五個要監(jiān)控內(nèi)容來設(shè)置,即通過更改Settings.ini文件中的m_bAddNew0,m_bDel0,m_ bRename0,m_bModify0,m_bOther0五個參數(shù)設(shè)置的“0”和“1”兩個值來控制。同時還提供四個輔助項來方便使用。設(shè)置完以上信息后,我們可以直接單擊“開始監(jiān)控”運行程序,而監(jiān)視到的內(nèi)容就會在工具欄下面的操作顯示列表框中列出來。
單擊停止監(jiān)控后,可以通過單擊信息存儲來保存列表框中的數(shù)據(jù)。通過定義Save As Text File和Save As Excel File函數(shù)分別實現(xiàn)利用txt和Excel兩種格式保存列表框中的數(shù)據(jù)。
上網(wǎng)記錄監(jiān)控模塊主要利用WinPcap抓獲數(shù)據(jù)包,解析數(shù)據(jù)包,并獲取相關(guān)數(shù)據(jù)。具體步驟如下:
第一步:得到網(wǎng)絡(luò)驅(qū)動列表;
第二步:打開網(wǎng)卡捕獲數(shù)據(jù)包;
第三步:對數(shù)據(jù)流進行過濾;
第四步:對數(shù)據(jù)包進行解析;
第五步:收集并統(tǒng)計網(wǎng)絡(luò)流量。
1.抓包過程
本模塊關(guān)鍵的第一步就是能否抓取數(shù)據(jù)包,如果不能夠抓取數(shù)據(jù)包也就無法繼續(xù)進一步對數(shù)據(jù)包解析以及獲取相關(guān)的數(shù)據(jù)。
抓取數(shù)據(jù)包的主要過程。首先,通過pcap_findalldevs函數(shù)獲取設(shè)備的網(wǎng)絡(luò)接口,再將所獲取的接口給打印出來。而后獲取的網(wǎng)絡(luò)接口中,一般有1到2個網(wǎng)絡(luò)接口,選取合適的網(wǎng)絡(luò)接口。緊接著就跳轉(zhuǎn)到選中的適配器,用pcap_open_live函數(shù)打開設(shè)備,并設(shè)置好相關(guān)的系數(shù),包括捕獲數(shù)據(jù)包的大小、選擇過濾器模式、讀入超時以及錯誤緩沖池等。然后分別用pcap_compile函數(shù)和pcap_setfilte函數(shù)進行編譯和設(shè)置過濾器。最后一步就是等待數(shù)據(jù)包,只要有數(shù)據(jù)包通過就用pcap_loop函數(shù)將數(shù)據(jù)包進行捕獲,然后將數(shù)據(jù)包放入緩沖池內(nèi)以待進一步對數(shù)據(jù)包的分析。
2.數(shù)據(jù)分析
接著下一步就是對捕獲到的數(shù)據(jù)包進行分析以獲取我們想要的相關(guān)信息。而本模塊獲取的數(shù)據(jù)包相關(guān)信息主要包括目的IP地址、源IP地址、目的MAC地址、源MAC地址、端口以及傳輸?shù)膮f(xié)議等信息[6]。對于分析數(shù)據(jù)包,本模塊則用packet_handler這個函數(shù),利用這個函數(shù)將時間戳轉(zhuǎn)換成我們可識別的格式,并且從數(shù)據(jù)包中分別獲取目標(biāo)MAC地址、源MAC地址,獲得UDP首部的位置,將網(wǎng)絡(luò)字節(jié)序列轉(zhuǎn)換成主機字節(jié)序列,而后將IP地址和UDP端口打印出來,獲取協(xié)議的類型,最后將整個數(shù)據(jù)包打印出來。
3.日志審計
通過以上的步驟得到了數(shù)據(jù)包的相關(guān)數(shù)據(jù),然后利用ADO連接Access數(shù)據(jù)庫,將數(shù)據(jù)庫與程序相鏈接,將程序中所獲取的相關(guān)數(shù)據(jù)用insert函數(shù)插入到數(shù)據(jù)庫中,這就生成了日志庫。而后就是通過數(shù)據(jù)庫對數(shù)據(jù)的查詢,對此,數(shù)據(jù)庫用_RecordsetPtr->Open函數(shù)進行數(shù)據(jù)的查詢,用_RecordsetPtr->GetCollect函數(shù)對數(shù)據(jù)庫記錄中字段的索引。
4.測試
經(jīng)過在局域網(wǎng)的測試,在程序啟動的情況下,程序處于一種等待的狀態(tài),只要在局域網(wǎng)中有數(shù)據(jù)流的流動,程序就能夠?qū)⑦@些數(shù)據(jù)予以捕獲并將其分析。
由上可知,本模塊可以通過數(shù)據(jù)包獲得目的MAC地址、源MAC地址、目的IP地址、源IP地址、協(xié)議類型以及時間戳等信息,并且還可以獲得整個數(shù)據(jù)包的數(shù)據(jù)。
在對現(xiàn)有的監(jiān)控理論技術(shù)深入研究的基礎(chǔ)上,將這些監(jiān)控技術(shù)合理有效地組合,即可制作計算機動態(tài)取證系統(tǒng)。本系統(tǒng)包括注冊表狀態(tài)監(jiān)控模塊、文件操作監(jiān)控模塊和上網(wǎng)記錄監(jiān)控模塊三個模塊,三大系統(tǒng)模塊各具特色。
1.注冊表狀態(tài)監(jiān)控模塊能夠及時發(fā)現(xiàn)應(yīng)用程序運行過程中對注冊表敏感部分的讀寫、修改操作,從而阻止惡意軟件的相關(guān)操作。
2.文件操作監(jiān)控模塊自動記錄硬盤中的文件操作信息,并儲存到日志庫中,供用戶了解文件的操作情況,為用戶阻止非法活動的進一步擴散提供方便。
3.上網(wǎng)記錄監(jiān)控模塊能夠?qū)τ嬎銠C的上網(wǎng)行為提供詳細的審計信息,它能過濾全網(wǎng)通過的數(shù)據(jù)包流,監(jiān)控網(wǎng)絡(luò)的數(shù)據(jù),從而保證網(wǎng)絡(luò)的數(shù)據(jù)傳輸?shù)陌踩?/p>
[1]張岳.計算機網(wǎng)絡(luò)犯罪淺析[J].河南公安高等??茖W(xué)校學(xué)報,2003,(6).
[2]劉琴.判定速算法在計算機取證中的應(yīng)用[J].計算機應(yīng)用與軟件,2008,(7).
[3]鐘秀玉,凌捷.計算機動態(tài)取證的數(shù)據(jù)分析技術(shù)研究[J].計算機應(yīng)用與軟件,2004,(9).
[4]杜建民,任輝.淺談計算機取證[J].網(wǎng)絡(luò)信息安全,2004,(3).
[5]史偉奇.基于木馬的計算機監(jiān)控和取證系統(tǒng)研究[J].計算機工程與設(shè)計,2007,(10).
[6]李煥洲.一個基于跟蹤的計算機取證過程模型[J].微計算機信息,2007,(3).