劉曉蔚
(東莞理工學院 科研處,廣東東莞 523808)
惡意程序是一個包含惡意攻擊的可執(zhí)行的程序,如破壞系統(tǒng)或非法獲取敏感的用戶信息[1-2]。在惡意程序檢測中,使用數(shù)據(jù)挖掘技術(shù)就是為了能夠建立一套自動檢測惡意可執(zhí)行文件的方法。數(shù)據(jù)挖掘的檢測模式基于海量數(shù)據(jù),并使用這些檢測模式來檢測相似數(shù)據(jù)[3-5]。設(shè)計的檢測系統(tǒng)框架是使用分類器檢測新型特征的惡意程序,分類器是一種由數(shù)據(jù)挖掘算法進行訓練的規(guī)則集。
當前每天都會產(chǎn)生8 ~10 種新惡意程序,2012年新增木馬病毒惡意程序已達到幾千萬,這些惡意程序破壞度大,給用戶帶來了巨大的損失[6]。而且很多類型的攻擊都使用惡意程序來進行,DARPA 檢測評價的攻擊中,Windows 平臺遭受的惡意攻擊基本上都是基于惡意程序[7]。目前,微軟發(fā)布了基于內(nèi)核網(wǎng)絡的漏洞,惡意程序可以使用該漏洞打開后門進入微軟內(nèi)部網(wǎng)絡竊取各種資料。惡意程序數(shù)量呈幾何數(shù)增長,給用戶信息安全造成了巨大危害。
傳統(tǒng)的“獲取樣本-分析特征-更新部署”方法已無法滿足當前查殺病毒的需求[8],為了解決反病毒軟件的各種困擾,設(shè)計了一種基于新型特征的數(shù)據(jù)挖掘技術(shù)提取惡意程序的智能化檢測規(guī)則,該方法用Windows 平臺可執(zhí)行文件格式作為主要特征,抽取執(zhí)行文件的特征,然后分析并獲取惡意程序的新型特征,使用數(shù)據(jù)挖掘技術(shù)提取檢測規(guī)則,找出惡意程序的隱性規(guī)則,提高準確率。
惡意程序分為六類[9]:病毒、蠕蟲、木馬、僵尸程序、間諜程序和流氓軟件,這六類惡意程序給用戶帶來巨大的損失。為了對抗反病毒程序,這些惡意程序具有反調(diào)試技術(shù)、反虛擬機技術(shù)、加殼技術(shù)及對抗安全軟件的技術(shù)。
為了應對惡意程序的反檢測技術(shù),提高惡意程序檢測的準確度,目前用于惡意程序檢測的技術(shù)種類眾多,其綜合性能較好的數(shù)據(jù)挖掘技術(shù)有:神經(jīng)網(wǎng)絡、貝葉斯、支持向量機、決策樹和關(guān)聯(lián)規(guī)則等[10]。但這些技術(shù)仍然存在著諸多缺陷,如忽視篩選惡意程序特征方法、無法與客戶端檢測并且檢測的效率較低?;诖耍O(shè)計了一種篩選惡意程序新型特征的方法,并在此基礎(chǔ)上提取了惡意程序檢測的智能規(guī)則,通過該規(guī)則可以檢測多類惡意程序,并具有通用性。首先提取樣本特征,然后對樣本特征數(shù)據(jù)進行預處理,通過處理結(jié)果篩選出新型特征,最后提取智能規(guī)則。
所研究的源數(shù)據(jù)采用VX Heavens 中的樣本數(shù)據(jù),從該網(wǎng)站下載PE 格式的惡意程序樣本25 585 個,其中正常程序數(shù)量為4 730 個,圖1 描述了樣本數(shù)據(jù)中各類程序的分布情況。
圖1 樣本數(shù)據(jù)分布表
為了獲取PE 特征,首先對樣本特征數(shù)據(jù)進行提取,提取過程包括:修改PE 文件、PE 頭信息獲取、PE 節(jié)分析、可疑值和惡意值報告、檢測加殼文件五個步驟。本文設(shè)計的數(shù)據(jù)提取方法采用pefile提供的python 庫進行實現(xiàn)。樣本數(shù)據(jù)經(jīng)過提取之后,部分屬性會以文本的形式存在,不能被數(shù)據(jù)挖掘工具識別,因此必須通過數(shù)據(jù)字典映射的方式將數(shù)據(jù)標準化。將樣本數(shù)據(jù)的屬性進行取值標準化,如在描述入口點特性時,通常有無效、有效、模糊三種方式,因此對其以0、1、2 分別進行代替;對于是否異常的情況,對其以0、1 進行代替。
由于數(shù)據(jù)缺值或者噪聲的原因,在數(shù)據(jù)挖掘中會降低準確度,因此在數(shù)據(jù)標準化之后需對數(shù)據(jù)進行清理,目的是保證樣本特征數(shù)據(jù)干凈、整齊,使得數(shù)據(jù)挖掘的結(jié)果更加準確,本節(jié)針對缺值處理、探測和清除孤立點對數(shù)據(jù)進行分析處理。
1)缺值處理。
Windows 平臺上由于文件完整性被破壞造成的缺值屬于非正常缺值,為了刪除這些非正常缺值,處理該非正常缺值數(shù)據(jù)時采用直接刪除法;處理非正常缺值以外的其他缺值不會影響程序的執(zhí)行,處理該正常缺值數(shù)據(jù)時采用統(tǒng)計填充法。
缺值處理算法如下:
其中,Y 為樣本集合,y 為樣本實例,a 為y 的屬性,L 為合理缺值集合,U 為不合理缺值屬性集合,average(a)為a 屬性列的平均值。
“很遺憾,測試已經(jīng)結(jié)束了?!闭矊u了搖頭,“20次模擬海戰(zhàn)的結(jié)果,已經(jīng)足夠說明問題,我們的任務完成了。謝謝大家的幫助,你們早點回去休息吧?!?/p>
根據(jù)本算法共找出10 372 個缺值樣本,其中合理的缺值為3 017 個,不合理的缺值為7 310 個。
2)探測和清除孤立點。
樣本數(shù)據(jù)不可避免的會有孤立點,因此會造成樣本數(shù)據(jù)存在噪聲,為消除噪聲,使用基于距離和孤立點檢測的方法刪除孤立點。該方法對原始樣本數(shù)據(jù)集進行標準化后,計算n 個對量兩兩之間的距離dij,由此形成一個距離矩陣R,如公式1。
根據(jù)距離矩陣R,令pi=,當Pi值越大時,說明對象i 與其他的對象距離越遠,把Pi最大的若干項刪除掉,便清楚掉樣本數(shù)據(jù)的孤立點。
根據(jù)該方法共找出6 224 個孤立數(shù)據(jù),清楚這些孤立數(shù)據(jù)項可保證分類規(guī)則的準確性。
由以上兩種方法,樣本數(shù)據(jù)集的處理結(jié)果如圖2 所示。
圖2 處理后的樣本數(shù)據(jù)
1)樣本數(shù)據(jù)集經(jīng)過數(shù)據(jù)處理后,會存在部分屬性值一樣的數(shù)據(jù),這些數(shù)據(jù)對分類沒有實際意義,例如每個PE 文件都會有“MZ”標志,這部分數(shù)據(jù)會提升特征復雜度,因此對這部分數(shù)據(jù)進行直接刪除,降低特征向量維度。
2)線性相關(guān)數(shù)據(jù)分為函數(shù)關(guān)系和統(tǒng)計關(guān)系兩類,函數(shù)關(guān)系表示變量之間數(shù)量上的確定性關(guān)系,統(tǒng)計關(guān)系表示變量之間的相隨變動的某種數(shù)量的統(tǒng)計規(guī)律性。樣本數(shù)據(jù)集經(jīng)過數(shù)據(jù)處理后會存在部分此類數(shù)據(jù),如PE 文件頭部若標志了一個文件為DLL,則這個文件必然有導出函數(shù),則這兩個屬性線性相關(guān)。
該算法如下,其中p、q 為常數(shù)。
冗余特征消除算法用主成分分析法,該方法將多個變量通過線性變換選出較少個數(shù)的重要變量,其最優(yōu)性侍從N 個訓練集中提取n 個主要特征,從而降維。假設(shè)N 個d 維的原始樣本為x1,x2,…,xn組成一個矩陣X(d* n),通過式(2)把X 投影到低維空間的向量Y,計算出樣本均值μ 后,通過式(3)得到協(xié)方差矩陣ST,最后通過式(4)計算ST的特征值ei。
通過上述方法和SPSS 統(tǒng)計軟件對樣本集的惡意程序特征進行綜合評價,得到如表1 樣本集特征值表。
表1 特征值分析結(jié)果
由上表,保留主成分系數(shù)大于92%并且特征值大于1 的特征值,刪除其它18 個不符合要求的特征項。經(jīng)過特征值篩選后,得到41 個屬性作為惡意程序的新型特征,并且惡意程序的特征向量包括以下屬性:序號、文件名、文件類別、文件頭信息、API 函數(shù)序列、API 函數(shù)名。其中文件類別使用0、1 表示,0 表示正常程序,1 表示惡意程序。
為了對篩選后的41 個新特征進行評估,驗證其有效性,將對本文的新特征進行仿真實驗,得出實驗結(jié)果,包括準確率、誤報率和漏報率。
本文使用的數(shù)據(jù)集從VX Heavens 下載,是經(jīng)過數(shù)據(jù)處理后的11 955 個PE 文件信息,并選擇Knime作為數(shù)據(jù)挖掘平臺。Knime 的分類工作流程為原始數(shù)據(jù)經(jīng)過列的過濾和顏色區(qū)分后得到訓練集和測試集,訓練模型對訓練集和測試集訓練后,對預測進行打分,最后得到評估模型。本文原始數(shù)據(jù)集為11 955 個數(shù)據(jù),包含3 676 個正常程序和8 279 個惡意程序。如表2 所示的幾種分類算法的測試結(jié)果。
表2 特征值評估結(jié)果
圖3 Knime 生成的智能規(guī)則樹
提取規(guī)則的目的是為了將正常程序和惡意程序分開,而且需要有較高的檢測率和較低的誤報率,根據(jù)表2 的檢測結(jié)果,發(fā)現(xiàn)使用決策樹的C4.5 算法可以得到最好的檢測效果,因此本文選擇C4.5 作為構(gòu)建分類器的算法,在Knime 平臺上生成如圖3 所示的決策樹結(jié)果,由于結(jié)果數(shù)據(jù)較大,該圖僅為部分決策結(jié)果。
本文將PE 文件格式作為主要特征來源,通過篩選新型特征得到了惡意程序新型特征以及可重復利用的智能檢測規(guī)則,并通過Bayes、MLP、SVM、C4.5 分類方法對其進行的驗證,實驗結(jié)果表明,將該新型特征應用于分類算法中具有較低漏報率、誤報率和較高的檢測率,對提高惡意程序檢測的效率和準確率具有重要的作用。
[1]劉輝. 基于虛擬機的網(wǎng)絡計算模型[J].科學技術(shù)與工程,2005,16(5):1209-1211
[2]Thuraisingham B. Data mining for malicious code detection and security applications[C]//proc of Europen Intelligence and Security Informatics Conference[s.l.]. IEEE Conference Publications,2011.
[3]顏富強,吳昊.一種基于免疫遺傳算法的數(shù)據(jù)挖掘方法[J].科學技術(shù)與工程,2008,14(8):3966-3969.
[4]羅文華. 基于逆向技術(shù)的惡意程序檢測方法與研究[J].警察技術(shù),2012(6):26-28.
[5]羅文華.基于逆向技術(shù)的惡意程序分析技術(shù)[J].計算機應用,2011,31(11):63-64.
[6]Masud M M,Khan L,Thuraisingham.A Hybird Model to Detect Malicious Executables[C]//in proc of the IEEE international onference on communication(ICC'07). IEEE Conference Publications,2007.
[7]羅文華.基于抽象解釋理論抽取多態(tài)惡意程序特征碼[J].信息網(wǎng)絡安全,2013(1):16-18.
[8]李鵬,王汝傳.基于自相似特性的惡意代碼動態(tài)分析技術(shù)[J].南京郵電大學學報:自然科學版,2012,32(3):86-90.
[9]張一馳,龐建民,范學斌,等.基于模型檢測的程序惡意行為識別方法[J].計算機工程,2012,38(18):107-110.
[10]Farrukh S,Muddassar F. ELF-Miner:using structural knowledge and daga mining methods to detect new(Linux)malicious executables[J]. Knowl Inf Syst,2012,30:189-192.