沈承東 宋波敏
1海軍計(jì)算技術(shù)研究所 北京 100841
2華中科技大學(xué)計(jì)算機(jī)學(xué)院 湖北 430074
本文通過分析一些常見的檢測(cè)方法,并通過分析其原理,來判斷各種方法的優(yōu)勢(shì)和劣勢(shì)。因?yàn)楦鞣N新型惡意代碼的出現(xiàn),在識(shí)別能力和處理量上,對(duì)于檢測(cè)程序都有了新的要求。伴隨著這些變化,一些更加智能化的檢測(cè)手段相繼出現(xiàn)。這些手段改進(jìn)的一個(gè)主要目標(biāo),就在于將靜態(tài)的比對(duì)方法,通過知識(shí)庫中各個(gè)點(diǎn)間的相互聯(lián)系,甚至自動(dòng)的獲取知識(shí)分析,來達(dá)到檢測(cè)的目的。這些方法的出現(xiàn),一方面是應(yīng)對(duì)新型惡意代碼的需要出現(xiàn)的,另一方面也是在各種資源成本與檢測(cè)效益間的平衡中發(fā)展起來的。
這是一種最常見的檢測(cè)方法,它用惡意代碼中特有的特征代碼檢測(cè),這些字節(jié)序列是不太可能出現(xiàn)在正常文件中,通過查詢比對(duì)即可以檢測(cè)出一批惡意代碼。比如依據(jù)如下原則:抽取的代碼比較特殊,所以不大可能與普通正常程序代碼吻合。抽取的代碼要有適當(dāng)長(zhǎng)度,一方面保證特征代碼的惟一性,另一方面又不要保證有太大的空間。
例如KMP算法的時(shí)間復(fù)雜度為 O( m+n ), 如果待檢測(cè)的特征代碼個(gè)數(shù)為k,而特征代碼平均長(zhǎng)度為M,待檢測(cè)代碼長(zhǎng)度為N,則可以設(shè)系統(tǒng)資源消耗為Pay。


其最終的時(shí)間復(fù)雜度為 O( K·(M+N) ),
Pay=k(m+n)·α(α是一個(gè)穩(wěn)定的系數(shù),它與具體系統(tǒng)有關(guān))。
可以看到,Pay(系統(tǒng)資源消耗)其隨著特征代碼量k的增加呈線性變化,其隨著k的增長(zhǎng)線性增長(zhǎng)。這種檢測(cè)方法它有一個(gè)弱點(diǎn)就是:現(xiàn)今隨著惡意代碼量呈指數(shù)級(jí)增長(zhǎng)之勢(shì),如果要保證安全性,那么配套就需要龐大的特征庫,這樣就造成檢測(cè)代碼的工作量,伴隨著特征庫的增大隨之放大。與此同時(shí)一些新型代碼采用了加殼,變形,多態(tài)等各種新技術(shù)來躲避查殺,這樣就更加加重了特征碼檢測(cè)的難度,因此單純依靠特征碼比對(duì),已不足以應(yīng)對(duì)新型代碼。并且在惡意代碼檢測(cè)方面,很重要的一點(diǎn)就是,做到早發(fā)現(xiàn),早處置,就可以減少損失,但這種檢測(cè)方法屬于事后補(bǔ)救方式。同時(shí)整個(gè)檢測(cè)系統(tǒng)的可靠性,強(qiáng)烈依賴于特征庫的完整性,如果特征庫并沒有隨時(shí)更新,其面對(duì)新代碼也就無能為力。所以,這種方法伴隨著時(shí)代發(fā)展,已經(jīng)不再很適合應(yīng)對(duì)各種新情況了。
啟發(fā)式掃描技術(shù)檢測(cè)程序,實(shí)際上就是以特定方式實(shí)現(xiàn)對(duì)代碼行為的檢測(cè),通過對(duì)代碼行為的觀測(cè)來推測(cè)代碼動(dòng)機(jī)。從工作原理上可以分為靜態(tài)啟發(fā)以及動(dòng)態(tài)啟發(fā)兩種。 啟發(fā)式實(shí)現(xiàn)檢測(cè)程序可以實(shí)現(xiàn)能夠分析自動(dòng)文件代碼的邏輯結(jié)構(gòu),并判斷是否含有惡意程序特征,或者通過在一個(gè)虛擬的模擬執(zhí)行環(huán)境中,通過模擬性質(zhì)的執(zhí)行代碼來判斷輸入其中的代碼其是否有惡意屬性,并最終決定處理動(dòng)作。一般前者被稱為靜態(tài)代碼分析,而后者則被稱為動(dòng)態(tài)啟發(fā)式。
其原理在于,惡意代碼與普通程序在啟動(dòng)時(shí),它們的行為存在明顯差異。利用這個(gè)區(qū)別,檢測(cè)程序就可以通過掃描程序的特征指令,并與一般的常規(guī)指令比較,觀察命中的條數(shù)綜合起來就可以判別代碼是否為惡意代碼,這種方法也可以作為特征碼識(shí)別的一種補(bǔ)充。與特征碼識(shí)別最大的不同就在于,這種方式判斷的依據(jù)在于代碼的行為特征,而非其他。
比如惡意代碼最初的指令卻極有可能是一些危險(xiǎn)指令例如寫盤操作或者解碼指令,或者搜索某敏感路徑下的可執(zhí)行程序等等,依據(jù)出現(xiàn)這些可疑行徑的情況進(jìn)行分析,同專門的指令庫進(jìn)行比較,則可以判定此代碼的惡意屬性。依靠專家經(jīng)驗(yàn),可以建立一個(gè)惡意指令知識(shí)庫,那么如同特征碼庫一樣就可以通過定期更新的辦法維持對(duì)一些新型代碼的查殺能力。
靜態(tài)啟發(fā)式檢測(cè),主要可以通過反匯編方式,實(shí)現(xiàn)在不執(zhí)行代碼的情況下,通過核對(duì)病毒頭指令,來達(dá)到檢測(cè)的目的。因?yàn)橹饕闅⒌哪繕?biāo)在于代碼的最開始一段,這樣可以省去很多系統(tǒng)資源。
這種方法的資源消耗同特征碼識(shí)別相比類似,但是他的特征庫可以做的更小一些。對(duì)比特征庫動(dòng)輒上萬的記錄,惡意指令庫要小上很多,作為一種補(bǔ)充措施它相比起來更加高效一些。但是由于完備性不夠,實(shí)用效果并不如動(dòng)態(tài)啟發(fā)好,只適宜于用作補(bǔ)充措施。
動(dòng)態(tài)啟發(fā)式的原理在于,最初可以假設(shè)并不知道某個(gè)程序是否帶有惡意代碼屬性,如此就可以先虛擬出一個(gè)執(zhí)行環(huán)境,讓代碼在其中并模擬執(zhí)行。如果是惡意代碼,代碼在模擬執(zhí)行的時(shí)候,就會(huì)如期產(chǎn)生一些危險(xiǎn)動(dòng)作。這樣一來就可以通過探針發(fā)現(xiàn)。它的關(guān)鍵思想是,模擬實(shí)驗(yàn)方法以及糾正思想。如圖1所示。

圖1 動(dòng)態(tài)啟發(fā)式檢測(cè)示意圖
這種方法的一個(gè)關(guān)鍵思路,就是虛擬機(jī)制。可以是模擬執(zhí)行動(dòng)態(tài)監(jiān)測(cè),或者設(shè)置報(bào)警誘發(fā)裝置。它通過虛擬機(jī)技術(shù)來仿真內(nèi)存和CPU以及文件系統(tǒng)和網(wǎng)絡(luò)連接進(jìn)而模擬代碼的執(zhí)行過程。又或者采用蜜罐技術(shù)設(shè)置陷阱門,進(jìn)而誘發(fā)惡意行為而產(chǎn)生警報(bào)。這種方法由于代碼執(zhí)行區(qū)間在虛擬機(jī)中,所以不會(huì)在真實(shí)環(huán)境中威脅用戶數(shù)據(jù)。
由于動(dòng)態(tài)啟發(fā)式判斷技術(shù)具有許多其他檢測(cè)方法不可替代的優(yōu)勢(shì),故而仍然是現(xiàn)階段檢測(cè)未知病毒比較有效可靠的方法并得到了廣泛的應(yīng)用。
這種方法檢測(cè)的原理在于,人們依靠對(duì)病毒行為規(guī)律分析和深入歸納總結(jié),并結(jié)合安全專家判定惡意代碼的經(jīng)驗(yàn)歷史,可以提煉出惡意代碼識(shí)別規(guī)則知識(shí)庫通用規(guī)則,并依此模擬人類專家發(fā)現(xiàn)新病毒的機(jī)制,通過對(duì)各種程序執(zhí)行的動(dòng)作進(jìn)行監(jiān)視,并嘗試自動(dòng)分析程序動(dòng)作之間的邏輯關(guān)系,依靠知識(shí)庫的知識(shí)進(jìn)行動(dòng)作識(shí)別,以達(dá)到主動(dòng)防御的目的。在具體的行為檢查方面,以檢測(cè)工具具體利用的方法不同,可以大致分為基于專家系統(tǒng)的檢測(cè)和基于神經(jīng)網(wǎng)絡(luò)的檢測(cè)兩種。整個(gè)解決辦法的模型如圖2所示。

圖2 主動(dòng)防御檢測(cè)模型
專家系統(tǒng)是一個(gè)智能計(jì)算機(jī)系統(tǒng),它的知識(shí)庫依靠某個(gè)領(lǐng)域?qū)<宜降闹R(shí)與經(jīng)驗(yàn),即能夠利用人類專家的行業(yè)知識(shí)和解決方法。亦即專家系統(tǒng)是一個(gè)具有大量的行業(yè)知識(shí)經(jīng)驗(yàn)的計(jì)算機(jī)系統(tǒng),專家系統(tǒng)與傳統(tǒng)的計(jì)算機(jī)程序系統(tǒng)有著完全不同的體系結(jié)構(gòu),通常它由知識(shí)庫、推理機(jī)、知識(shí)獲取機(jī)制、解釋機(jī)制和人機(jī)接口等幾個(gè)基本獨(dú)立部分所組成。專家系統(tǒng)依靠知識(shí)庫和推理機(jī),在用戶輸入后推理分析得出結(jié)論,并產(chǎn)生知識(shí)。而推理機(jī)用來將用戶輸入的信息與知識(shí)庫中各個(gè)規(guī)則進(jìn)行匹配比較。這種方法應(yīng)用到在惡意代碼檢測(cè)領(lǐng)域,病毒代碼即為輸入,由專家系統(tǒng)推理產(chǎn)生代碼的行為判定,如圖3所示。

圖3 專家系統(tǒng)檢測(cè)模型
專家系統(tǒng)的重點(diǎn)在于知識(shí)庫的維護(hù)方式和知識(shí)獲取機(jī)制。將知識(shí)庫里面的單條記錄確定為一個(gè)約束,再將模式定義為多個(gè)約束的集合,采用if-then產(chǎn)生式規(guī)則來描述知識(shí)規(guī)則,同時(shí)配合閥值控制最終的反應(yīng)行為。
這種檢測(cè)方式運(yùn)用神經(jīng)網(wǎng)絡(luò)的自我學(xué)習(xí)能力,結(jié)合專家系統(tǒng)的推理機(jī)制,使得整個(gè)檢測(cè)系統(tǒng)更加智能化,從而具有了更強(qiáng)的自適應(yīng)能力。神經(jīng)網(wǎng)絡(luò)是一種依靠模擬動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,來進(jìn)行復(fù)雜信息處理的數(shù)學(xué)算法模型。
其本質(zhì)在于模擬動(dòng)物神經(jīng)網(wǎng)絡(luò)的運(yùn)行機(jī)制。依靠系統(tǒng)的復(fù)雜程度,通過調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互關(guān)聯(lián)影響的關(guān)系,以提供的一批初始值來計(jì)算推理并輸出數(shù)據(jù),通過分析掌握兩者之間的內(nèi)在關(guān)聯(lián),最終實(shí)現(xiàn)用新的用戶輸入數(shù)據(jù)來推算并輸出用戶結(jié)果,最終導(dǎo)致系統(tǒng)的識(shí)別能力不斷提高。依靠神經(jīng)網(wǎng)絡(luò)的這種自我學(xué)習(xí)能力,將其擴(kuò)展在惡意代碼檢測(cè)發(fā)現(xiàn)上面,即可以動(dòng)態(tài)的適應(yīng)各種新情況,由于現(xiàn)在的常規(guī)檢測(cè)算法推理能力不高,依靠神經(jīng)網(wǎng)絡(luò)高度智能化的推理能力以及知識(shí)庫,就可以將對(duì)惡意代碼的識(shí)別能力提高不少。處理邏輯如圖4所示。

圖4 神經(jīng)網(wǎng)絡(luò)檢測(cè)模型
但是現(xiàn)階段,基于神經(jīng)網(wǎng)絡(luò)的代碼檢測(cè)面臨的問題導(dǎo)致似乎得不償失,一方面在于神經(jīng)系統(tǒng)本身極其復(fù)雜,耗費(fèi)了大量數(shù)據(jù)和計(jì)算。而且另一方面檢測(cè)過程中其固有的算法,難以產(chǎn)生全局性的結(jié)果,需要嚴(yán)格控制虛警率即誤報(bào)率,與此同時(shí)神經(jīng)網(wǎng)絡(luò)本身的特點(diǎn)又容易產(chǎn)生另一個(gè)問題就是,在初始化時(shí)傳入的參數(shù)偏差,很容易導(dǎo)致訓(xùn)練過度,并由此產(chǎn)生不會(huì)識(shí)別新樣本集的現(xiàn)象。但在長(zhǎng)遠(yuǎn)看來,神經(jīng)網(wǎng)絡(luò)的這種自我學(xué)習(xí)能力和自我適應(yīng)能力用于惡意代碼檢測(cè)非常合適,只要神經(jīng)網(wǎng)絡(luò)本身的問題得到解決,這種檢測(cè)方法具有很強(qiáng)的實(shí)用價(jià)值。
惡意代碼因?yàn)橛幸欢ǖ膫鞑C(jī)制和發(fā)作機(jī)理,通過人工知識(shí)總結(jié)或者機(jī)器自我推理,就可以提取惡意代碼的語義特征。特征碼匹配和靜態(tài)啟發(fā)式對(duì)應(yīng)這種方式,可以認(rèn)為是一些孤立的單點(diǎn)集合,并沒有良好的組成連通圖。隨著技術(shù)的更新發(fā)展,動(dòng)態(tài)啟發(fā)式和專家系統(tǒng),就可以比較好的實(shí)現(xiàn)這種知識(shí)間的聯(lián)通和交流,但是數(shù)據(jù)的自我更新能力相比基于神經(jīng)系統(tǒng)的檢測(cè)方法缺乏動(dòng)態(tài)適應(yīng)能力。
[1] 周瑞麗.基于專家系統(tǒng)的惡意代碼檢測(cè).中國(guó)科學(xué)技術(shù)大學(xué)[學(xué)位論文].2009.
[2] 崔鵬.基于形式化語義的啟發(fā)式病毒檢測(cè)引擎研究.遼東學(xué)院學(xué)報(bào)(自然科學(xué)版).2008.
[3] 王海峰,段友祥.基于行為分析的病毒檢測(cè)引擎的改良研究.計(jì)算機(jī)應(yīng)用.2004.
[4] 周瑞麗,潘劍鋒等.應(yīng)用專家系統(tǒng)開發(fā)Windows惡意代碼檢測(cè)系統(tǒng)的研究.信息安全與通信保密.2009.
[5] SINGH P K;LAKHOTIN A Static verification of worm and virus behavior in binary executables using model checking 2003.