【摘要】目前由于傳統的病毒檢測算法缺乏智能性,因而使得殺毒軟件在檢測病毒時產生的漏檢和誤檢比率較高,因此解決當前病毒檢測算法的智能性十分必要。不論是過去還是現在每種程序都有自身的屬性,因此本文從程序屬性的角度出發,提出一種基于程序屬性的病毒檢測算法。該算法以病毒的傳染模塊具有的屬性作為檢測未知程序是否為病毒的前提條件。本文提出的病毒檢測算法在檢測未知程序時分為三步:第一步提取程序的所有屬性,第二步將需要檢測程序的各種屬性值與病毒的特有屬性的屬性值進行比較。第三步根據比較的結論,再根據實體與屬性存在的內在聯系來判斷該未知程序是不是病毒。本文提出的算法具有一定的智能性,能夠作為現有病毒檢測算法的補充。
【關鍵詞】病毒;屬性;惡意程序
1.引言
由于病毒對程序具有攻擊性和破壞性,因此計算機用戶為了清除病毒,首先必須檢出病毒。自從第一個病毒出現以來,病毒的更新速度總比反病毒技術來得快,因此為了減少對未知程序的誤判,提高殺毒軟件的準確率,使得殺毒軟件具有一定的智能性十分必要。智能性的殺毒算法除了能夠檢測出新病毒,同時也能檢測出已知的病毒。當今已有的病毒智能檢測算法有如下幾種:⑴啟發式代碼掃描技術,⑵虛擬機查病毒技術,⑶計算機病毒的免疫技術。這幾種算法都具有一定的智能性,可以發現一定數量的未知型病毒,但在這些算法中仍有不足之處,單一的檢測方法不能檢測出所有未知的新病毒。因此本文將提出了一種新的智能性病毒檢測算法,該算法能夠對現有智能性算法起到一定的補充作用。
由于病毒技術在不斷地更新之中,因此新舊病毒共存。盡管在當今不斷出現新病毒,但由于在各種程序中,每種程序都有各自固有的屬性,但同時這些程序的某些方面都有共性,因此不論是新病毒還是舊病毒,從病毒屬性的角度來分析可以發現不同病毒的屬性存在的差異是微小的。新病毒繼承了舊病毒的所有屬性,只要是病毒那么它們都具有病毒的所有屬性。為了在現有算法上提高算法的智能性和提高殺毒算法的準確率,使現有的智能型病毒檢測技術更加智能化因此本文從程序屬性的角度來判斷該程序是否是病毒。從未知程序屬性的角度出發,提出一種具有一定智能性的病毒檢測方法,該方法能夠提取一個未知程序的屬性,之后將未知程序屬性與病毒的重要屬性——傳染屬性進行比較,通過屬性之間的相互比較來判斷該未知程序是不是病毒。由于程序屬性之間的比較可以由機器自動完成,無需人工干預,因此本文所提出的檢測算法具有一定智能性。
2.病毒簡介
(1)何謂病毒
病毒的定義如下:計算機病毒是一段附著在其它程序上的可以自我繁殖的程序代碼,復制后生成的新病毒同樣具有感染期他程序的功能[2]。因此,根據病毒的定義可以認為計算機病毒是一種破壞計算機正常程序的惡意程序。
(2)毒的屬性
計算機病毒的傳染模塊有兩個重要特性:
①寄生性:病毒程序寄生于宿主程序中,宿主程序執行時病毒程序首先被執行,即具有寄生性[2]。
②傳染性:病毒程序能夠自我復制到其他宿主程序中,即具有傳染性。且在被感染的程序運行時,病毒程序能夠進一步感染其他目標程序,從而使病毒得到傳播。能夠進行自我復制是病毒最為本質的特性[2]。
計算機病毒的一個重要特性就是具有傳染性。一個程序是否具有傳染性是判別該程序是否為計算機病毒的重要條件[6]。如果某種程序具有傳染性,那么該程序就是病毒。如果該程序不具備傳染的屬性,那么該程序就是非病毒程序[1] 。不論是病毒程序還是非病毒程序都具有自身的屬性。因此本文從病毒屬性的角度來設計一個病毒檢測算法,該病毒檢測算法以該病毒的傳染特性作為智能檢測未知程序的重要依據。該算法能夠對一個未知程序的屬性進行智能化檢測,最終判斷該未知程序是不是病毒。
3.病毒檢測函數和算法
3.1 毒程序與非病毒程序的檢測
程序屬性判定函數:
3.2 程序屬性簡要
①程序的屬性與屬性值
對于一個實體,其屬性需要用相應的屬性值來描述[3]。在董氏系統中,屬性跟屬性值有著嚴格的對應。有什么類的屬性就有什么類屬性值。世界上不存在沒有值的屬性,也不存在不指向任何屬性的屬性值[4]。因此實體的屬性決定實體的屬性值,同時屬性值能夠反映實體的屬性。
②程序的子屬性
現有某個程序員編寫的某個程序,該程序由若干個小程序組成。而這些小程序實現的功能是這個程序的子功能。而實現某種功能的程序具有自己的屬性,那么子程序所具有的屬性是整個程序的子屬性。
3.3 程序屬性判定
計算機病毒在結構上一般分為三個功能模塊:感染機制、觸發機制和有效載荷。這里定義的感染機制就包含了病毒自我復制部分[9]。病毒的傳染模塊主要完成病毒的自制 [10]。
計算機病毒傳染模塊負責傳染,而病毒的復制和寄生是傳染過程中的兩個獨立過程,因此復制和寄生是傳染模塊的兩個子屬性。
提取病毒傳染模塊中的兩個模塊:寄生程序和復制程序。計算寄生程序和復制程序的屬性值:
①寄生程序的屬性值用符號記為j;
②復制程序的屬性值用符號記為t。
實現整個程序最基本功能的程序稱為最小功能程序,本文中稱為原子程序。在這個未知程序中有n個原子程序,n個原子程序具有的屬性個數為:n1,n2,n3……nn;其屬性值分別為n1',n2',n3'……nn'。
(1)未知屬性程序的原子程序屬性與病毒寄生程序屬性進行比較
屬性判定函數:
;令x=n
,,……
討論:
①當原子程序屬性值nn'都大于寄生程序屬性值j,這時nn'值越小,則yn=f(x)的值越接近于1,因此這時yn=f(x)取最小值。
③減少殺毒軟件對程序的誤判,提高殺毒軟件的完善性。
5.結束語
本文對程序屬性進行判斷是為了對未知程序的特性進行判斷,并且使得檢測病毒的算法具有智能性。如果未知程序是病毒,那么該程序就有病毒的傳染性。如果未知程序不是病毒程序,那么該未知程序所有的屬性值都將偏離病毒屬性值。因此如果未知程序是病毒程序,那么從該程序中提取的屬性,將該程序的所有屬性值與病毒的重要屬性……傳染性的屬性值進行相比較,從而判定未知程序是否是病毒。如果判定未知程序是病毒,則再通過比較該程序與已知病毒之間的屬性來判定該病毒屬于那一種病毒。盡管本文從病毒屬性的角度提出一種病毒檢測算法,但文本提出的方法有自身的不足之處,還十分希望有關安全研究人員提出修改意見。
參考文獻
[1]鄭晶,王春生.新一代病毒檢測技術研究[J].網絡安全技術與應用,2009,(9):23-25.
[2]秦志光,鳳嶠編著.建峰主審.計算機病毒原理及防范技術[M].科學出版社,2012.
[3]郭劍毅,李真,余正濤,張志坤.領域本體概念實例、屬性和屬性值的抽取及關系預測[J].南京大學學報(自然科學).2012(48):383-389.
[4]劉春卉.屬性值與屬性特征語義語法差異考擦[J].漢語學習.2008(3):43-47.
[5]劉儉,唐朝京,鄭森強.一種計算機病毒的檢方法[J].計算機工程,2003,30(6):127-129.
[6]王培昌.走進計算機病毒[M].人民郵電出版社,2010.
[7]朱俚治.病毒檢測技術的研究與0.5級環[J].計算機技術與發展,2012,22(9):225-227.
[8]朱俚治.一種防病毒智能網絡接口的方案設計[J].中國科技信息,2011,1:73-74.
[9]韓蘭勝,劉銘,彭冰,付才.計算機病毒原理與防治技術[M].華中科技大學出版社,2010.
[10]盧勇,左志宏.計算機病毒的隨機傳染[J].計算機技術與發展,2007(17):172-175.
本文是北京航空航天大學軟件開發環境國家重點實驗室開放基金資助項目(SKLSDE-2013KF)。
作者簡介:朱俚治(1980—),男,南京航空航天大學信息中心工程師,研究方向:計算機網絡和信息安全。