楊慶濤
重慶醫(yī)科大學現(xiàn)代教育技術中心 重慶 400016
本文分析了現(xiàn)有的針對網(wǎng)絡蠕蟲特征的檢測方法,涉及到對已知和未知蠕蟲的檢測。在蠕蟲的特征提取技術方面,分析了現(xiàn)有的特征提取方法,同時引入了生物信息學中采用的序列連配算法來進行特征的提取工作,對算法的性能進行分析比較,提出了對算法的改進方法,在對網(wǎng)絡蠕蟲的檢測技術和特征提取的理論分析的基礎上,提出了基于上述思想的網(wǎng)絡蠕蟲檢測模型,該模型給出了蠕蟲檢測的具體實現(xiàn)方法。
在對蠕蟲病毒進行檢測和防御的過程中,都需要對其特點進行研究和發(fā)現(xiàn),而特征碼無疑最能反映蠕蟲和其他計算機病毒的特點。所謂的特征碼可用來對蠕蟲和其它的變體進行身份識別,能夠反映其攻擊特征,在計算機中的組織表現(xiàn)就是一組或者多組的二進制的連續(xù)的序列。
所謂的特征提取算法,它的方法就是首先收集可疑的數(shù)據(jù)包,然后對這些可疑的數(shù)據(jù)包加以分析比較,從而能夠提取出具有一定代表性,能夠反映蠕蟲傳播特點,攻擊特點的特征,并最終為蠕蟲的檢測技術所使用。目前常用特征提取技術包括最大公共子串(Longest Common Subsequence,LCS)提取、基于 Rabin fingerprints算法的對數(shù)據(jù)流的內(nèi)容進行有效的劃分,采用Expectation Maxmization等。其中最有代表性的是最長公共子序列LCS。采用該方法的時候時間復雜度較高,同時若支持進行聚類分析,則平攤復雜度將更高;若不支持聚類的分析,其混合通信(包括非蠕蟲通信、若干蠕蟲種類、若干蠕蟲變體)將嚴重影響到特征的提取過程;正是基于這樣的考慮我們提出了下面的特征提取的改進方法。
Needleman 算法的思想是基于動態(tài)規(guī)劃的思想,通過使用該算法,我們能夠?qū)蓚€序列進行相似度的比較,同時通過量化的方式,能夠計算出它們之間的相似度比值。對這個比值進行比較分析,就得到了一個基于全局的聯(lián)配結(jié)果。
該算法具有兩個主要步驟:(1) 計算所給定的兩個序列整個的相似分值,并得到一個相似度矩陣;(2) 根據(jù)相似度矩陣,按照動態(tài)規(guī)劃的方法回溯尋找最優(yōu)的聯(lián)配。我們將通過如下的方式對兩個序列的相似度進行計算:
對于序列x和y,序列聯(lián)配的相似度計算函數(shù)定義為:
在上面的定義中,我們引入了分值的概念,以分值的大小來表示序列的相似度。m表示的是兩個序列匹配時的得分,而不匹配時的得分用n表示,如果出現(xiàn)空位的話,其分值為δ,由此我們可以計算出相似度比值。
在實際的應用中,若需要對兩個序列xi和yi進行序列聯(lián)配,那么在聯(lián)配的過程中可以表示為三個序列,分別是x′, y′和s。其中x′, y′分別表示有x,y通過插入一定的空格所產(chǎn)生,s則是聯(lián)配的結(jié)果。s 中包含x′和y′對齊后相同的字母以及通配符“?”和“*”顯然s體現(xiàn)了x和y的相似關系,為了對序列的結(jié)果進行分析,我們將結(jié)果S中被“*”和“?”分開的部分稱為片段,而只含有一個字符的片段稱為序列碎片?,F(xiàn)考慮如下的兩個序列xi和yj,xi= NMZTCJPGKYXV和yj=AKYXTNOZUCDP。圖1中我們在序列xi的末端插入空位符,在yj的前端插入空位符,由此得到下面兩種結(jié)果,如圖2所示。
圖1 聯(lián)配的結(jié)果
圖2 聯(lián)配的結(jié)果
在實驗中考慮如果序列匹配則m=2,不匹配則n=-2,每出現(xiàn)一個空位符δ=-1,即空位罰分。根據(jù)公式1我們將得到如下結(jié)果:
聯(lián)配a的相似度分值S( x, y)=2×4+(-1)×3+(-2)×10=-15 (2)
聯(lián)配b的相似度分值S( x, y)=2×3 +(-1)×2+(-2)×14=-24 (3)
聯(lián)配的結(jié)果中,聯(lián)配a的相似度值明顯優(yōu)于聯(lián)配b的結(jié)果。但是,這并不是我們期望的結(jié)果,因為沒有考慮到序列碎片的問題,序列碎片是由于我們在匹配的過程中不當?shù)奶砑涌瘴蛔址斐傻?。可以看出在?lián)配a中產(chǎn)生了4個序列碎片,而聯(lián)配b中沒有序列碎片。從實際的應用可以判斷,聯(lián)配b明顯優(yōu)于聯(lián)配a,原因在于:
① 連續(xù)的序列片段更能體現(xiàn)數(shù)據(jù)的語義信息
在兩個序列匹配的結(jié)果中,序列b中含有連續(xù)的字母片段“KYX”,這顯然更能反映序列的語義信息。
② 序列碎片容易導致誤報的產(chǎn)生
另一個重要的原因在于,序列碎片容易導致誤報的產(chǎn)生,若將聯(lián)配的結(jié)果表示成*N*Z*C*P*,將該特征與隨機產(chǎn)生的字符長度為1000的字符串比較,將會有38.7%的概率被匹配到。而聯(lián)配b所表示的特征信息*TWO*只有0.00059%的概率被匹配到。這是因為序列碎片成為了無用的干擾信息,其所產(chǎn)生的攻擊特征也很不準確。
由以上分析可知,將 Needleman-Wunsch算法移植到蠕蟲病毒特征提取的實際應用中時,由于采用的匹配方式不同,使用該算法所產(chǎn)生的全局最優(yōu)也很容易易產(chǎn)生序列碎片的情況,也就是采用了匹配結(jié)果中匹配字符數(shù)較長,相似度比值較高的字符串作為聯(lián)配的結(jié)果,這顯然會產(chǎn)生不太理想的情況。為了能夠提供序列的匹配精度,使得匹配的結(jié)果更為準確,本文提出了一種激勵相鄰匹配的的全局聯(lián)配算法。
與 Needleman-Wunsch算法一樣,本算法也是采用動態(tài)規(guī)劃的思想,在其的空間和時間的復雜度上都是O(nm)(本處用n和m來分別表示兩個序列的長度)。為了使序列匹配上能夠使局部較長字符串的到補償,本文通過加入補償函數(shù)來增加對于局部最優(yōu)的需求,采用該方法使保留的字符串最優(yōu)。通過該方式得到的相似度函數(shù)如下:
該算法的具體描述為:設具有X和Y的兩個序列xi和yj,兩個序列之間的相似度為S(x,y)。通過評價x序列中前i個位置和y序列前j位置之間的匹配值,我們可以遞歸的得到聯(lián)配的結(jié)果F(x,y)。如果x和y的長度分別為m和n,則其期望距離為。在相似度矩陣中引入的第1行1列單元的距離為0(相當于兩個空序列進行聯(lián)配),在單元(i,j)內(nèi),使到達該單元距離增加的三種可能事件為:
① 從單元(i-1,j)向單元(i,j)進行垂直移動,相當于在序列X中插入了一個空位使得相似序列得以延伸。
② 從單元(i-1,j-1)向單元(i,j)的對角線進行移動,相當于增加了堿基xi和yj使的相似序列延伸。
③ 從單元(i,j-1)向單元(i,j)的水平移動,相當于在 Y 序列中插入了一個空位使相似序列得到延伸。引入補償函數(shù)ins(S)時,就需要考慮到各種其它的因素進行設置。
因此,單元(i,j)的相似度S (xi,yj)可看成三個相鄰單元的相似度值加上相應權重后的最大者,即
該式的初始條件為:
在上面的公式中,對參數(shù)進行如下設置:
針對聯(lián)配方式a,由于在其中碎片的存在其值為:
而針對聯(lián)配方式b我們將得到如下的相似度值:
通過比較可知,補償函數(shù)的引入,能夠得到最優(yōu)的聯(lián)配結(jié)果。
為了對特征提取算法進行驗證,我們設計了一個蠕蟲檢測模型。本系統(tǒng)由功能劃分明顯的幾個模塊構(gòu)成,各個模塊之間相互協(xié)作,能夠?qū)崿F(xiàn)對網(wǎng)絡中數(shù)據(jù)的捕獲,到異常的發(fā)現(xiàn)和報警,同時能夠?qū)?shù)據(jù)包中相應的數(shù)據(jù)特征提取。系統(tǒng)總體結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)總體模塊結(jié)構(gòu)
該系統(tǒng)由數(shù)據(jù)捕獲,協(xié)議分析和異常檢測等幾個模塊構(gòu)成,盡管本系統(tǒng)只是用于實驗性的工作,但考慮到蠕蟲發(fā)展的現(xiàn)狀和以后改進的需要,還是提供了一點的擴展功能。
① 數(shù)據(jù)包捕獲模塊。該模塊的主要功能是通過在以太網(wǎng)中使用winPcap實現(xiàn)對數(shù)據(jù)包的捕獲功能,為后面進行數(shù)據(jù)分析提供依據(jù)。
② 協(xié)議分析模塊。協(xié)議分析模塊是通過數(shù)據(jù)傳輸?shù)奶攸c,完成數(shù)據(jù)包的逆向分析,獲取數(shù)據(jù)包每層的數(shù)據(jù)信息。
③ 基于貝葉斯的檢測模塊。通過協(xié)議分析模塊的實現(xiàn),我們獲取了每層數(shù)據(jù)包的信息,通過對數(shù)據(jù)包頭信息的分析,我們結(jié)合數(shù)據(jù)的異常檢測算法,能夠及時的發(fā)現(xiàn)潛在的數(shù)據(jù)威脅并進行有效的報警。
④ 特征提取模塊。在數(shù)據(jù)的異常檢測部分,我們完成了對異常數(shù)據(jù)的檢測,但是我們設計系統(tǒng)的目標是為了發(fā)現(xiàn)蠕蟲的傳播和攻擊特點,而特征碼真是對其特點的最好體現(xiàn),通過特征信息的提取,為以后的數(shù)據(jù)檢測分析提供了有效的方法。
⑤ 數(shù)據(jù)庫的實現(xiàn)。在數(shù)據(jù)庫的設計方面我們將采用開源軟件Mysql來實現(xiàn)。
為了得到理想的測試效果,本測試利用了賽門鐵克蠕蟲模擬器的simulatr的蠕蟲模擬功能,在地址為192.168.0.199及222的兩臺機器上啟動蠕蟲模擬器,通過加載Blaster Worm和MyDoom Worm兩個蠕蟲程序。系統(tǒng)將會自動模擬這兩種蠕蟲的傳播方式進行傳播,其效果如圖4所示。
圖4 蠕蟲模擬程序
在系統(tǒng)檢測服務器運行蠕蟲檢測程序,該程序首先會進行初始化操作,完成系統(tǒng)網(wǎng)卡的選擇,然后進入系統(tǒng)等待狀態(tài),其進入等待后的狀態(tài)如圖5所示。
圖5 系統(tǒng)運行界面
在完成了數(shù)據(jù)包的捕獲后,系統(tǒng)將會根據(jù)設置的參數(shù)完成對數(shù)據(jù)的分析工作,上面的圖示中顯示了系統(tǒng)分析的結(jié)果。系統(tǒng)根據(jù)捕獲數(shù)據(jù)包的情況,完成了對數(shù)據(jù)的分析工作,在上圖中展示了異常數(shù)據(jù)的信息,包括其發(fā)生的時間,源地址信息,目的地址,所采用的端口及協(xié)議信息等。采用同樣的方式,我們會看到系統(tǒng)根據(jù)異常檢測的結(jié)果提取的數(shù)據(jù)的特征信息。其最終的結(jié)果如圖6所示。
圖6 提取的特征信息
Step1:為了對基于序列聯(lián)配的特征提取進行比較,本文選擇了ATPhttpd和BIND-TSIG這兩種漏洞來進行攻擊測試。ATPhttpd是一款高性能的小型WEB服務程序,遠程攻擊者可以利用此來進行緩沖區(qū)溢出攻擊。BIND是一個實現(xiàn)域名服務協(xié)議的服務器軟件,在TSIG(傳輸簽名)的實現(xiàn)上存在一個緩沖區(qū)溢出漏洞,可能允許遠程攻擊者在BIND服務器上執(zhí)行任意代碼。
Step2:采用了兩個不含攻擊的數(shù)據(jù)集 DRAPA96和DRAPA97來進行攻擊測試,并采用ADMmutate對數(shù)據(jù)進行了變形處理,使得對漏洞的攻擊能產(chǎn)生多個攻擊的樣本;
在試驗中,本文分別采用了LCS算法,Needleman算法及其改進的激勵算法進行了特征的提取工作,表1即為特征提取的結(jié)果對比。
表1 提取的攻擊特征對比圖
從上表中不難看出,當采用改進的 Neeleman算法時,所提取的特征比LCS算法和Needleman算法更為準確。準確性從提取的特征的數(shù)量和特征的片段都有所反應。如在 BIND攻擊的時候,采用 Neeleman算法所提取的特征少了聯(lián)系后面 x00 x00 xFA的特征x00。同時,在改進算法的ATPhttpd攻擊中,其提取的特征BF ?????????? r n有多個問號,也就是說有多個可變的字符,這也更能反映變形或隱藏攻擊的情況。
本文通過分析現(xiàn)有蠕蟲特征提取方法,引入了生物信息中特征的提取方法,同時針對算法中的不足提出了相應的改進方法。在此基礎上設計了網(wǎng)絡蠕蟲的特征值提取模型。通過測試證明,該模型對已知及未知病毒蠕蟲特征的提取都具有一定的參考價值。
[1]Hofmeyr,Forrest S.Architecture for an artificial Immune system[J].Evolutionary Computation.2011.
[2]Vigna G,Kemmerer R A.NetSTAT:a network-based Intrusion Detection System[J].Computer Security.2010.
[3]R.Lo,P.Kerchen and R.Crawford.Towards a testbed for malicious code detection[J].Computer Communication.2010.
[4]AntonChuvakin,GCIA GCIH.Honeynets:High Value Security Data[J].Network Security.2009.
[5]鄭輝.Internet 蠕蟲研究[D].南開大學.2003.
[6]鄭軍,胡銘曾,云曉春,鄭仲.基于數(shù)據(jù)流方法的大規(guī)模網(wǎng)絡異常發(fā)現(xiàn)[J].通信學報.2006.