張福勇
(東莞理工學(xué)院 計(jì)算機(jī)學(xué)院, 廣東東莞 523808)
?
人工免疫算法在惡意代碼檢測(cè)中的應(yīng)用研究
張福勇
(東莞理工學(xué)院計(jì)算機(jī)學(xué)院, 廣東東莞523808)
隨著惡意代碼復(fù)雜度的提高,要求惡意代碼檢測(cè)方法不僅能實(shí)現(xiàn)高效的檢測(cè),而且要具有很好的魯棒性來(lái)應(yīng)對(duì)可能出現(xiàn)的迷惑檢測(cè)策略。研究了“兩代”人工免疫算法——否定選擇算法(NSA)和樹(shù)突細(xì)胞算法(DCA),在運(yùn)行時(shí)惡意代碼檢測(cè)中的應(yīng)用。通過(guò)捕獲程序運(yùn)行時(shí)產(chǎn)生的IRP請(qǐng)求序列來(lái)實(shí)現(xiàn)惡意代碼的檢測(cè)。實(shí)驗(yàn)結(jié)果表明,NSA是一種有效的運(yùn)行時(shí)惡意代碼檢測(cè)方法,而DCA的檢測(cè)結(jié)果存在很大的不確定性。
人工免疫系統(tǒng),惡意代碼檢測(cè),否定選擇算法,樹(shù)突細(xì)胞算法
惡意代碼的數(shù)量增加之快已使得傳統(tǒng)的檢測(cè)方法不能滿足需求[1]。因此,安全專家將注意力集中到了更高效和更具魯棒性的運(yùn)行時(shí)惡意代碼檢測(cè)技術(shù)上,通過(guò)分析程序運(yùn)行時(shí)的行為來(lái)區(qū)分正常程序和惡意代碼。
人工免疫系統(tǒng)(Artificial Immune System, AIS)是受生物免疫系統(tǒng)(Biological Immune System, BIS)啟發(fā)而產(chǎn)生的智能計(jì)算方法。AIS發(fā)展初期主要是模仿適應(yīng)性免疫系統(tǒng)而產(chǎn)生的自體/非自體(Self/Nonself)理論。Forrest等人[2]根據(jù)自體/非自體思想提出了否定選擇算法(Negative Selection Algorithm, NSA),用于異常進(jìn)程的檢測(cè)。近年來(lái),出現(xiàn)了新一代AIS——受內(nèi)在免疫系統(tǒng)啟發(fā)而產(chǎn)生的樹(shù)突細(xì)胞算法(Dentritic Cell Algorithm, DCA)[3]。
對(duì)兩代AIS在惡意代碼檢測(cè)中的優(yōu)缺點(diǎn)進(jìn)行研究,分析了在不同檢測(cè)環(huán)境下兩代AIS的檢測(cè)率。文章第1部分介紹了兩代AIS在異常檢測(cè)中的應(yīng)用情況;第2部分對(duì)兩代AIS算法進(jìn)行了介紹;第3部分解釋了實(shí)驗(yàn)中采用的IRP序列的產(chǎn)生,并說(shuō)明NSA中的檢測(cè)器和DCA中的信號(hào)產(chǎn)生策略;第4部分給出實(shí)驗(yàn)結(jié)果并進(jìn)行分析;最后,討論兩代AIS在惡意代碼檢測(cè)方面的優(yōu)缺。
第一代AIS的核心算法是NSA,由Forrest等人[2]提出,并首先應(yīng)用于Unix系統(tǒng)的異常進(jìn)程檢測(cè)。后來(lái),NSA發(fā)展了多個(gè)版本,包括real-valued NSA、隨機(jī)real-valued NSA、檢測(cè)器大小可變r(jià)eal-valued NSA等。
第一代AIS還包括另外一個(gè)重要算法——克隆選擇算法(Clonal Selection Algorithm, CSA)[4]。NSA與CSA的結(jié)合,使得第一代AIS廣泛應(yīng)用于信息安全、模式識(shí)別、故障診斷、機(jī)器學(xué)習(xí)等多個(gè)領(lǐng)域。
第二代AIS是基于危險(xiǎn)理論(Danger Theory)[5]的思想。Aickelin等人[6]分析了將危險(xiǎn)理論應(yīng)用于網(wǎng)絡(luò)入侵檢測(cè)的可行性。Greensmith等人[3]提出了基于危險(xiǎn)理論的cDCA(classic DCA),并成功應(yīng)用于乳腺癌數(shù)據(jù)集的分類。隨后,DCA被應(yīng)用于入侵檢測(cè)相關(guān)領(lǐng)域[7]。
DCA也出現(xiàn)了幾個(gè)更新版本,Gu等人[8]提出采用抗原倍乘(Antigen Multiplier)和時(shí)間窗口(Time-windows)來(lái)提高DCA的檢測(cè)率和魯棒性。Greensmith等人[9]提出了dDCA(deterministic DCA),dDCA精簡(jiǎn)了cDCA中采用的多個(gè)復(fù)雜參數(shù),并采用了更加簡(jiǎn)單的信號(hào)處理方式。Fang等人[10]對(duì)DCA的時(shí)間復(fù)雜度進(jìn)行了理論分析。
AIS經(jīng)過(guò)多年的發(fā)展已經(jīng)出現(xiàn)了很多的算法,本節(jié)僅對(duì)文中用到的NSA和DCA進(jìn)行詳細(xì)介紹。
2.1否定選擇算法
否定選擇算法是對(duì)機(jī)體免疫細(xì)胞成熟過(guò)程的模擬,算法包括兩個(gè)階段:自體耐受和識(shí)別階段。首先隨機(jī)生成大量候選檢測(cè)器,然后,候選檢測(cè)器經(jīng)過(guò)自體耐受過(guò)程去除匹配自體的檢測(cè)器,最終成為成熟檢測(cè)器;識(shí)別階段采用成熟檢測(cè)器檢測(cè)未知抗原。算法的描述如下:
隨機(jī)生成大量的候選檢測(cè)器;
While成熟檢測(cè)器的數(shù)量未達(dá)到設(shè)定值do
從候選檢測(cè)器中隨機(jī)選擇一個(gè)檢測(cè)器;
If 該檢測(cè)器不與任何一個(gè)自體抗原匹配
Then將此檢測(cè)器加入到成熟檢測(cè)器集合;
Else丟棄此檢測(cè)器;
End If
End While
For 每一個(gè)未知抗原 do
If 任一成熟檢測(cè)器匹配未知抗原
Then 認(rèn)為此抗原為非自體;
End If
End For
2.2樹(shù)突細(xì)胞算法
輸入:未知抗原和信號(hào)
輸出:抗原類型α和MCAVα
設(shè)定DC數(shù)量;
初始化DCs();
While 存在輸入數(shù)據(jù) do
Switch 輸入數(shù)據(jù)類型 do
Case 未知抗原
antigenCounter++;
cellIndex=antigenCounter%DCsize;
序號(hào)為cellIndex的DC提呈此抗原;
End Case
Case 信號(hào)
計(jì)算csm和k;
For 每一個(gè)DCdo
DC.lifespan-=csm;
DC.sumK+=k;
IfDC.lifespan<=0 Then
記錄DC提呈的抗原和sumK;
重置DC;
End If
End For
End Case
End Switch
End While
For 每一種抗原類型α do
計(jì)算MCAVα;
End For
收集了100個(gè)惡意代碼和100個(gè)正常Windows可執(zhí)行文件。惡意代碼包括病毒、木馬和蠕蟲,所有惡意代碼和正常文件均為Win32portable executable(PE)格式。
3.1IRP請(qǐng)求序列
在運(yùn)行時(shí)惡意代碼檢測(cè)方面,研究人員普遍采用API調(diào)用序列進(jìn)行檢測(cè)。但多數(shù)API調(diào)用的捕獲工具運(yùn)行在用戶態(tài),只能捕獲用戶態(tài)的API調(diào)用,對(duì)內(nèi)核態(tài)的API調(diào)用就無(wú)能為力,因此無(wú)法檢測(cè)采用驅(qū)動(dòng)技術(shù)調(diào)用內(nèi)核API的惡意代碼。
鑒于此,我們開(kāi)發(fā)了一個(gè)基于內(nèi)核驅(qū)動(dòng)技術(shù)的IRP請(qǐng)求捕獲工具M(jìn)BMAS[11]。它可以捕獲程序運(yùn)行時(shí)創(chuàng)建的進(jìn)程信息,以及每個(gè)進(jìn)程對(duì)文件系統(tǒng)操作的IRP請(qǐng)求信息,并可以將捕獲的信息以XML格式進(jìn)行存儲(chǔ)。圖1是MBMAS的用戶態(tài)界面。
圖1 IRP請(qǐng)求捕獲工具
IRP請(qǐng)求的捕獲是在一臺(tái)新安裝的Windows XP虛擬機(jī)中進(jìn)行的,并且每運(yùn)行完一個(gè)樣本即將虛擬機(jī)恢復(fù)到新安裝時(shí)的狀態(tài)。在進(jìn)行IRP請(qǐng)求捕獲時(shí),將同一進(jìn)程的IRP請(qǐng)求連成一個(gè)序列。
我們對(duì)捕獲的所有IRP類型進(jìn)行了統(tǒng)計(jì),發(fā)現(xiàn)共存在30種不同類型的IRP請(qǐng)求。我們用唯一的字符代替每一種IRP類型,以降低復(fù)雜度,方便后續(xù)處理。
3.2檢測(cè)器與特征提取
對(duì)于NSA,我們選用n-gram作為檢測(cè)器。匹配規(guī)則為字符串匹配算法,只要未知序列中存在與檢測(cè)器相同的n-gram即認(rèn)為匹配。前期實(shí)驗(yàn)表明n=3時(shí)可以取得最佳的檢測(cè)效果,因此,本文取n=3。
自體耐受過(guò)程采用100個(gè)正常文件運(yùn)行得到的IRP請(qǐng)求序列作為抗原。由于總的檢測(cè)器數(shù)量并不大(303),因此直接生成3-gram的全排列作為候選檢測(cè)器,成熟檢測(cè)器最大值也設(shè)定為303,以達(dá)到最佳的檢測(cè)效果。
本文采用類似文獻(xiàn)[12]的n-gram信息增益法對(duì)IRP請(qǐng)求序列進(jìn)行預(yù)處理,得到DCA所需的信號(hào)。同樣選取n=3,信息增益的計(jì)算公式為:
(1)
同文獻(xiàn)[12],選取具有最大信息增益的500個(gè)3-gram來(lái)計(jì)算信號(hào)值。并將危險(xiǎn)信號(hào)值歸一化為0~100,安全信號(hào)值歸一化為0~66。
為了檢驗(yàn)兩代AIS在惡意代碼檢測(cè)中的效果,首先進(jìn)行了下面兩個(gè)實(shí)驗(yàn):實(shí)驗(yàn)1將正常序列和惡意序列分開(kāi)存放,即前100個(gè)序列為正常序列,后100個(gè)序列為惡意序列;實(shí)驗(yàn)2將正常序列和惡意序列交叉存放,即一個(gè)正常序列后跟一個(gè)惡意序列。分別采用NSA和DCA進(jìn)行檢測(cè)。
實(shí)驗(yàn)參數(shù)設(shè)置如下:對(duì)于NSA,采用3-gram的全排列作為候選檢測(cè)器,成熟檢測(cè)器最大值為303。對(duì)于DCA,設(shè)定DC數(shù)量為100,生命周期范圍為300~500,信號(hào)權(quán)重與2.2節(jié)中算法描述的相同(見(jiàn)表1),MCAV門限為0.5,大于0.5即為惡意,否則為正常。
表1 信號(hào)權(quán)重(實(shí)驗(yàn)1,2,3)
表2 實(shí)驗(yàn)1檢測(cè)結(jié)果 %
表3 實(shí)驗(yàn)2檢測(cè)結(jié)果 %
表2為實(shí)驗(yàn)1的運(yùn)行結(jié)果。從結(jié)果中可以看出,按實(shí)驗(yàn)1的數(shù)據(jù)存放方式,DCA可以得到高于NSA的檢測(cè)率。兩種方法都存在一個(gè)誤報(bào)。
由表3的結(jié)果可以看出,實(shí)驗(yàn)2中NSA得到與實(shí)驗(yàn)1同樣的結(jié)果,表明對(duì)于NSA數(shù)據(jù)的排列方式不會(huì)影響其檢測(cè)結(jié)果。但DCA卻僅得到了61 %的檢測(cè)率,而且誤檢率為37 %。原因很可能是由于DCA對(duì)環(huán)境非常敏感。實(shí)驗(yàn)1中正常和惡意序列放在一起,檢測(cè)時(shí)周圍環(huán)境的信號(hào)量要么以安全信號(hào)為主(正常序列),要么以危險(xiǎn)信號(hào)為主(惡意序列),所以很容易將兩者區(qū)分開(kāi)。但實(shí)驗(yàn)2中的排列方式使得安全信號(hào)和危險(xiǎn)信號(hào)交叉出現(xiàn),兩者的值相互抵消,無(wú)法進(jìn)行區(qū)分。
為了驗(yàn)證DCA中的生命周期和信號(hào)權(quán)重對(duì)檢測(cè)結(jié)果的影響,采用實(shí)驗(yàn)2的數(shù)據(jù)進(jìn)行了如下兩個(gè)實(shí)驗(yàn):實(shí)驗(yàn)3設(shè)定表1所示信號(hào)權(quán)重,測(cè)試不同生命周期的檢測(cè)結(jié)果;實(shí)驗(yàn)4設(shè)定表4所示信號(hào)權(quán)重,測(cè)試不同生命周期的檢測(cè)結(jié)果。得到的結(jié)果如表5和表6所示:
表4 信號(hào)權(quán)重(實(shí)驗(yàn)4)
表5 實(shí)驗(yàn)3檢測(cè)結(jié)果 %
表6 實(shí)驗(yàn)4檢測(cè)結(jié)果 %
由實(shí)驗(yàn)3和實(shí)驗(yàn)4的結(jié)果可以看出DCA的生命周期和信號(hào)權(quán)重的值對(duì)檢測(cè)結(jié)果有很大的影響。特別要注意的是實(shí)驗(yàn)4中在生命周期為200~300時(shí)得到了與實(shí)驗(yàn)1一樣高的檢測(cè)率,但兩者的數(shù)據(jù)排列、信號(hào)權(quán)重、生命周期值均不同。由此可以說(shuō)明,使用DCA時(shí)需要針對(duì)不同的數(shù)據(jù)給予不同的信號(hào)權(quán)重和生命周期才有可能達(dá)到較高的檢測(cè)率。但在實(shí)際應(yīng)用中我們很難事先知道待檢測(cè)數(shù)據(jù)的排列情況,所以DCA在惡意代碼檢測(cè)中存在很大的不確定性。
采用程序運(yùn)行時(shí)產(chǎn)生的IRP請(qǐng)求序列作為抗原,對(duì)NSA和DCA在惡意代碼檢測(cè)中的效果進(jìn)行分析。實(shí)驗(yàn)結(jié)果表明,NSA在惡意代碼檢測(cè)中表現(xiàn)出了較高的檢測(cè)率和很強(qiáng)的魯棒性。而DCA對(duì)待檢測(cè)數(shù)據(jù)的排列、信號(hào)權(quán)重和生命周期值都非常敏感,檢測(cè)結(jié)果存在很大的不確定性。DCA的不確定性主要表現(xiàn)在以下方面:
1)DCA缺乏統(tǒng)一的信號(hào)產(chǎn)生機(jī)制,不同的信號(hào)產(chǎn)生方式會(huì)對(duì)檢測(cè)結(jié)果有很大影響。
2)DCA沒(méi)有標(biāo)準(zhǔn)的信號(hào)權(quán)重計(jì)算機(jī)制,信號(hào)的權(quán)重根據(jù)不同的數(shù)據(jù)集需要做很大調(diào)整才可以達(dá)到較高檢測(cè)率。
3)DCA中生命周期值也會(huì)對(duì)檢測(cè)結(jié)果有很大影響,但算法中也沒(méi)有可以確定生命周期的方法。
DCA方法的上述缺陷使得其無(wú)法應(yīng)用于真實(shí)環(huán)境。因此還需對(duì)樹(shù)突細(xì)胞的功能進(jìn)一步挖掘,抽象出更加完善的DCA。
[1]Symantec. 2014 Internet security threat report, 2014 [EB/OL]. http://www.symantec.com/security_response/publications/threatreport.jsp?om_ext_cid=biz_socmed_twitter_facebook_marketwire_linkedin_2013Apr_worldwide_ISTR18.
[2]Forrest S, Perelson A S, Allen L, et al. Self-Nonself discrimination in a computer [C]// The IEEE Symposium on Research in Security and Privacy. Oakland: IEEE, 1994: 202-212.
[3]Greensmith J, Aickelin U, Cayzer S. Introducing dendritic cells as a novel immune-inspired algorithm for anomaly detection [C]// LNCS, ICARIS. Heidelberg: Springer, 2005, 3627: 153-167.
[4]LN De Castro, FJ Von Zuben. The clonal selection algorithm with engineering application [C]// Proceedings of GECCO Workshop on Artificial Immune Systems and Their Applications. Las Vegas: CiteSeer, 2000: 36-37.
[5]Matzinger P. Tolerance, danger and the extended family [J]. Annual Review of lmmunology, 1994, 12: 991-1045.
[6]Aickelin U, Bentley P, Cayzer S, et al. Danger theory: the link between AIS and IDS? [C]// LNCS, ICARIS. Heidelberg: Springer, 2003, 2787: 147-155.
[7]王亞芹,梁意文,劉賽. 基于樹(shù)突狀細(xì)胞算法的應(yīng)用層DDoS攻擊檢測(cè)[J]. 計(jì)算機(jī)工程與設(shè)計(jì).2015,36(4):841-845.
[8]Gu F, Greensmith J, Aickelin U. Further exploration of the dendritic cell algorithm: antigen multiplier and time windows [C]// LNCS, ICARIS. Heidelberg: Springer, 2008, 5132: 142-153.
[9]Greensmith J, Aickelin U. The deterministic dendritic cell algorithm [C]// LNCS, ICARIS. Heidelberg: Springer, 2008, 5132: 291-303.
[10]FANG Xian-jin, WANG Li. Theoretical investigation on the dendritic cells algorithm [J]. Journal of Beijing Institute of Technology. 2014, 23(3): 401-406.
[11]Zhang FuYong, Qi DeYu, Hu JingLin. MBMAS: a system for malware behavior monitor and analysis [C]// 2009 International Symposium on Computer Network and Multimedia Technology (CNMT), Wuhan, China, 2009.
[12]Manzoor S, Shafiq M Z, Tabish S M, et al. A sense of ‘danger’ for windows processes [C]// LNCS, ICARIS. Heidelberg: Springer, 2009, 5666: 220-233.
The Application of Artificial Immune Algorithms in Malware Detection
ZHANG Fuyong
(Computer College, Dongguan University of Technology, Dongguan 523808, China)
With the improvement of malicious code complexity, requirements of malware detection method can not only achieve efficient detection, but also have good robustness to cope with the possible confusion test strategy. This paper investigates “both generations” artificial immune algorithms, that is, negative selection algorithm (NSA) and dentritic cell algorithm (DCA), applied in run-time malware detection, which is realized by capturing IRP sequence during the running program. Experimental results reveal that NSA is a practical algorithm for malware detection, while DCA has great uncertainty in detection accuracy.
artificial immune system; malware detection; negative selection algorithm; dentritic cell algorithm
2015-06-03
廣東省教育科學(xué)規(guī)劃課題(14JXN029)。
張福勇(1982—),男,山東龍口人,講師,博士,主要從事軟件測(cè)試、信息安全研究。
TP393
A
1009-0312(2016)03-0039-06