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