吳 晨, 王 雄
(西安郵電大學(xué) 物聯(lián)網(wǎng)與兩化融合研究院, 陜西 西安 710061)
一種虛擬化惡意程序檢測(cè)系統(tǒng)的實(shí)現(xiàn)
吳 晨, 王 雄
(西安郵電大學(xué) 物聯(lián)網(wǎng)與兩化融合研究院, 陜西 西安 710061)
為了自動(dòng)智能檢測(cè)出新變種的惡意程序,使用虛擬執(zhí)行與應(yīng)用程序接口鉤子技術(shù),分析程序執(zhí)行中調(diào)用的系統(tǒng)接口,將接口調(diào)用順序編碼形成一個(gè)特征序列。運(yùn)用編輯距離算法計(jì)算程序特征序列與數(shù)據(jù)庫(kù)中惡意特征序列的相似度,實(shí)現(xiàn)自動(dòng)判別惡意種類(lèi)的功能。在隨機(jī)選取樣本的的前提下,本系統(tǒng)對(duì)樣本分析后結(jié)果表明,檢測(cè)識(shí)別精確度達(dá)到92%,誤報(bào)率僅為6%。
接口鉤子;虛擬化;惡意程序檢測(cè);編輯距離算法
隨著互聯(lián)網(wǎng)的快速發(fā)展,惡意程序的數(shù)量和傳播速度也隨之發(fā)生幾何性的增長(zhǎng)。數(shù)量眾多的惡意程序無(wú)疑給傳統(tǒng)的分析方式帶來(lái)巨大的沖擊,靜態(tài)掃描存在不能及時(shí)發(fā)現(xiàn)木馬變種等問(wèn)題,而動(dòng)態(tài)分析需要人工介入,嚴(yán)重影響了分析效率。判定程序是否具有惡意性是一項(xiàng)困難的任務(wù),不存在一種檢測(cè)方法能夠檢測(cè)出所有的惡意程序,也不存在一種方法可以檢測(cè)出某一個(gè)特定惡意程序的所有變體。
目前產(chǎn)業(yè)界檢測(cè)惡意程序普遍采用靜態(tài)掃描分析為主,人工介入動(dòng)態(tài)分析為輔的方式。靜態(tài)掃描檢測(cè)方式對(duì)已知惡意程序的檢測(cè)識(shí)別率較高,但對(duì)于新型變種程序與未知惡意程序的識(shí)別率較低。人工介入動(dòng)態(tài)分析雖然可以提高檢測(cè)識(shí)別率,但是由于全過(guò)程都需要人工介入,分析的效率非常低,而且只有少數(shù)具有專(zhuān)業(yè)能力的技術(shù)人員才能勝任這項(xiàng)工作,分析的門(mén)檻較高。
基于以上考慮,本文擬設(shè)計(jì)一種結(jié)合虛擬化與應(yīng)用程序編程接口鉤子(Application Programming Interface Hook, API hook)技術(shù)的動(dòng)態(tài)惡意程序分析檢測(cè)系統(tǒng),針對(duì)惡意程序的全自動(dòng)化分析,并保持分析過(guò)程和生成結(jié)果相互獨(dú)立隔離?;谔摂M化的動(dòng)態(tài)分析程序運(yùn)行時(shí)調(diào)用系統(tǒng)API特征序列和操作行為,采用編輯距離算法(Levenshtein Distance, LD)[1]計(jì)算程序操作行為與典型惡意程序操作行為之間的相似度,從而實(shí)現(xiàn)對(duì)程序惡意性的近似判定。
自惡意程序出現(xiàn)以來(lái),惡意程序檢測(cè)技術(shù)一直是計(jì)算機(jī)安全領(lǐng)域關(guān)注的焦點(diǎn)。先后有大批的研究人員參與到惡意程序檢測(cè)技術(shù)的研究中,取得了一些進(jìn)展。
2001年,一種基于數(shù)據(jù)挖掘的惡意程序檢測(cè)方法被首次提出,該方法主要思路是對(duì)文件進(jìn)行靜態(tài)二進(jìn)制特征檢測(cè)[2]。
2004年,基于N-Gram特征碼的新型惡意代碼檢測(cè)手段[3]被提出。N-Gram算法能夠有效抽取頻率最高的特征,將抽取到的特征定義為檢測(cè)規(guī)則,依據(jù)與其匹配的情況來(lái)區(qū)分該程序是良性的還是惡意的。
2008年,有學(xué)者通過(guò)研究某些病毒及其變種版本在執(zhí)行過(guò)程中API調(diào)用序列的規(guī)律,提出了一種基于動(dòng)態(tài)分析的檢測(cè)技術(shù)[4],從已知病毒的API調(diào)用序列中提取出有價(jià)值的關(guān)聯(lián)規(guī)則,用于指導(dǎo)病毒檢測(cè),該方法對(duì)未知病毒檢測(cè)有良好的效果。
2012年,一種基于證據(jù)推理的程序惡意性判定方法被提出[5]。該方法通過(guò)將程序進(jìn)行反編譯,提取其中可能會(huì)影響安全性的行為特征建立集合,然后使用BP神經(jīng)網(wǎng)絡(luò)的模型對(duì)其進(jìn)行處理得到各種行為的概率分配函數(shù),并使用加權(quán)求和形式對(duì)程序行為進(jìn)行合成,從而實(shí)現(xiàn)對(duì)程序惡意性的判定。
2012年,有人設(shè)計(jì)出一種基于進(jìn)程行為比對(duì)的木馬分析檢測(cè)系統(tǒng)[6]。在該設(shè)計(jì)中,通過(guò)主動(dòng)分析程序的安裝和啟動(dòng)行為,結(jié)合人工參與形成判定規(guī)則,使用行為比對(duì)來(lái)檢測(cè)目標(biāo)程序是否為木馬,并設(shè)計(jì)了一種基于貝葉斯理論的木馬行為分類(lèi)算法。
2012年,又有人設(shè)計(jì)并實(shí)現(xiàn)了一種基于沙箱技術(shù)的惡意程序檢測(cè)系統(tǒng)[7]。該系統(tǒng)運(yùn)用了重定向技術(shù)設(shè)計(jì)了一種沙箱,將程序運(yùn)行在沙箱中進(jìn)行監(jiān)控并記錄行為。在論文中提出基于層次分析法來(lái)檢測(cè)惡意程序,簡(jiǎn)單來(lái)說(shuō)就是將不同的惡意行為分層分配權(quán)重,然后對(duì)檢測(cè)程序的行為序列進(jìn)行加權(quán)求和,并設(shè)定一個(gè)閥值來(lái)確認(rèn)程序的惡意性。
與以上方法不同,在系統(tǒng)架構(gòu)方面,可考慮采用虛擬化與API hook技術(shù)相結(jié)合的雙層隔離動(dòng)態(tài)分析系統(tǒng),以記錄程序執(zhí)行時(shí)的各種操作和API調(diào)用序列。相對(duì)于基于沙箱的分析系統(tǒng)而言,此模式更能有效的獲得最貼近于實(shí)際環(huán)境的API調(diào)用序列。因?yàn)榇四J剿璧南到y(tǒng)資源不是模擬出來(lái)的,且可以有效防范最新出現(xiàn)的具有穿透沙箱功能的惡意程序,從而避免對(duì)物理環(huán)境造成破環(huán)。另外,對(duì)于判別惡意程序的算法設(shè)計(jì),不妨先建立一組典型惡意行為規(guī)則序列,并借助LD算法計(jì)算程序操作行為序列與建立的規(guī)則序列之間的相似度,從而得出對(duì)程序惡意性的分析結(jié)果。
系統(tǒng)主要由分析虛擬機(jī)系統(tǒng)、報(bào)告生成和存儲(chǔ)系統(tǒng)兩大部分組成。其中虛擬機(jī)系統(tǒng)包含了API hook子系統(tǒng)、惡意性判定子系統(tǒng)這兩個(gè)分析核心子系統(tǒng)。分析結(jié)果包括文件操作、注冊(cè)表操作、進(jìn)程服務(wù)、網(wǎng)絡(luò)、運(yùn)行截圖五個(gè)模塊。系統(tǒng)整體框架如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
(1) 虛擬機(jī)系統(tǒng)
虛擬機(jī)系統(tǒng)采用VMware Workstation環(huán)境搭建,運(yùn)行在分析服務(wù)器之上,是程序執(zhí)行的場(chǎng)所。每次分析則啟用快照運(yùn)行,然后將待分析程序上傳至虛擬機(jī)執(zhí)行。共包括文件操作、注冊(cè)表操作、進(jìn)程服務(wù)、網(wǎng)絡(luò)、運(yùn)行截圖五個(gè)模塊,虛擬機(jī)系統(tǒng)可以有效的避免惡意程序在執(zhí)行過(guò)程中的逃逸破壞。
(a) API hook子系統(tǒng)
該子系統(tǒng)實(shí)現(xiàn)對(duì)關(guān)鍵API的攔截,通過(guò)關(guān)鍵API序列可以有效的得出待檢測(cè)程序的行為。該子系統(tǒng)運(yùn)行在虛擬機(jī)系統(tǒng)上。
(b) 惡意性判定子系統(tǒng)
惡意性判定子系統(tǒng)也運(yùn)行在虛擬機(jī)子系統(tǒng)之上,其作用是將API hook子系統(tǒng)分析得出的API序列與規(guī)則庫(kù)中的典型惡意行為規(guī)則序列做運(yùn)算,判斷程序是否具有惡意。
(2) 報(bào)告生成和存儲(chǔ)系統(tǒng)
在虛擬機(jī)系統(tǒng)完成分析后,會(huì)將分析數(shù)據(jù)生成一份XML文件。這份XML文件將回傳到物理服務(wù)器上,經(jīng)過(guò)讀取生成分析報(bào)告,并將過(guò)程存儲(chǔ)在數(shù)據(jù)庫(kù)中。
2.1 系統(tǒng)執(zhí)行流程
系統(tǒng)執(zhí)行流程如圖2所示,分析系統(tǒng)啟動(dòng)后,首先獲取程序MD5值進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)工作,若數(shù)據(jù)庫(kù)中已經(jīng)存在該程序的分析結(jié)果則終止分析過(guò)程,避免對(duì)程序的重復(fù)分析行為。
圖2 系統(tǒng)執(zhí)行流程
判斷程序未經(jīng)過(guò)分析且為可執(zhí)行文件后,服務(wù)器會(huì)開(kāi)啟事先制作好的虛擬機(jī)快照子系統(tǒng),該虛擬機(jī)系統(tǒng)快照時(shí)已經(jīng)完成系統(tǒng)初始化工作,即已完成重定向路徑的設(shè)置、hook NtResumeThread函數(shù)等操作。虛擬機(jī)系統(tǒng)內(nèi)置研究總結(jié)出的幾百種惡意軟件惡意行為規(guī)則序列和比較算法程序,用于與被測(cè)程序的行為規(guī)則序列做相似運(yùn)算。
2.2 API hook子系統(tǒng)設(shè)計(jì)
API hook又名API鉤子,是一種用于改變 API 執(zhí)行結(jié)果的技術(shù)。鉤子實(shí)際上是一個(gè)處理消息的程序段,通過(guò)系統(tǒng)調(diào)用,把它掛入系統(tǒng)。每當(dāng)程序調(diào)用系統(tǒng)API時(shí),在沒(méi)有到達(dá)目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權(quán)。這時(shí)鉤子函數(shù)自定義代碼即可以修改該消息,即實(shí)現(xiàn)了 API hook。
Windows常用API有2 000多種,但是大部分API對(duì)惡意程序來(lái)說(shuō)是不會(huì)用到的。惡意程序調(diào)用的API函數(shù)大多數(shù)集中在應(yīng)用層的級(jí)別上,因此只需監(jiān)測(cè)少數(shù)特定的API調(diào)用行為即可滿(mǎn)足惡意判定的需求。
根據(jù)Ulrich Bayer的多年研究指出:惡意程序經(jīng)常使用Windows系統(tǒng)的75個(gè)API(其中文件操作、注冊(cè)表操作、進(jìn)程操作、服務(wù)操作、網(wǎng)絡(luò)連API分別為16、14、19、14、12個(gè))[8]。我們分別對(duì)每個(gè)API函數(shù)進(jìn)行不重復(fù)的單字符串編碼,鑒于篇幅原因表1只列出其中文件操作和注冊(cè)表操作API編碼對(duì)應(yīng)表示。
表1 API編碼部分對(duì)應(yīng)表
根據(jù)程序執(zhí)行時(shí)監(jiān)測(cè)到的API調(diào)用順序,將其按照上表編碼成一個(gè)序列
A=(X1,X2,…,Xn)(Xi∈J,i=1,2,…,n),
其中J表示API函數(shù)編碼的集合。序列A將根據(jù)惡意性判定子系統(tǒng)中的規(guī)則做運(yùn)算。
2.3 惡意性判定子系統(tǒng)設(shè)計(jì)
三是打造一張麗水特色的“金名片”。力爭(zhēng)通過(guò)2-3年時(shí)間的努力,把儲(chǔ)備公司打造成浙江省乃至全國(guó)儲(chǔ)備土地經(jīng)營(yíng)管理的一張“金名片”。統(tǒng)一設(shè)計(jì)LOGO、標(biāo)識(shí)、門(mén)牌、導(dǎo)向牌等,對(duì)現(xiàn)有儲(chǔ)備土地的圍墻四周?chē)娎L“國(guó)土儲(chǔ)備LOGO”等明顯標(biāo)志,對(duì)停車(chē)場(chǎng)、城市農(nóng)場(chǎng)等門(mén)頭進(jìn)行統(tǒng)一設(shè)計(jì),統(tǒng)一品牌名稱(chēng)為“金土地”,如“金土地停車(chē)場(chǎng)”“金土地城市農(nóng)場(chǎng)”等,樹(shù)立新形象,讓市區(qū)所有的儲(chǔ)備土地成為向市民展示美好形象的載體。同時(shí),通過(guò)各種媒體向社會(huì)宣傳公司的管理職能和經(jīng)營(yíng)范圍,傳播國(guó)土相關(guān)的法律法規(guī)知識(shí),爭(zhēng)取社會(huì)各界的廣泛認(rèn)知、理解和支持。
惡意性判定子系統(tǒng)規(guī)則庫(kù)中有上千種惡意程序行為序列,在接收到捕獲的程序規(guī)則序列A后,程序?qū)?huì)根據(jù)LD算法分別計(jì)算待測(cè)程序與規(guī)則序列間的相似度s,具體算法如下。
(1)設(shè)置n為待檢測(cè)序列A的長(zhǎng)度,m為規(guī)則序列B的長(zhǎng)度;將序列A和B的值分別存入向量A和B中。
(2)創(chuàng)建(n+1)×(m+1)矩陣D,并使矩陣D的第一行和列的取值從0開(kāi)始遞增。
(3)遍歷兩向量,如果
A[i]=B[i],
則用temp記錄,令temp=0。否則令temp=1。然后在矩陣D[i,j]處賦予
D[i-1,j]+1,
D[i,j-1]+1,
D[i-1,j-1]+temp
三者中的最小值。
(4)遍歷完兩向量后,矩陣最后的一個(gè)值D[m+1,n+1] 即為A和B兩序列的差異值。相似度的計(jì)算方法為
取值保留兩位有效數(shù)字。
(5)若s∈(0, 0.68),則將程序安全等級(jí)標(biāo)為Clear,返回繼續(xù)與其他規(guī)則序列計(jì)算相似度,直到全部對(duì)比完畢;若s∈(0.68,0.87),則將程序安全等級(jí)標(biāo)為Unkonw,表示文件可疑,記錄檢測(cè)相似的惡意類(lèi)別和相似分?jǐn)?shù),返回與其他規(guī)則序列計(jì)算相似度,直到全部對(duì)比完畢;若s∈(0.87,1)則將程序安全等級(jí)標(biāo)為Malicious,表示文件高危,記錄檢測(cè)相似的惡意類(lèi)別和相似分?jǐn)?shù),返回與其他規(guī)則序列計(jì)算相似度,直到全部對(duì)比完畢。安全級(jí)別Clear、Unkonw、Malicious分別按從低到高的等級(jí)劃分,當(dāng)檢測(cè)到高級(jí)別時(shí),則會(huì)覆蓋安全等級(jí)。
2.4 報(bào)告生成和存儲(chǔ)系統(tǒng)設(shè)計(jì)
在收到虛擬機(jī)系統(tǒng)分析完后的XML文件后,服務(wù)器會(huì)進(jìn)行一系列的并行處理,最終分析的結(jié)果會(huì)由服務(wù)器主機(jī)統(tǒng)一整理并以WEB服務(wù)的形式發(fā)布,提供查看和下載的功能。其運(yùn)作流程如圖3所示。
圖3 報(bào)告生成和存儲(chǔ)系統(tǒng)流程
為了驗(yàn)證本系統(tǒng)的性能,特選取了100個(gè)程序做測(cè)試。其中50個(gè)是已知的惡意程序,30個(gè)是安全的常用小程序,其余20個(gè)是在互聯(lián)網(wǎng)下載的未知程序。
以下選取其中一個(gè)在互聯(lián)網(wǎng)捕獲的未知程序的檢測(cè)報(bào)告作為展示。
圖4顯示了檢測(cè)報(bào)告中的程序基本信息,包括創(chuàng)建時(shí)間、文件名、特征標(biāo)識(shí)和惡意評(píng)級(jí)等項(xiàng)。
圖4 檢測(cè)程序基本信息
報(bào)告中將被檢測(cè)程序的惡意相似度高于0.65的選項(xiàng)列出,如圖5所示。
圖5 惡意相似度信息
被測(cè)程序的進(jìn)程操作情況與API調(diào)用序列會(huì)被詳細(xì)記錄在報(bào)告中,如圖6所示。
圖6 進(jìn)程操作及API hook序列信息
圖7中顯示了程序文件操作的檢測(cè)結(jié)果,從圖中可以看出,程序進(jìn)行了創(chuàng)建和修改等操作。被測(cè)程序的網(wǎng)絡(luò)連接情況如圖8所示。
圖7 文件操作信息
圖8 網(wǎng)絡(luò)行為監(jiān)控
全部程序均按照隨機(jī)選取依次進(jìn)行檢測(cè),完成后的測(cè)試結(jié)果如表2所示。
表2 系統(tǒng)驗(yàn)證檢測(cè)結(jié)果
即使按照最極端的情況來(lái)算,本系統(tǒng)的檢測(cè)識(shí)別率P和誤報(bào)率I分別為
在完全沒(méi)有人工介入的前提下,結(jié)果令人滿(mǎn)意。
基于虛擬化與APIhook技術(shù),設(shè)計(jì)形成了一個(gè)全自動(dòng)化的惡意程序分析識(shí)別系統(tǒng),其惡意判定算法采用目前DNA識(shí)別檢測(cè)技術(shù)中常用的編輯距離算法,配合較強(qiáng)的惡意識(shí)別規(guī)則,可以達(dá)到較精確的識(shí)別能力,同時(shí)該系統(tǒng)還具備檢測(cè)未知惡意程序的能力,在目前惡意變種劇增的情況下,不失為一種有效的解決方案。通過(guò)實(shí)現(xiàn)該分析檢測(cè)系統(tǒng)從一定程度上驗(yàn)證了設(shè)計(jì)方案可行性。
[1]MillerFP,VandomeAF,McBrewsterJ.LevenshteinDistance[M]. 3rded.Mauritius:AlphascriptPublishing, 2009: 25-112.
[2]SchultzMG,EskinE,ZadokE.DataMiningMethodsforDetectionofNewMaliciousExecutables[J].IEEEComputerSociety, 2001,12(3):38-49.
[3]Abou-AssalehT,CerconeN,KeseljV.N-Gram-BasedDetectionofNewMaliciousCode[J].ComputerSoftwareandApplicationsConference, 2004,28(2):41-42.
[4] 章文,鄭烇,帥建梅,等.基于關(guān)聯(lián)規(guī)則的未知惡意程序檢測(cè)技術(shù)[J].計(jì)算機(jī)工程,2008,34(24):172-174.
[5] 張一弛,龐建民,趙榮彩.基于證據(jù)推理的程序惡意性判定方法[J].軟件學(xué)報(bào),2012,23(12):3149-3160.
[6] 曾虎城.基于進(jìn)程行為比對(duì)的木馬分析檢測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2012:43-52.
[7] 張永超.基于虛擬執(zhí)行技術(shù)的惡意程序檢測(cè)系統(tǒng)研究與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2012:5-6.
[8]BayerU,HabibiI,BalzarottiD,etal.AViewonCurrentMalwareBehaviors[EB/OL].(2009-03-31)[2013-11-02].https://www.usenix.org/legacy/events/leet09/tech/full_papers/bayer/bayer_html.
[責(zé)任編輯:王輝]
Realization of vicious procedures detection systembased on virtual technology
WU Chen, WANG Xiong
(The Fusion with Two Things Networking Academy, Xi’an University of Posts and Telecommunications, Xi’an 710061, China)
In order to automatically detect new varieties of malicious program efficiently, based on virtualization and API hook technology, analyzing the system interface call in program execution, a character sequence is formed from coding this process. The system then use Levenshtein Distance algorithm to determine the vicious procedures. System verification results from randomly selected samples show that the detection accuracy is reached a high recognition rate of 92% and low false alarm rate of 6%.
API hook, virtual, malicious executables detection, levenshtein distance
2013-11-08
陜西省信息化建設(shè)重點(diǎn)基金資助項(xiàng)目(2011AQ01YA04-09)
吳晨(1988-),男,碩士,助教,從事信息安全、網(wǎng)絡(luò)攻防研究。E-mail:wuchenvic@163.com 王雄(1982-),男,碩士研究生,研究方向?yàn)樾畔踩?。E-mail: glxy13611@163.com
10.13682/j.issn.2095-6533.2014.02.014
TP399
A
2095-6533(2014)01-0077-05