吳 晨, 王 雄
(西安郵電大學 物聯網與兩化融合研究院, 陜西 西安 710061)
一種虛擬化惡意程序檢測系統的實現
吳 晨, 王 雄
(西安郵電大學 物聯網與兩化融合研究院, 陜西 西安 710061)
為了自動智能檢測出新變種的惡意程序,使用虛擬執行與應用程序接口鉤子技術,分析程序執行中調用的系統接口,將接口調用順序編碼形成一個特征序列。運用編輯距離算法計算程序特征序列與數據庫中惡意特征序列的相似度,實現自動判別惡意種類的功能。在隨機選取樣本的的前提下,本系統對樣本分析后結果表明,檢測識別精確度達到92%,誤報率僅為6%。
接口鉤子;虛擬化;惡意程序檢測;編輯距離算法
隨著互聯網的快速發展,惡意程序的數量和傳播速度也隨之發生幾何性的增長。數量眾多的惡意程序無疑給傳統的分析方式帶來巨大的沖擊,靜態掃描存在不能及時發現木馬變種等問題,而動態分析需要人工介入,嚴重影響了分析效率。判定程序是否具有惡意性是一項困難的任務,不存在一種檢測方法能夠檢測出所有的惡意程序,也不存在一種方法可以檢測出某一個特定惡意程序的所有變體。
目前產業界檢測惡意程序普遍采用靜態掃描分析為主,人工介入動態分析為輔的方式。靜態掃描檢測方式對已知惡意程序的檢測識別率較高,但對于新型變種程序與未知惡意程序的識別率較低。人工介入動態分析雖然可以提高檢測識別率,但是由于全過程都需要人工介入,分析的效率非常低,而且只有少數具有專業能力的技術人員才能勝任這項工作,分析的門檻較高。
基于以上考慮,本文擬設計一種結合虛擬化與應用程序編程接口鉤子(Application Programming Interface Hook, API hook)技術的動態惡意程序分析檢測系統,針對惡意程序的全自動化分析,并保持分析過程和生成結果相互獨立隔離。基于虛擬化的動態分析程序運行時調用系統API特征序列和操作行為,采用編輯距離算法(Levenshtein Distance, LD)[1]計算程序操作行為與典型惡意程序操作行為之間的相似度,從而實現對程序惡意性的近似判定。
自惡意程序出現以來,惡意程序檢測技術一直是計算機安全領域關注的焦點。先后有大批的研究人員參與到惡意程序檢測技術的研究中,取得了一些進展。
2001年,一種基于數據挖掘的惡意程序檢測方法被首次提出,該方法主要思路是對文件進行靜態二進制特征檢測[2]。
2004年,基于N-Gram特征碼的新型惡意代碼檢測手段[3]被提出。N-Gram算法能夠有效抽取頻率最高的特征,將抽取到的特征定義為檢測規則,依據與其匹配的情況來區分該程序是良性的還是惡意的。
2008年,有學者通過研究某些病毒及其變種版本在執行過程中API調用序列的規律,提出了一種基于動態分析的檢測技術[4],從已知病毒的API調用序列中提取出有價值的關聯規則,用于指導病毒檢測,該方法對未知病毒檢測有良好的效果。
2012年,一種基于證據推理的程序惡意性判定方法被提出[5]。該方法通過將程序進行反編譯,提取其中可能會影響安全性的行為特征建立集合,然后使用BP神經網絡的模型對其進行處理得到各種行為的概率分配函數,并使用加權求和形式對程序行為進行合成,從而實現對程序惡意性的判定。
2012年,有人設計出一種基于進程行為比對的木馬分析檢測系統[6]。在該設計中,通過主動分析程序的安裝和啟動行為,結合人工參與形成判定規則,使用行為比對來檢測目標程序是否為木馬,并設計了一種基于貝葉斯理論的木馬行為分類算法。
2012年,又有人設計并實現了一種基于沙箱技術的惡意程序檢測系統[7]。該系統運用了重定向技術設計了一種沙箱,將程序運行在沙箱中進行監控并記錄行為。在論文中提出基于層次分析法來檢測惡意程序,簡單來說就是將不同的惡意行為分層分配權重,然后對檢測程序的行為序列進行加權求和,并設定一個閥值來確認程序的惡意性。
與以上方法不同,在系統架構方面,可考慮采用虛擬化與API hook技術相結合的雙層隔離動態分析系統,以記錄程序執行時的各種操作和API調用序列。相對于基于沙箱的分析系統而言,此模式更能有效的獲得最貼近于實際環境的API調用序列。因為此模式所需的系統資源不是模擬出來的,且可以有效防范最新出現的具有穿透沙箱功能的惡意程序,從而避免對物理環境造成破環。另外,對于判別惡意程序的算法設計,不妨先建立一組典型惡意行為規則序列,并借助LD算法計算程序操作行為序列與建立的規則序列之間的相似度,從而得出對程序惡意性的分析結果。
系統主要由分析虛擬機系統、報告生成和存儲系統兩大部分組成。其中虛擬機系統包含了API hook子系統、惡意性判定子系統這兩個分析核心子系統。分析結果包括文件操作、注冊表操作、進程服務、網絡、運行截圖五個模塊。系統整體框架如圖1所示。

圖1 系統整體架構
(1) 虛擬機系統
虛擬機系統采用VMware Workstation環境搭建,運行在分析服務器之上,是程序執行的場所。每次分析則啟用快照運行,然后將待分析程序上傳至虛擬機執行。共包括文件操作、注冊表操作、進程服務、網絡、運行截圖五個模塊,虛擬機系統可以有效的避免惡意程序在執行過程中的逃逸破壞。
(a) API hook子系統
該子系統實現對關鍵API的攔截,通過關鍵API序列可以有效的得出待檢測程序的行為。該子系統運行在虛擬機系統上。
(b) 惡意性判定子系統
惡意性判定子系統也運行在虛擬機子系統之上,其作用是將API hook子系統分析得出的API序列與規則庫中的典型惡意行為規則序列做運算,判斷程序是否具有惡意。
(2) 報告生成和存儲系統
在虛擬機系統完成分析后,會將分析數據生成一份XML文件。這份XML文件將回傳到物理服務器上,經過讀取生成分析報告,并將過程存儲在數據庫中。
2.1 系統執行流程
系統執行流程如圖2所示,分析系統啟動后,首先獲取程序MD5值進行數據庫查詢工作,若數據庫中已經存在該程序的分析結果則終止分析過程,避免對程序的重復分析行為。

圖2 系統執行流程
判斷程序未經過分析且為可執行文件后,服務器會開啟事先制作好的虛擬機快照子系統,該虛擬機系統快照時已經完成系統初始化工作,即已完成重定向路徑的設置、hook NtResumeThread函數等操作。虛擬機系統內置研究總結出的幾百種惡意軟件惡意行為規則序列和比較算法程序,用于與被測程序的行為規則序列做相似運算。
2.2 API hook子系統設計
API hook又名API鉤子,是一種用于改變 API 執行結果的技術。鉤子實際上是一個處理消息的程序段,通過系統調用,把它掛入系統。每當程序調用系統API時,在沒有到達目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數先得到控制權。這時鉤子函數自定義代碼即可以修改該消息,即實現了 API hook。
Windows常用API有2 000多種,但是大部分API對惡意程序來說是不會用到的。惡意程序調用的API函數大多數集中在應用層的級別上,因此只需監測少數特定的API調用行為即可滿足惡意判定的需求。
根據Ulrich Bayer的多年研究指出:惡意程序經常使用Windows系統的75個API(其中文件操作、注冊表操作、進程操作、服務操作、網絡連API分別為16、14、19、14、12個)[8]。我們分別對每個API函數進行不重復的單字符串編碼,鑒于篇幅原因表1只列出其中文件操作和注冊表操作API編碼對應表示。

表1 API編碼部分對應表
根據程序執行時監測到的API調用順序,將其按照上表編碼成一個序列
A=(X1,X2,…,Xn)(Xi∈J,i=1,2,…,n),
其中J表示API函數編碼的集合。序列A將根據惡意性判定子系統中的規則做運算。
2.3 惡意性判定子系統設計
三是打造一張麗水特色的“金名片”。力爭通過2-3年時間的努力,把儲備公司打造成浙江省乃至全國儲備土地經營管理的一張“金名片”。統一設計LOGO、標識、門牌、導向牌等,對現有儲備土地的圍墻四周噴繪“國土儲備LOGO”等明顯標志,對停車場、城市農場等門頭進行統一設計,統一品牌名稱為“金土地”,如“金土地停車場”“金土地城市農場”等,樹立新形象,讓市區所有的儲備土地成為向市民展示美好形象的載體。同時,通過各種媒體向社會宣傳公司的管理職能和經營范圍,傳播國土相關的法律法規知識,爭取社會各界的廣泛認知、理解和支持。
惡意性判定子系統規則庫中有上千種惡意程序行為序列,在接收到捕獲的程序規則序列A后,程序將會根據LD算法分別計算待測程序與規則序列間的相似度s,具體算法如下。
(1)設置n為待檢測序列A的長度,m為規則序列B的長度;將序列A和B的值分別存入向量A和B中。
(2)創建(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兩序列的差異值。相似度的計算方法為

取值保留兩位有效數字。
(5)若s∈(0, 0.68),則將程序安全等級標為Clear,返回繼續與其他規則序列計算相似度,直到全部對比完畢;若s∈(0.68,0.87),則將程序安全等級標為Unkonw,表示文件可疑,記錄檢測相似的惡意類別和相似分數,返回與其他規則序列計算相似度,直到全部對比完畢;若s∈(0.87,1)則將程序安全等級標為Malicious,表示文件高危,記錄檢測相似的惡意類別和相似分數,返回與其他規則序列計算相似度,直到全部對比完畢。安全級別Clear、Unkonw、Malicious分別按從低到高的等級劃分,當檢測到高級別時,則會覆蓋安全等級。
2.4 報告生成和存儲系統設計
在收到虛擬機系統分析完后的XML文件后,服務器會進行一系列的并行處理,最終分析的結果會由服務器主機統一整理并以WEB服務的形式發布,提供查看和下載的功能。其運作流程如圖3所示。

圖3 報告生成和存儲系統流程
為了驗證本系統的性能,特選取了100個程序做測試。其中50個是已知的惡意程序,30個是安全的常用小程序,其余20個是在互聯網下載的未知程序。
以下選取其中一個在互聯網捕獲的未知程序的檢測報告作為展示。
圖4顯示了檢測報告中的程序基本信息,包括創建時間、文件名、特征標識和惡意評級等項。

圖4 檢測程序基本信息
報告中將被檢測程序的惡意相似度高于0.65的選項列出,如圖5所示。

圖5 惡意相似度信息
被測程序的進程操作情況與API調用序列會被詳細記錄在報告中,如圖6所示。

圖6 進程操作及API hook序列信息
圖7中顯示了程序文件操作的檢測結果,從圖中可以看出,程序進行了創建和修改等操作。被測程序的網絡連接情況如圖8所示。

圖7 文件操作信息

圖8 網絡行為監控
全部程序均按照隨機選取依次進行檢測,完成后的測試結果如表2所示。

表2 系統驗證檢測結果
即使按照最極端的情況來算,本系統的檢測識別率P和誤報率I分別為

在完全沒有人工介入的前提下,結果令人滿意。
基于虛擬化與APIhook技術,設計形成了一個全自動化的惡意程序分析識別系統,其惡意判定算法采用目前DNA識別檢測技術中常用的編輯距離算法,配合較強的惡意識別規則,可以達到較精確的識別能力,同時該系統還具備檢測未知惡意程序的能力,在目前惡意變種劇增的情況下,不失為一種有效的解決方案。通過實現該分析檢測系統從一定程度上驗證了設計方案可行性。
[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] 章文,鄭烇,帥建梅,等.基于關聯規則的未知惡意程序檢測技術[J].計算機工程,2008,34(24):172-174.
[5] 張一弛,龐建民,趙榮彩.基于證據推理的程序惡意性判定方法[J].軟件學報,2012,23(12):3149-3160.
[6] 曾虎城.基于進程行為比對的木馬分析檢測系統的設計與實現[D].北京:北京郵電大學,2012:43-52.
[7] 張永超.基于虛擬執行技術的惡意程序檢測系統研究與實現[D].長沙:國防科學技術大學,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.
[責任編輯:王輝]
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
陜西省信息化建設重點基金資助項目(2011AQ01YA04-09)
吳晨(1988-),男,碩士,助教,從事信息安全、網絡攻防研究。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