摘要:針對計算機病毒新品種及已知病毒新變種的難以檢測問題,該文提出了根據(jù)生物免疫原理檢測未知病毒的構(gòu)想,并建立了計算機病毒檢測模型,重點討論了部分算法及技術(shù),最后分析其有效性。
關(guān)鍵詞:免疫學習;自體耐受;檢測器;基因
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)28-0046-04
Research of Computer Virus Detection Based on Immune
DANG Qi-min,SONG Li-li
(East China University of Science and Technology,Shanghai 200237,China)
Abstract: Face to the difference of detecting new computer virus and new mutations of old ones, this paper conceives a model to detect computer virus based on immune, and discusses parts of arithmetic and technology. Finally, we illustrate the validity of the model.
Key words: immunization study; self-tolerance; detection; gene
1 引言
隨著計算機的日益普及和網(wǎng)絡(luò)覆蓋率的擴大,計算機病毒的種類及同一病毒的變種越來越多,造成的危害也越來越大。傳統(tǒng)的計算機病毒檢測方法主要有基于特征碼的病毒靜態(tài)檢測法、文件完整性檢測法。前者主要利用已知的特征碼來查殺病毒,隨著病毒變異的出現(xiàn),原來的檢測和清除工具效率大幅降低。后者也稱校驗和法,這種方案要計算出正常文件內(nèi)容的校驗和并保存。通過檢查文件當前內(nèi)容的校驗和與原來的校驗和是否一致,可以發(fā)現(xiàn)文件是否感染。由于病毒感染并非改變文件的唯一原因,常常誤報錯誤。針對現(xiàn)今病毒的發(fā)展,研究一種既可以在第一時間發(fā)現(xiàn)新病毒又不會誤把正常文件報成病毒的檢測方法迫在眉睫。
計算機病毒雖然種類繁多,但他們存有共性。這些共性跟生物界的病毒有相似之處,生物體準確識別并對抗外來病毒的能力引起了計算機病毒檢測界的注意。對于已經(jīng)遇到過的病毒,生物體能在第一時間快速做出應(yīng)答;對于沒有遇到過的病毒,生物體會經(jīng)過一段比較長的學習階段,產(chǎn)生可以識別該病毒的細胞,再次遇到該病毒時就能在第一時間識別它。如果生物免疫原理能用到計算機病毒的檢測上,這將能解決新病毒或者病毒新變種不能被識別的問題,成為計算機病毒檢測技術(shù)發(fā)展史上的一個新的里程碑。
該文首先分析了計算機病毒的特征及其與生物病毒的相似處,然后結(jié)合生物免疫原理構(gòu)建了基于免疫技術(shù)的計算機病毒檢測模型,并重點討論了病毒檢測體系的部分模塊的算法及技術(shù)實現(xiàn)。
2 基于免疫技術(shù)的病毒檢測模型研究
2.1 計算機病毒分析
計算機病毒很難有一個確定的明確的定義,狹義的計算機病毒指一些能夠精確地復制自身,或者發(fā)生變異后產(chǎn)生下一代的一些程序片段;而廣義的計算機病毒指一切具有破壞計算機系統(tǒng)、資源和干擾計算機正常運行的程序代碼,包括蠕蟲。同樣,生物病毒也沒有一個明確的概念,狹義的生物病毒是一種獨特的傳染因子,是能夠利用宿主細胞的營養(yǎng)物質(zhì)來自主地復制自身的DNA或RNA、蛋白質(zhì)等生命組成物質(zhì)的微小生命體;而廣義的病毒復雜得多,包括擬病毒、類病毒和病毒粒子。
跟生物病毒類似,計算機病毒的特征表現(xiàn)在如下幾個方面:
1) 宿主。計算機病毒的行為類似于溫和型噬菌體,它們都將自身的代碼插入一段異已的程序代碼中去,利用宿主的程序代碼被執(zhí)行或復制的時候,復制自己或產(chǎn)生效應(yīng),令系統(tǒng)癱瘓或吞噬計算機資源。生物病毒不管是烈性噬菌體還是溫和型噬菌體,都必需在活的宿主細胞中才能得以復制繁殖,利用宿主細胞的核苷酸和氨基酸來自主地合成自身的一些組件,裝配下一代個體。
2) 感染性。被復制的病毒代碼總要搜尋特定的宿主程序代碼并進行感染。復制后的生物病毒裂解宿主細胞而被釋放出去,感染新的宿主細胞。
3) 微小性。計算機病毒相當短小精悍,其代碼一般都較短。一般的生物病毒的個體必須在電鏡下才能見到其真面目。
4) 簡單性。計算機病毒程序代碼一般都具備可執(zhí)行文件的完整結(jié)構(gòu),因此不可以單獨地被激活、執(zhí)行和復制,必須將其代碼的不同部分鑲?cè)氲剿拗鞒绦虻母鱾€代碼段中去,才能具有傳染和破壞性。同樣生物病毒顆粒因為過于微小,無法攜帶病毒復制所需全部信息,因此必須利用宿主來合成自身所需物質(zhì)。
5) 變異性。不管生物病毒還是計算機病毒都具有變異性。某些種類的計算機病毒的變異力相當大,它們通過自身程序來完成變異的功能,稱為多態(tài)性病毒。
6) 多樣性。從1987年首例計算機病毒Brain被發(fā)現(xiàn)到現(xiàn)在,計算機病毒的數(shù)量已經(jīng)超過了5000種。同樣,自1892年俄國植物學家D.I-vanoskey發(fā)現(xiàn)了煙草花葉病毒(TMV)到現(xiàn)在,生物病毒的數(shù)量也以驚人的速度增長。
2.2 基于免疫技術(shù)的計算機病毒模型
生物免疫系統(tǒng)的基本功能是識別自我和非我,免疫系統(tǒng)不僅能夠識別已知抗原,同時還能夠識別未知抗原,并且對再次入侵的抗原能發(fā)生快速反應(yīng)(即二次應(yīng)答)。從信息處理的角度來看,免疫系統(tǒng)是一個自適應(yīng)、自學習、自組織、并行處理和分布協(xié)調(diào)的復雜系統(tǒng)。
同理,免疫計算的核心問題是如何定義自體和非自體。自體必須完整反映出受保護系統(tǒng)的特征,必須找出系統(tǒng)中相對穩(wěn)定的特征。正常程序跟病毒程序的區(qū)分可以根據(jù)程序多個方面的特點來實現(xiàn)。從程序的指令特征來看,病毒程序的頭部往往有一些病毒的跳轉(zhuǎn)語句和病毒大小的標識;正常程序的數(shù)據(jù)段往往含有一些注釋和說明性的文字,比如程序名稱、作者、版本號等等,病毒程序一般沒有這類說明性文字,這也可以作為病毒代碼的一部分特征。從病毒的功能特征來看,病毒的駐留、權(quán)限、觸發(fā)機制、破壞機制和傳播特征等也能用于跟正常程序區(qū)分。
根據(jù)生物免疫原理,該文建立了生物免疫系統(tǒng)與病毒檢測免疫系統(tǒng)的概念對應(yīng)關(guān)系。如表1所示為生物免疫系統(tǒng)與病毒檢測免疫系統(tǒng)的映射關(guān)系。
下面根據(jù)上述生物免疫思想給出檢測器等的形式化定義,以及閾值判斷等公式。自體/非自體在不同的領(lǐng)域內(nèi)有著不同的定義:計算機程序域D{0,1}k 。經(jīng)過抗原提取過程,U被劃分為兩個子集S和T,自體集S∈U,非自體集T∈U,滿足U=S∪T和S∩T=Ф。
系統(tǒng)使用檢測器模擬免疫細胞和抗體的功能,定義檢測器及檢測器集合如下:
D={d | d =,s∈U, r, l, c∈N};
每個檢測器d是一個四元組,其中s是抗體,也是k長的01串,r是檢測器年齡,l是檢測器的壽命,c是檢測器與抗原匹配的次數(shù)即累計親和力。
檢測器通過抗體與抗原的親和力匹配來檢測外來抗原,利用Hamming距離表達親和力。匹配函數(shù)M判斷兩個L長的0l串是否匹配,參數(shù)σ是匹配的門限值(0<σ<1),如果H(α,β) ≥L×σ則M(α,β)=1,否則M(α,β)=0。H(α,β)= ■αiβi,如 則αiβi=1否則αiβi=0。
3 基于免疫技術(shù)的病毒檢測體系結(jié)構(gòu)設(shè)計
本體系結(jié)構(gòu)的總體設(shè)計思想是將正常的程序代碼集合定義為自體集,用隨機生成的初始檢測元和自體集中的代碼匹配,利用負選擇算法將初始檢測元中與自體集匹配的檢測元刪除,剩下的為成熟檢測元(即抗體)。任意一個入侵抗原,將和自體匹配,匹配成功則放過,然后與所有成熟檢測元進行匹配,如果匹配成功,則將抗原刪除;對于與抗原有較高親和力的抗體可進行遺傳變異,以提高它的親和力。
系統(tǒng)模擬的自體、記憶檢測器庫、待測數(shù)據(jù)分別來自于正常程序、感染病毒的程序和待測程序,其中自身用于模擬生物系統(tǒng)的自身細胞,記憶檢測器記錄病毒的特征碼字符串,用于病毒檢測。常用檢測器是由隨機生成的檢測器字符串經(jīng)過自體耐受之后生成的,它同時會收錄病毒檢測模塊經(jīng)過檢測器變異得到的新檢測器,豐富的常用檢測器庫可以識別各未知病毒,特別是經(jīng)過檢測器變異得到的新檢測器識別檢測病毒新變種很有效。
如圖1所示,免疫學習模塊包括自體耐受跟檢測器進化兩部分,用于實時更新記憶檢測器庫。首先系統(tǒng)把經(jīng)過自體耐受的初始檢測器錄入到常用檢測器,在生命周期內(nèi)跟病毒匹配次數(shù)超過一定閾值的常用檢測器進化到記憶檢測器,否則該常用檢測器被刪除。病毒檢測模塊分兩個小模塊,一個是病毒檢測,一個是檢測器的遺傳變異。前者通過字符串與自體的匹配來識別待測程序是否是自身程序,與自體不匹配的將與記憶檢測器庫匹配來識別是否是病毒,識別出病毒的記憶檢測器經(jīng)過變異后錄入到常用檢測器,跟自體、記憶檢測器庫都不匹配將與常用檢測器庫比對,如果匹配成功則認為是病毒,否則上報給用戶,被用戶認為是危險程序的錄入到常用檢測器庫(模擬生物體的初次應(yīng)答),否則錄入到自體。后者提供經(jīng)過遺傳變異的檢測器給免疫學習模塊。數(shù)據(jù)預處理主要把提取到的程序處理成系統(tǒng)可以使用的字符串。
4 算法及技術(shù)實現(xiàn)
4.1 數(shù)據(jù)預處理模塊
數(shù)據(jù)預處理模塊用于把計算機程序數(shù)據(jù)處理成系統(tǒng)可以用的字符串數(shù)據(jù)。
此模塊分網(wǎng)絡(luò)抓包、基因提取兩個步驟。網(wǎng)絡(luò)抓包通過eEye公司的工具軟件iris實現(xiàn)。該軟件通過層層解碼,能得到該數(shù)據(jù)包的字符串?;蛱崛」ぷ鲃t通過如下算法實現(xiàn),得到24位16進制字符的字符串,作為程序分析的自我和抗原以及檢測器的通用形式。程序特征碼字符串以下全部稱為檢測器。檢測器主要從計算機程序的指令特征中提取,包括MAC頭文件、IPv4頭文件、UDP頭文件等等,提取的信息包括程序文件大小,程序駐留位置等等。如2.2節(jié)所示,使用軟件iris實現(xiàn)。
void jiyin_set::extractor(list
list
list
int listStr_num=0;//記錄listStr中的特征碼個數(shù)
for(pl=genlist->begin();pl!=genlist->end();pl++){
string temp=(*pl).str_viris_Sig;
listStr.push_back(temp);
listStr_num++;}
list
iter1=listStr.begin();
int search_num=listStr_num *(1-ISGENE_OERCENT)+1;
int i=1;
while(i<=search_num){
string str=(*iter1);
iter1++;
for(ing j=0;j {string temp=str.substr(j,GENE_NUM); iter2=iter1; int inNum=1; for(;iter2!=listStr.end();iter2++){ int index=string::npos; int value(*iter2).find(temp); if(index!=value) inNum++; }double inPercent=(double)inNum/(double)listStr_num; if((inPercent>ISGENE_PERCENT)!jiyinset(temp)){ pc_jiyinset->push_back(temp); jiyin_num++;}} i++;}} 4.1 免疫學習模塊 免疫學習模塊主要模擬生物免疫系統(tǒng)免疫細胞的生成及進化過程。此模塊對隨機生成的初始檢測器進行自體耐受,生成常用檢測器,并對常用檢測器進行進化,最終生成記憶檢測器,用于病毒檢測。為了保證記憶檢測器的實時更新,免疫學習模塊隨著病毒檢測的運行也一直在運行,新變異的檢測器被錄入到常用檢測器集用于學習。 下面給出檢測器的數(shù)據(jù)結(jié)構(gòu): Struct detect { Char gene[24];//檢測器的24位基因字符串 Int age;//檢測器年齡 Int life;//檢測器壽命 Int app;//檢測器與抗原匹配次數(shù)} 免疫學習模塊首先要解決的事情就是如何區(qū)分自我與非我。在眾多的被免疫系統(tǒng)用來完成這樣的區(qū)分工作的處理過程中,否定選擇算法是其中最重要的角色之一。本系統(tǒng)運用否定選擇算法來執(zhí)行免疫學習模塊的自體耐受過程。 否定選擇算法是對T細胞在胸腺中的成熟過程的模仿。算法主要包括了兩個階段:審查和監(jiān)測。審查階段主要負責檢測器的產(chǎn)生。在監(jiān)測階段,檢測器監(jiān)測受保護的系統(tǒng)以發(fā)現(xiàn)變化。但是這個算法在試驗中被證明是一個很耗時的算法。用于生成檢測器的時間主要可以用在產(chǎn)生足夠數(shù)量的合格的檢測器前必須被審查的檢測器數(shù)量來衡量。觀察得出,候選檢測器的數(shù)量是隨自體集的大小成指數(shù)增長。這就意味著完成這個過程的時間隨自體集的增大而增大,而且這個過程并不檢查冗余的檢測器。為了最小化這些限制,就產(chǎn)生了一些檢測器生成算法的變體:線性,貪心和二進制模板。線性(linear)和貪心(greedy)算法的運行時間分別與自體集和檢測器集的大小成線性關(guān)系。而二進制模板算法能夠生成高效沒有冗余的檢測器,但不能最小化生成它們所要花的時間。 長度為L的檢測器字符串α,β的親和力M(α,β)根據(jù)Hamming距離來判定。如Hamming距離M(α,β) ≥L×σ,則表示親和力高,記作M(α,β) =1,其中σ為兩個字符串匹配的門限值,其大小在0到1之間。在匹配規(guī)則中,設(shè)定σ是核心,以免發(fā)生把非我識別成自我的肯定錯誤以及把自我識別成非我的否定錯誤。根據(jù)本文的數(shù)據(jù)結(jié)構(gòu),L=24,暫且設(shè)定σ=0.75,當檢測器α,β的基因串(gene[24])相同位置的字符相同且個數(shù)大于18時,即H(α,β)≥18時,表示檢測器α,β匹配。 生成常用檢測器集Dc的算法如下: While size(Dc) d={ random(24), 0, 20, 0}//初始化檢測器 If M(d.gene, si )=1 break// si取自體集S中的所有檢測器,分別跟d計算親和力,親和力高的檢測器被刪除 Else if M(d, si)=0 d->Dc //與自體親和力低的檢測器錄入Dc 常用檢測器的學習進化算法如下: for(int i=0;i if(Dc[i].age for(int j=0;j if(Dc[i].gene==V[j].gene){ if(Dc[i].app else{Dc[i]->RDc;}//跟抗原匹配次數(shù)達到閾值T的檢測器進化為記憶檢測器}}} Dc[i].age++;} 4.2 病毒檢測模塊 病毒檢測模塊除了實現(xiàn)病毒檢測功能外,還要進行檢測器的變異,新檢測器將進入免疫學習模塊,以實現(xiàn)檢測器的實時更新。下面給出計算機病毒的數(shù)據(jù)結(jié)構(gòu): Struct virus { Char name[30];//病毒名稱 Char gene[24];//病毒的基因字符串} 病毒檢測模塊不僅要實現(xiàn)病毒的識別,還要實現(xiàn)檢測器的進化,所以涉及的算法比較多。本文列出了檢測器進化中,需要用到的克隆選擇算法及檢測器變異算法。 克隆選擇原理被用來解釋抗體是如何識別抗原的。當一種細菌侵入我們的肌體后,便開始大量的復制自己,同時破壞我們的細胞。免疫系統(tǒng)用來對付這種抗原的方法之一就是大量的復制免疫細胞來識別和消滅這些致病的抗原體。那些能夠識別抗原的細胞根據(jù)識別的程度通過無性繁殖達到增生的目的:與抗原具有越高的識別率,該細胞就能產(chǎn)生更多的后代。在細胞分裂的過程中,細胞還經(jīng)歷了一個變異的過程,其結(jié)果使它們與抗原具有更高的識別率:父代細胞與抗原具有越高的識別率,則它們就經(jīng)歷越小的變異。一個通用的克隆選擇算法的過程如下所示,這個算法能夠完成機器學習和模式識別的任務(wù),因此它可以被用來解決優(yōu)化問題,著重于多模式和組合優(yōu)化。 克隆選擇算法如下 d={ random(24), 0, 20, 0}//初始化檢測器 while(d.age d.age++//檢測器年齡+1 if M(d, vi)=1//計算檢測器與病毒的親和力,親和力高則進入循環(huán) d.app++//與病毒親和力高的檢測器的累計匹配次數(shù)+1 d.gene=vary(d.gene, vi)//檢測器變異,與病毒的親和力作為參數(shù),即與病毒親和力越高的檢測器變異越大,否則越小 d->Dc 檢測器變異是系統(tǒng)動態(tài)性、多樣性、自適應(yīng)性的技術(shù)保證,是免疫系統(tǒng)的重要特性。檢測器變異有兩種類型,一種是可控變異,確保子代檢測器具有父代檢測器的特征,一種是隨機變異,確保產(chǎn)生一些與父代具有較大差異的子代檢測器,實現(xiàn)多樣性。本文選用了可控變異,克隆選擇算法,可以把檢測器根據(jù)對病毒的親和力遺傳變異,獲得更多副本,使其能更加有效地識別病毒及病毒變種。 5 結(jié)束語 該文提出的病毒檢測方法具有免疫系統(tǒng)自學習和自適應(yīng)性等好的計算能力,比傳統(tǒng)的病毒檢測技術(shù)有較大的優(yōu)勢,檢測實驗結(jié)果也表明這種方法對未知病毒及已知病毒的變種的檢測有良好效果。另外,生成記憶檢測器過程實質(zhì)是對病毒特征的提取過程,這也是一種自動提取病毒特征碼的好思路。如果免疫思想能用到現(xiàn)今計算機病毒的檢測上,將能解決新病毒或者病毒新變種不能被識別的問題,成為計算機病毒檢測技術(shù)發(fā)展史上的一個新的里程碑。 參考文獻: [1] Forrest S,Hofmeyr S,Somayaji A. Computer Immunology[J].Communications of the ACM,2002,40(10):88-96 [2] Forrest S, Perelson A S, Allen L, et al. Self-nonself Discrimination in a Computer[C]. Proceedings of the 1994 IEEE Symposium on Research in Security and Privacy, Los Alamos, CA: IEEE Computer Society Press,1994. [3] 馬林梓,方蕓.計算機病毒與反病毒技術(shù)的新動向[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2001(9):14. [4] 梁意文,張雙.免疫系統(tǒng)識別器的自適應(yīng)模型[J].計算機工程與應(yīng)用,2002,38(2):170-171.