鄒海林,伍琴蘭
(江西工程學院,江西 新余 338000)
木馬和蠕蟲是常見的計算機網(wǎng)絡(luò)攻擊形式,其中木馬程序可以隱藏在普通文件中,很難被殺毒軟件識別,因此生存周期更長、破壞性更強。目前常用的木馬檢測技術(shù)有防火墻、入侵檢測、行為分析等。行為分析是利用人為規(guī)定的惡意行為,判斷某個程序的動態(tài)行為是否符合規(guī)定的惡意行為,如果符合則確定為可疑程序或非法程序。將行為分析理論應(yīng)用到計算機木馬檢測系統(tǒng)中,可以對已知和未知的惡意程序進行檢測,對隱藏較深的木馬程序也能精準識別出來,從而提高了計算機抗木馬攻擊能力。
本文基于模塊化、規(guī)范化和可擴展原則設(shè)計了計算機木馬檢測系統(tǒng),該系統(tǒng)可用于Windows 平臺下木馬程序及其變種程序的檢測,實現(xiàn)對操作系統(tǒng)的全面監(jiān)控,及時攔截和清除可疑程序,顯著提升計算機操作系統(tǒng)的抗木馬攻擊能力。計算機木馬檢測系統(tǒng)基于Windows 10 平臺開發(fā),開發(fā)語言為C++,系統(tǒng)由監(jiān)控模塊、響應(yīng)模塊、木馬行為特征庫等組成,整體架構(gòu)如圖1 所示。
圖1 計算機木馬檢測系統(tǒng)的組成架構(gòu)
監(jiān)控模塊能夠?qū)ψ员?、系統(tǒng)文件、通信以及關(guān)鍵API 調(diào)用等對象進行全面監(jiān)測,若監(jiān)測到可疑行為會立即采取攔截措施;信息收集模塊會收集監(jiān)控模塊監(jiān)測到的數(shù)據(jù),并關(guān)聯(lián)程序的行為信息(如進程名、創(chuàng)建關(guān)系等),并將收集到的信息上傳到行為判定模塊;行為判定模塊利用判定算法,對收集到的信息展開分析,并將分析結(jié)果與木馬行為特征庫中的特征數(shù)據(jù)進行相似度計算,如果兩者的相似度超過設(shè)定的閾值,即可確認為木馬;響應(yīng)模塊是在行為判定結(jié)果為木馬后,發(fā)出報警信息提醒系統(tǒng)管理員,同時立即結(jié)束該程序的運行,并清除攜帶木馬的文件。同時提取本次木馬的行為特征,添加到數(shù)據(jù)庫中,不斷完善數(shù)據(jù)庫;自保護模塊可以對計算機系統(tǒng)的關(guān)鍵模塊進行重點保護,避免木馬破壞,保證系統(tǒng)的可靠運行。
本文設(shè)計的監(jiān)控模塊可以收集計算機程序的全部行為,包括攔截系統(tǒng)服務(wù)調(diào)用和I/O 請求。利用檢測規(guī)則策略控制監(jiān)測模塊各個子模塊(如注冊表監(jiān)測、通信監(jiān)測等)的開啟或關(guān)閉狀態(tài),以及設(shè)置監(jiān)控規(guī)則、監(jiān)控內(nèi)容。在檢測規(guī)則策略中有一份白名單,支持管理人員自定義白名單程序[1]。任何添加到白名單中的程序,在運行時不受監(jiān)控模塊的監(jiān)視。白名單見表1。
表1 白名單示例
同樣,除了白名單中包含的程序,其余程序均默認為“不可信程序”,需要密切監(jiān)視這些程序的行為。在首次檢測到某程序存在危險行為時,監(jiān)控模塊會根據(jù)檢查結(jié)果執(zhí)行一個判斷“是否直接報警”的程序。若判斷為“是”,則報警并中止該程序運行,將行為信息上報;若判斷為“否”,則將程序作為嫌疑程序進行重點監(jiān)控。如果再次發(fā)現(xiàn)該程序存在危險行為,則暫停程序運行,并將行為信息上報。監(jiān)控模塊的執(zhí)行流程如圖2 所示。
圖2 監(jiān)控模塊執(zhí)行流程
該模塊可接收監(jiān)控模塊上傳的行為信息,并采用進程、線程、代碼塊3 種方式進行信息組織。從技術(shù)實現(xiàn)的難易程度上看,代碼塊較為復(fù)雜,本文在設(shè)計時選擇進程/線程方式組織信息,將木馬進程和木馬啟動進程/線程的危險行為進行關(guān)聯(lián),得到行為信息的集合,作為下一步行為判定的依據(jù)。在設(shè)計行為信息集合時,在頭部加入了一個“標志”,其作用是標示該行為信息下一步的處理措施。如果標志為1,則后續(xù)處理中不再對該信息進行判定,直接報警;如果標志為0,則后續(xù)處理中需要對該行為信息做判定。信息收集模塊除了組織行為信息,還能記錄可疑程序創(chuàng)建或修改的文件、注冊表等信息,為響應(yīng)模塊徹底清除木馬提供了幫助。
該模塊是以創(chuàng)建的行為信息集合作為基礎(chǔ),對該集合中所有行為的權(quán)值求和,計算結(jié)果即為程序的可疑度。將可疑度與設(shè)定閾值作對比,如果可疑度超出閾值,則將集合中的行為信息與木馬行為特征庫進行對比,利用判定算法確定可疑程序是否為木馬。反之,如果可疑度低于閾值,則允許該程序繼續(xù)運行。由此可見,在設(shè)計行為判定模塊時,閾值的設(shè)定至關(guān)重要。閾值設(shè)定偏高,會導(dǎo)致一些木馬無法被檢測出來;閾值設(shè)定偏低,導(dǎo)致行為信息減少,判斷結(jié)果失準。本文在設(shè)計中,將可疑度的區(qū)間設(shè)定為[0,1],閾值設(shè)定為0.8。
該模塊會根據(jù)行為判定模塊提交的結(jié)果,對判定的嫌疑程序作出進一步的操作。若嫌疑程序判定為木馬,則直接中止木馬程序的運行,同時將木馬及其相關(guān)文件清除,并將該木馬的行為特征添加到木馬行為特征庫中,實現(xiàn)特征庫的更新。若嫌疑程序判定為非木馬,則根據(jù)設(shè)定的響應(yīng)方式做2 種操作:①響應(yīng)方式為“自動”,則直接放行該程序,并繼續(xù)對該程序進行密切監(jiān)控;②響應(yīng)方式為“手動”,則將嫌疑程序報告給用戶,由用戶決定是否允許程序運行[2]。響應(yīng)模塊的執(zhí)行流程如圖3 所示。
圖3 響應(yīng)過程
本文在設(shè)計計算機木馬檢測系統(tǒng)時,將響應(yīng)模塊的響應(yīng)方式默認為“自動”,減少對用戶的打擾,用戶可在系統(tǒng)的“設(shè)置”選項中修改為“手動”。
該模塊的功能是對計算機木馬檢測系統(tǒng)中其他關(guān)鍵模塊進行保護,使其免遭木馬的攻擊。自保護模塊與監(jiān)控模塊進行信息共享,在監(jiān)控模塊發(fā)現(xiàn)有可疑程序?qū)ο到y(tǒng)進程構(gòu)成威脅,或者是準備修改系統(tǒng)文件、注冊表時,會對該程序進行報警;此時自保護模塊同步啟動,實行雙進程守護,保證系統(tǒng)進程不受木馬程序的影響。
本文設(shè)計的計算機木馬檢測系統(tǒng),基于行為分析實現(xiàn)對“可疑程序是否為木馬程序”的判定。而完成這一判定的關(guān)鍵在于木馬行為的特征分析,在分析的基礎(chǔ)上歸納木馬行為特征,即可構(gòu)建起木馬行為特征庫??紤]到木馬程序的運行會對計算機系統(tǒng)帶來破壞,因此本文在進行木馬行為分析時,使用了VMware 虛擬機創(chuàng)建了虛擬的操作系統(tǒng),將木馬程序放到虛擬環(huán)境下運行,避免木馬程序?qū)χ鳈C造成破壞[3]。木馬行為分析步驟如下。
步驟1:運行VMware 虛擬機,啟動Process Monitor v3.03 系統(tǒng)監(jiān)控工具和Ice Sword v1.46 木馬檢測工具。
步驟2:在虛擬環(huán)境中運行木馬程序,同時記錄木馬在虛擬系統(tǒng)中的行為,以分析日志形式保存。
步驟3:使用查殼工具Peid 查看木馬PE 信息,若該木馬存在加殼情況,則對其進行脫殼處理。
步驟4:脫殼后,運行反匯編軟件IDA v7.2,分析關(guān)鍵API 和行為動作,分析結(jié)果以分析日志形式保存。
步驟5:重復(fù)步驟1—4,直到所有木馬樣本分析結(jié)束。
在木馬行為分析的基礎(chǔ)上,總結(jié)歸納木馬行為特征,建立木馬行為特征庫。
3.2.1 監(jiān)控功能的實現(xiàn)
該系統(tǒng)的監(jiān)控模塊用于監(jiān)視和攔截程序可疑行為,如果監(jiān)控模塊無法精準、及時地采集程序行為,那么后續(xù)的行為信息收集、行為判斷等各模塊均無法運行。監(jiān)控模塊作為木馬檢測系統(tǒng)的核心,監(jiān)控對象主要由注冊表檢測、關(guān)鍵API 調(diào)用檢測和文件檢測等組成。這里以文件檢測為例,簡述其實現(xiàn)過程。為了實現(xiàn)對文件操作行為的監(jiān)控,必須了解文件訪問過程,Windows文件訪問過程如圖4 所示。
圖4 Windows 文件訪問過程
結(jié)合圖4 可知,文件訪問是由用戶模式調(diào)用文件操作API 發(fā)起,經(jīng)系統(tǒng)服務(wù)函數(shù)傳遞到I/O 管理器,再由I/O 管理器生成IRP 請求;在請求響應(yīng)后,分別執(zhí)行文件系統(tǒng)驅(qū)動程序和存儲系統(tǒng)驅(qū)動程序,從而實現(xiàn)文件訪問?;谏鲜鲈L問過程,可采取文件過濾驅(qū)動方式對文件進行監(jiān)控[4]。具體實現(xiàn)方式:在文件系統(tǒng)驅(qū)動的基礎(chǔ)上附加一個過濾驅(qū)動程序,該程序具有較高權(quán)限,可收集任意的Windows 文件操作行為。由于該驅(qū)動程序采用分層結(jié)構(gòu),I/O 管理會將其發(fā)送到目標設(shè)備上的IRP 先發(fā)送到設(shè)備棧中。這樣一來,文件過濾驅(qū)動就能獲取IRP,進而達到監(jiān)控、截取的效果,實現(xiàn)對文件的監(jiān)控。
3.2.2 響應(yīng)功能的實現(xiàn)
當可疑程序判定為木馬,響應(yīng)模塊立即報警,并通過彈窗形式顯示報警信息,主要有2 部分:①木馬程序所在位置,如C:WindowsSystem32 est.exe;②當前操作,如終止進程,文件清除。響應(yīng)模塊強制結(jié)束木馬程序的實現(xiàn)方法是調(diào)用PspTerminateThreadByPointer,具體實現(xiàn)方法如下。
步驟1:在“用戶模式”下,確定需要中止的木馬進程PID,并將其傳遞給內(nèi)核模塊。
步驟2:在“內(nèi)核模式”下,調(diào)用PspTerminateThread-ByPointer,得到木馬程序的地址。
步驟3:調(diào)用PsLookupProcessByProcessId 獲取進程的Eprocess,確定線程鏈表頭。
步驟4:遍歷線程鏈表,并結(jié)束線程,中止木馬程序[5]。
3.2.3 自保護功能的實現(xiàn)
計算機木馬檢測系統(tǒng)的自保護功能可以做到文件防刪、注冊表防改、進程防結(jié)束等。該系統(tǒng)的自保護功能是基于雙進程守護技術(shù)實現(xiàn)的,在有效抵抗木馬攻擊的基礎(chǔ)上,還能保證主進程的穩(wěn)定運行。雙進程守護原理:在主進程以外,同步運行一個監(jiān)控進程,負責對主進程進行實時監(jiān)控。如果主進程突然結(jié)束,則立即重啟主進程。同時,在主進程中也添加了一個監(jiān)控子線程,用于監(jiān)視監(jiān)控進程。若監(jiān)控進程突然結(jié)束,則立即重啟監(jiān)控進程,如圖5 所示。將監(jiān)控模塊與自保護模塊相結(jié)合,共同構(gòu)成了自保護體系,很好地應(yīng)對木馬對本系統(tǒng)的惡意攻擊。
圖5 雙進程守護原理
木馬攻擊是造成計算機網(wǎng)絡(luò)破壞和用戶信息泄露的主要因素,鑒于木馬具有隱藏性和破壞性,要想保障計算機的運行安全和用戶的信息安全,必須要堅持預(yù)防為主、防治結(jié)合的原則。基于行為分析的計算機木馬檢測系統(tǒng),通過監(jiān)控并采集程序信息,利用木馬行為特征庫與監(jiān)控信息做對比,判斷程序是否為木馬。在確定為木馬后,立即中止木馬程序的運行,并恢復(fù)被木馬程序破壞的文件。該系統(tǒng)在準確識別木馬、恢復(fù)受損文件等方面表現(xiàn)出突出優(yōu)勢,顯著提高了系統(tǒng)抗木馬攻擊的能力。