摘 要:針對惡意軟件檢測尤其是未知惡意軟件檢測的不足,提出一種基于免疫原理的惡意軟件檢測模型,該模型采用程序運行時產生的IRP請求序列作為抗原,定義系統中的正常程序為自體,惡意程序為非自體,通過選定數量的抗體,采用人工免疫原理對非自體進行識別。實驗結果表明,此模型在惡意軟件的檢測方面具有較高的準確率,且誤報和漏報率較低,是一種有效的惡意軟件檢測方法。
關鍵詞:人工免疫; 惡意軟件; 病毒檢測; 反病毒
中圖分類號:TP393.08文獻標志碼:A
文章編號:1001-3695(2010)06-2313-03
doi:10.3969/j.issn.10013695.2010.06.091
Immunebased model for malware detection
ZHANG Fuyong, QI Deyu, HU Jinglin
(Research Institute of Computer Systems, South China University of Technology, Guangzhou 510640, China)
Abstract:In order to solve the problems existing in the current malware detection especially unknown malware detection, this paper proposed a new malware detection model based on immune. In this model, the IRP request sequences created by running programs regarded as antigen, and the normal programs in operating system were self, malwares were nonself. The nonself would be detected by some antibodies using artificial immunology. Experimental results reveal that this model has high true positive rate, and low 1 positive and 1 negative rate. It’s an efficient method for malware detection.
Key words:artificial immune; malware; virus detection; antivirus
當前惡意軟件的檢測技術主要有基于特征碼的檢測方法、行為監測法和啟發式方法。特征碼檢測法是目前最廣泛應用的檢測方法。通過采集惡意軟件樣本,提取其特征碼,檢測時將特征碼與檢測樣本比較,判斷是否有樣本片段與此特征碼吻合。這種方法只能檢測已知病毒,而且對于目前廣泛傳播的變形病毒、多態病毒等無能為力。行為監測法是利用病毒的特有行為特征性來監測病毒的方法。通過對病毒多年的觀察、研究,有一些行為是病毒的共同行為,而且比較特殊,在正常程序中比較罕見。當程序運行時,監視其行為,如果發現了病毒行為則報警。行為監測法可以識別未知病毒,但誤報率較高,且實現困難。啟發式方法是通過仿真運行程序,尋找可疑的代碼組合,如果可疑代碼組合超過一定的閾值,則認為是惡意程序。啟發式方法針對不同類型的病毒,需要用完全不同的規則來構建啟發式分析器的判斷邏輯,通常情況下誤報率也較高。
生物免疫系統(biological immune system, BIS)具有良好的多樣性、分布性、自學習、自適應和魯棒性等特點,引起了研究人員的廣泛關注。1974年,丹麥學者Jerne[1]提出了第一個免疫系統的數學模型。之后Forrest等人的否定選擇算法[2]和計算機免疫學[3]概念的提出,推動了人工免疫系統在計算機安全領域的發展。Harmer等人[4]運用人工免疫原理建立了一個計算機安全領域的應用框架,介紹了免疫原理在病毒檢測、入侵檢測等領域的應用。
在病毒檢測方面,Dhaeseleer等人[5]使用陰性選擇算法來檢測被保護數據和程序文件的變化,該方法可以檢測未知病毒,但只能針對靜態數據和軟件進行檢測。Kephart等人[6]提出了一種新的病毒檢測方法,它采用已知病毒的特征代碼序列來檢測已知病毒,而未知病毒則通過系統中發現的異常行為加以檢測。Forrest等人[7]提出了一種基于系統調用序列的惡意行為檢測方法。Lee等人[8]通過從程序入口點開始提取一系列字符串來區分自體與非自體,以實現病毒檢測。Li Tao等人[9]提出一種基于免疫的動態病毒檢測模型,給出了自體、非自體的動態描述及其演化過程。
本文提出一種新的基于免疫學原理,采用IRP請求序列的惡意軟件檢測模型(virus detection based on immune)。此模型通過合理的抗原、抗體定義實現了較高的檢測率,且誤報、漏報率均較低。
1 惡意軟件檢測模型
1.1 抗原定義
模型采用程序運行時產生的IRP請求序列作為抗原。為了捕獲程序運行時產生的IRP請求,開發了一個基于內核驅動技術的IRP請求捕獲工具(MBMAS)。它可以捕獲程序運行時創建的進程信息,以及每個進程針對文件和注冊表操作的IRP請求等信息,并將捕獲的信息以XML格式進行存儲。圖1是IRP請求捕獲工具的用戶態界面。
通過捕獲到的信息發現,進程運行時會產生很多類型的IRP請求,但其中大部分的IRP請求類型出現次數很少。對常見的請求類型進行分析,發現以下八種請求類型(表1)出現頻率較高,通常占98%以上的比例。
由表1可以看出,這八種請求類型占了98.68%,對整個請求序列起決定作用,因此,模型中僅參考這八種類型,而忽略其他的類型。為了方便匹配,用字符0~7代表這八種類型,其他類型統一用“#”代替。具體對應關系如表2所示。
表1 常見IRP請求表
IRP請求類型比例/%
IRP_MJ_CREATE29.97
IRP_MJ_CLEANUP23.24
IRP_MJ_CLOSE26.81
IRP_MJ_DIRECTORY_CONTROL6.99
IRP_MJ_QUERY_INFORMATION8.61
IRP_MJ_QUERY_VOLUME_INFORMATION1.24
IRP_MJ_SET_INFORMATION1.81
IRP_MJ_WRITE0.01
總計98.68
表2 IRP請求類型對照表
IRP請求類型字符
IRP_MJ_CREATE0
IRP_MJ_CLEANUP1
IRP_MJ_CLOSE2
IRP_MJ_DIRECTORY_CONTROL3
IRP_MJ_QUERY_INFORMATION4
IRP_MJ_QUERY_VOLUME_INFORMATION5
IRP_MJ_SET_INFORMATION6
IRP_MJ_WRITE7
其他#
定義抗原域為U∈{0,1,2,3,4,5,6,7,#}l,l∈自然數,定義抗原Ag={x|x=IRP請求序列對應的字符序列,x∈U}。定義自體為正常代碼產生的IRP請求序列對應的字符序列SAg,非自體為惡意代碼產生的IRP請求序列對應的字符序列NAg,且滿足S∪N=Ag,S∩N=。
1.2 抗體(檢測器)定義
模型用免疫系統抗體模擬惡意軟件檢測器,定義檢測器集合Ab={α1,α2,…,αi},αi∈{0,1,2,3,4,5,6,7,#}p,p∈自然數,且p≤l,i∈自然數。
為了有效檢測惡意代碼,需要將檢測器按免疫原理進行學習和進化,將檢測器分為未成熟檢測器、成熟檢測器和記憶檢測器。未成熟檢測器是由系統隨機生成,需經過自體耐受才可以進行檢測;經過自體耐受后存活的檢測器成為成熟檢測器,它具有了檢測能力,成熟檢測器具有一定的生命周期,若在生命周期內未匹配到任何非自體抗原,將被拋棄;記憶檢測器是成熟檢測器匹配到非自體抗原,且達到一定閾值后激活產生的,記憶檢測器原則上擁有無限的生命周期,但由于系統資源有限,不可能讓記憶檢測器集合無限增長,當記憶檢測器數量達到最大值時,采用LRU算法淘汰最近最久未匹配到非自體的檢測器,淘汰后的記憶檢測器將進入成熟檢測器集合,重新設定生命周期。
1.3 模型框架
系統模型的架構如圖2所示。模型首先采用大量的自體抗原對檢測系統進行學習,得到一定數量的成熟檢測器,而后將待檢測序列交給檢測系統進行檢測,成熟檢測器檢測到非自體并達到一定閾值后成為記憶檢測器,并對此記憶檢測器進行克隆,克隆副本放入成熟檢測器集合,同時選取少量的克隆副本進行變異,以適應外部環境的動態變化。本模型采用Hamming空間單點變異法[10]進行變異,變異后的檢測器放入未成熟檢測器集合,重新進行自體耐受。
1.4 匹配規則
檢測器與抗原的匹配采用順序匹配法。匹配規則如圖3所示。順序匹配法采用檢測器與抗原序列依次匹配,記錄成功匹配的字符數為n,設抗原序列長度為L,檢測器長度為k,則進行匹配的字符總數m為
m=k(L-k+1)+(k-1)+(k-2)+…+1=k(2L-k+1)/2(1)
本例中L=21,k=6,n=11,m=111,則匹配函數fmatch(L,k)=n/m=0.099。
1.5 自體耐受
未成熟檢測器需要經過自體耐受,以生成成熟檢測器。本模型采用否定選擇算法[2]進行自體耐受,如圖4所示。
自體耐受過程如式(2)描述:
ftolerance(I)=I-{i|i∈I∧s∈S, fmatch(|s|,|i|)>θ}(2)
其中:|s|為自體序列s的長度;|i|為未成熟檢測器i的長度;θ為自體耐受匹配閾值,0≤θ≤1。
經自體耐受后的非成熟檢測器將轉變為成熟檢測器M:
M={m|m∈Ab∧m∈ftolerance(I),m.age<λ}(3)
其中:λ為成熟檢測器的生命周期閾值,m.age為成熟檢測器m的生命周期。
定義|M|為成熟檢測器M的數量。自體耐受算法描述如下:
begin
while成熟檢測器數量未達到值|M| do
begin
隨機生成一個長度為k的檢測器;
計算此檢測器與每一個自體抗原的匹配度,記錄最大匹配值;
if 最大匹配值<θ
then此檢測器成為成熟檢測器;
else丟棄此檢測器;
end
end
1.6 檢測過程
模型中采用的檢測函數如式(4)所示:
fdetect(L,k)=1fmatch(L,k)>θ′∧count>η0otherwise(4)
其中:θ′為檢測匹配閾值,0≤θ′≤1;count為fmatch(L,k)>θ′的檢測器數量;η為匹配非自體的檢測器數量閾值。
成熟檢測器到記憶檢測器的演變過程如式(5)(6)描述:
fmature(M)={m|m∈M∧n∈N,m.age<λ,max fmatch(|n|,|m|)∧fdetect(|n|,|m|)=1}(5)
R={r|r∈Ab∧r∈fmature(M),|R|<δ}(6)
其中:max fmatch(|n|,|m|)為fmatch(|n|,|m|)的最大值;|R|為記憶檢測器R的數量;δ為記憶檢測器數量最大值。
惡意代碼檢測算法描述如下:
begin
gor 每一個待檢測序列do
begin
計算待檢測序列與每個檢測器的匹配度fmatch,記錄所有fmatch>θ′的檢測器;
if 存在檢測器其fmatch>θ′ and count>η then
begin
認為此待檢測序列為非自體;
將最高匹配度檢測器放入記憶檢測器集合;
對此檢測器進行克隆;
選擇克隆副本的10%進行變異;
end
end
end
2 仿真實驗
實驗分以下三個階段進行:
a)自體數據庫建立。實驗采用10臺計算機進行自體數據的收集,計算機的操作系統均為Windows XP,系統中安裝MBMAS進行IRP請求的捕獲。自體數據收集工作進行了30天,共收集到自體序列43 862個,平均每臺機器每天146個。這里每一個進程從創建到消亡過程中產生的IRP請求為一個序列,將收集到的IRP序列轉換為相應的字符序列存到數據庫中。
b)學習過程。實際是對未成熟檢測器的自體耐受過程,初始得到成熟檢測器數為200個。
c)檢測過程。使用MBMAS在一臺獨立的Windows XP機器中收集了568個IRP請求序列,其中自體序列302個,非自體序列266個。設定初始檢測器長度k=6,自體耐受匹配閾值θ=0.1,檢測匹配閾值θ′=0.1,匹配非自體的檢測器數量閾值η=10,采用檢測率(TP,非自體被檢測出的概率)、誤報率(FP,自體被誤認為非自體的概率)、漏報率(FN,非自體被誤認為自體的概率)來評估模型的檢測性能。
當檢測器長度k=5,6,8時,得到的檢測結果如表3所示。
由表3可以看出,當k=6時,檢測率可以達到96.99%,而誤報率僅為1.66%。原因為采用了大量的自體數據對系統進行學習,實際檢測時將自體誤認為非自體的幾率較小。同樣,僅有少數非自體,它們的序列長度很短,沒有產生過多的行為,與自體非常相似,才會被誤認為是自體。
實驗中發現當自體耐受匹配閾值θ與檢測匹配閾值θ′相等時,得到的檢測結果較好,因此下面的實驗用匹配閾值來代表θ與θ′,圖5、6顯示了匹配閾值與檢測性能的關系,結果表明匹配閾值為0.1時檢測效果最好。
為體現模型性能,將本模型與Forrest等人[2,11]提出的ARTIS模型進行比較,圖7、8是VDI與ARTIS檢測性能的比較。可以看出,VDI可以達到的檢測率要高于ARTIS,尤其是在誤報率方面,VDI要明顯優于ARTIS。這是因為ARTIS采用的r連續位匹配法[11]不能很好地區分模型中的自體與非自體。
另外,由于VDI采用的匹配算法時間復雜度為O(kN),其檢測效率很高。圖9是VDI與ARTIS檢測效率比較,可以看出,VDI的檢測效率要明顯高于ARTIS。
3 結束語
本文提出了一種采用IRP請求序列的惡意軟件檢測方法,相比傳統的病毒檢測方法在檢測率及檢測速度上均具有很大優勢。該方法不僅可以實現靜態檢測,還可以實現動態檢測,可以采用MBMAS動態監視系統IRP請求,實時將請求序列送給VDI進行檢測,一旦達到匹配閾值即報警。VDI的動態檢測能力為計算機病毒免疫系統的設計提供了一個新的方向。畢竟本文最終的目的是實現計算機病毒的免疫,而不是僅實現病毒檢測。
參考文獻:
[1]JERNE N K. Towards a network theory of the immune system [J]. Annual Immunology, 1974, 125C(12): 373-389.
[2]FORREST S, PERELSON A S, ALLEN L, et al. Selfnonself discrimination in a computer [C]//Proc of IEEE Symposium on Research in Security and Privacy. Oakland: IEEE Press, 1994:202-212.
[3]FORREST S, HOFMEYR S A, SOMAYAJI A. Computer immunology[J]. Communications of the ACM,1997,40(10):88-96.
[4]HARMER P K, WILLIAMS P D, GUNSCH G H, et al. An artificial immune system architecture for computer security applications [J]. IEEE Trans on Evolutionary Computation,2002,6(3):252-280.
[5]DHAESELEER P, FORREST S, HELMAN P. An immunological approach to change detection: algorithms, analysis and implications[C]//Proc of IEEE Symposium on Security and Privacy. Oakland: IEEE Press, 1996:110-119.
[6]KEPHART J O, SORKIN G B, SWIMMER M. An immune system for cyberspace [C]//Proc of IEEE International Conference on Systems, Man, and Cybernetics. Orlando:IEEE Press, 1997:879-884.
[7]FORREST S, HOFMEYR S A, SOMAYAJI A, et al. A sense of self for UNIX processes[C]//Proc of IEEE Symposium on Security and Privacy. Oakland: IEEE Press, 1996: 120-128.
[8]LEE H, KIM W, HONG M P. Biologically inspired computer virus detection system [C]//Proc of the 1st International Workshop on Biologically Inspired Approaches to Advanced Information Technology. Lausanne: Springer, 2004:153-165.
[9]LI Tao. Dynamic detection for computer virus based on immune system [J]. Science in China Series Finformation Sciences, 2008, 51(10):1475-1486.
[10]李濤.計算機免疫學[M].北京:電子工業出版社,2004:60-62.
[11]HOFMEYR S, FORREST S. Architecture for an artificial immune system [J]. Evolutionary Computation, 2000, 8(4):443-473.