專利名稱:一種多態(tài)蠕蟲自動(dòng)檢測方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,具體涉及一種多態(tài)蠕蟲自動(dòng)檢測方法。
背景技術(shù):
計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,給用戶群體帶來了極大的方便,已經(jīng)深入到社會(huì)生活的 方方面面,成為我們生活中不可或缺的東西。然而,伴隨而來的網(wǎng)絡(luò)安全問題也不斷的困擾 著用戶,成為擺在我們面前亟待解決的問題。各種網(wǎng)絡(luò)攻擊手段層出不窮,隱蔽性越來越 強(qiáng),影響范圍越來越廣,造成的損失也越來越嚴(yán)重。其中,蠕蟲病毒無論從傳播速度、傳播范 圍還是從破壞程度上來講,都是以往的傳統(tǒng)病毒如木馬,或宏病毒等所無法比擬的。比較 典型的例子如1988年,美國康奈爾大學(xué)的研究生莫里斯編寫的蠕蟲病毒造成了數(shù)千臺(tái)計(jì) 算機(jī)停機(jī);而后來的紅色代碼、尼姆達(dá)病毒肆虐的時(shí)候,造成了幾十億美元的損失;而最新 的具有變形能力的多態(tài)蠕蟲和變形蠕蟲的出現(xiàn),更使得計(jì)算機(jī)網(wǎng)絡(luò)安全面臨前所未有的挑 戰(zhàn)。該類型的蠕蟲在每次傳播自身時(shí),能夠利用加密等技術(shù)改變自身的存儲(chǔ)形式,沒有任何 規(guī)律可尋。附圖1中給出了多態(tài)蠕蟲的結(jié)構(gòu)。如圖1中所示多態(tài)蠕蟲可包括5個(gè)部分, 即=Nop Sled,解密器,Shellcode,多態(tài)引擎,以及返回地址。各個(gè)部分的功能如下NOP Sled 這些字節(jié)用來填充被溢出的緩沖區(qū),它對(duì)蠕蟲的執(zhí)行結(jié)果沒有任何影 響,主要用于將控制流最終轉(zhuǎn)向Siellcode。由于操作系統(tǒng)版本等因素,攻擊者往往不能精 確的定位Siellcode的位置,因而在Siellcode前使用Nop Sled, Nop Sled中任何位置的 執(zhí)行都將導(dǎo)致Siellcode的執(zhí)行。早期的Nop Sled僅僅由連續(xù)的Nop指令構(gòu)成,之后,為 躲避如Snort等的檢測,攻擊者對(duì)Nop Sled部分進(jìn)行了變形處理。解密引擎(Decryptor)該部分代碼用于對(duì)加密的蠕蟲體和多態(tài)引擎進(jìn)行解密。蠕蟲體(Worm body)蠕蟲體是實(shí)現(xiàn)蠕蟲功能的部分,比如提升權(quán)限,下載木馬, 感染其他計(jì)算機(jī)等。為躲避檢測,多態(tài)蠕蟲中該部分是被加密的。多態(tài)引擎(Polymorphic Enging)該部分也是被加密的,其主要功能是用于對(duì)蠕 蟲體進(jìn)行加密,并對(duì)解密引擎進(jìn)行變形處理,使得蠕蟲數(shù)據(jù)包的各個(gè)副本之間沒有特征可 尋,從而繞過基于特征碼的檢測機(jī)制。返回地址(Return address)該部分用于改變存在漏洞的服務(wù)程序的執(zhí)行流程, 將其重定向到Nop Sled,并最終執(zhí)行到蠕蟲體,實(shí)現(xiàn)惡意攻擊。綜上所述,多態(tài)蠕蟲的Nop Sled和解密引擎部分是經(jīng)過多態(tài)引擎的變形處理的, 而蠕蟲體本身以及多態(tài)引擎又是被加密的,因而多態(tài)蠕蟲基本沒有任何特征可尋,傳統(tǒng)的 蠕蟲檢測技術(shù)已不能有效地應(yīng)對(duì)該類蠕蟲。現(xiàn)有技術(shù)中的技術(shù)方案一目前普遍使用的蠕蟲檢測技術(shù)只能檢測和查殺已知類型的蠕蟲病毒,使用的最廣 泛的檢測技術(shù)就是特征碼匹配技術(shù)。每當(dāng)有新的蠕蟲出現(xiàn)時(shí),研究人員通過對(duì)蠕蟲的研究 提取出能夠充分識(shí)別該蠕蟲的特征字符串,形成對(duì)該蠕蟲的特征描述,并將其加入到特征 庫中,這些特征可能是惡意的網(wǎng)絡(luò)負(fù)載,也可能是蠕蟲可執(zhí)行代碼中的部分樣本代碼,或者是蠕蟲在受害主機(jī)中留下的攻擊痕跡等。之后,就可以通過特征碼匹配的方式來判斷網(wǎng)絡(luò) 中是否感染該類蠕蟲病毒。其缺點(diǎn)為a)只能檢測已知網(wǎng)絡(luò)攻擊該種檢測技術(shù)依賴于特征碼,只能檢測已知的網(wǎng)絡(luò)攻擊,只要蠕蟲個(gè)體稍有變異, 該種檢測方式就可能失去效力。b)滯后性。由于該種檢測技術(shù)依賴于特征碼,而特征碼的提取需要相當(dāng)長的時(shí)間,通常需要 幾小時(shí)甚至幾天。相反,蠕蟲尤其是快速掃描和傳播的蠕蟲可能在幾分鐘之內(nèi)就可能感染 大規(guī)模的主機(jī)。鑒于蠕蟲在該時(shí)間內(nèi)可能給我們帶來的威脅,該方法顯然具有嚴(yán)重的滯后 性。c)不能有效的應(yīng)對(duì)多態(tài)蠕蟲。由圖1可知,多態(tài)蠕蟲的各個(gè)部分都可經(jīng)過一定的加密或變形處理,從而導(dǎo)致在 該種蠕蟲傳播的過程中,每個(gè)副本之間沒有任何規(guī)律可循,因而可能不能再提取出唯一能 表征該蠕蟲的特征字符串。Polygraph以及Hamsa曾在該種方法的基礎(chǔ)之上提出了一種改 進(jìn)的思想,即采用多個(gè)特征碼片段來作為多態(tài)蠕蟲的特征碼,擯棄傳統(tǒng)的基于單個(gè)連續(xù)的 字符串作為特征碼的方法。但該方法很容易被攻擊者利用和繞過。Roberto Perdisci以及 James Newsome中均提出了繞過該方法的策略。現(xiàn)有技術(shù)中的技術(shù)方案二 鑒于特征碼匹配技術(shù)不能識(shí)別未知蠕蟲的缺點(diǎn),異常檢測技術(shù)逐步成為學(xué)術(shù)界研 究的熱點(diǎn)。異常檢測方法主要基于這樣的思想任何人的行為都具備一定的規(guī)律性,通過對(duì) 這些規(guī)律的學(xué)習(xí)和總結(jié)形成規(guī)則,檢測的時(shí)候如果發(fā)現(xiàn)與正常情況下的行為存在嚴(yán)重的差 異,則認(rèn)為檢測到惡意代碼。例如由于蠕蟲在爆發(fā)時(shí),會(huì)產(chǎn)生大量的探測數(shù)據(jù)包,從而導(dǎo)致 網(wǎng)絡(luò)中的流量發(fā)生急劇變化。因而可首先對(duì)正常情況下流量的統(tǒng)計(jì)學(xué)習(xí),在檢測時(shí),計(jì)算一 段時(shí)間內(nèi)網(wǎng)絡(luò)中的流量與正常情況下流量的偏離度來檢測異常。與基于特征碼匹配的檢測 技術(shù)相比,該方法能夠識(shí)別出未知蠕蟲。該方案缺點(diǎn)為a)驗(yàn)證困難該方法首先需要學(xué)習(xí)正常情況下的行為,并形成一個(gè)或一組表示對(duì)象行為的概 貌,而表示概貌的這些數(shù)據(jù)不容易進(jìn)行正確性和準(zhǔn)確性的驗(yàn)證。b)誤報(bào)率高該種檢測方法需要對(duì)正常情況下的行為進(jìn)行學(xué)習(xí),從而形成規(guī)則,因而用于學(xué)習(xí) 的正常情況下的行為必須非常全面,否則,誤報(bào)率將很高。比如,選擇在網(wǎng)絡(luò)較繁忙時(shí)和網(wǎng) 絡(luò)閑時(shí)學(xué)習(xí)出的規(guī)則可能就會(huì)有很大的差距?,F(xiàn)有技術(shù)中的技術(shù)方案三入侵檢測系統(tǒng)Snort中還提供了一種檢測多態(tài)蠕蟲的方法。它主要通過在數(shù)據(jù)包 中檢測Nop Sled來檢測多態(tài)蠕蟲,檢測方法為在數(shù)據(jù)包中搜索連續(xù)的NOP指令,如果檢測 到連續(xù)的NOP指令數(shù)量超過一定的閾值,則認(rèn)為檢測到蠕蟲。該方案缺點(diǎn)為
4
不能有效的應(yīng)對(duì)高級(jí)的多態(tài)蠕蟲目前高級(jí)的多態(tài)蠕蟲變形技術(shù)可以對(duì)NopSled 部分進(jìn)行一定的變形處理,比如通過使用能夠完成同樣功能的其它的單字節(jié)指令,或者 是使用多字節(jié)指令,或者采用跳轉(zhuǎn)指令來代替Nop指令完成同樣的功能,甚或是利用棧對(duì) 齊原理構(gòu)造一類特殊的Nop Sled,該類型的Sled中,不再是從每一個(gè)字節(jié)都可以執(zhí)行到 shellcode的,而是按4字節(jié)對(duì)齊的位置處開始才可以執(zhí)行到shellcode,從而使得整個(gè)Nop Sled部分可能有完全不同的表現(xiàn)形式,Snort不能檢測這種類似的經(jīng)過高級(jí)變形技術(shù)變形 過的多態(tài)蠕蟲。
發(fā)明內(nèi)容
本發(fā)明所要解決的問題是如何提供一種多態(tài)蠕蟲自檢測方法,該方法能克服現(xiàn) 有技術(shù)中所存在的缺陷,能實(shí)時(shí)檢測未知蠕蟲和有效應(yīng)對(duì)多態(tài)蠕蟲,并且低誤報(bào)率和漏報(bào) 率,處理速度快。本發(fā)明所提出的技術(shù)問題是這樣解決的提供一種多態(tài)蠕蟲自檢測方法,包括以 下步驟①捕獲整個(gè)進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包;②對(duì)所捕獲的數(shù)據(jù)包按照響應(yīng)的協(xié)議進(jìn)行分析并提數(shù)據(jù)包中的負(fù)載,然后利用各 種協(xié)議的層次和標(biāo)準(zhǔn)對(duì)數(shù)據(jù)包負(fù)載進(jìn)行解碼、重組和命令解析處理;③對(duì)步驟②處理后的含有負(fù)載的數(shù)據(jù)包進(jìn)行過濾處理a、如果數(shù)據(jù)包負(fù)載本身能 夠和已知的某種惡意代碼的特征碼相匹配,直接對(duì)其進(jìn)行阻斷和報(bào)警處理;b、利用多態(tài)蠕 蟲數(shù)據(jù)包關(guān)鍵代碼中不能含有空字符的原理,在數(shù)據(jù)包負(fù)載中運(yùn)用模式匹配算法查找兩個(gè) 空字符之間的距離,如果該距離小于給定的閾值,該處不可能為蠕蟲的關(guān)鍵代碼,從而無須 繼續(xù)對(duì)該處進(jìn)行判斷,對(duì)數(shù)據(jù)包負(fù)載中每個(gè)距離大于給定的閾值的字節(jié)串,進(jìn)入步驟④處 理;④判斷步驟③中處理得到的數(shù)據(jù)包中是否含有Nop Sled來判斷數(shù)據(jù)包是否為蠕 蟲數(shù)據(jù)包對(duì)應(yīng)一段長度為η的字節(jié)串,從每個(gè)位置開始反匯編后的指令串都是有效的,則 認(rèn)為含有Nop Sled,判斷該該數(shù)據(jù)包為蠕蟲數(shù)據(jù)包;⑤對(duì)檢測到的蠕蟲數(shù)據(jù)包進(jìn)行響應(yīng)提取出數(shù)據(jù)包中的源IP地址、源端口號(hào),目 的IP地址信息,并在防火墻中添加規(guī)則過濾源IP地址主機(jī)發(fā)出的該源端口號(hào)的數(shù)據(jù)包,同 時(shí)也過濾目的IP地址主機(jī)發(fā)出的該端口的數(shù)據(jù)包。按照本發(fā)明所提供的多態(tài)蠕蟲自檢測方法,其特征在于,步驟④中有效的指令串 包括如下兩種情況a、指令串中每條指令有正確的操作碼和操作數(shù),如果指令有訪問內(nèi)存 地址,那么相應(yīng)的內(nèi)存地址可以被訪問且指令中不包含任何特權(quán)指令;b、指令串中遇到 jmp等跳轉(zhuǎn)指令。按照本發(fā)明所提供的多態(tài)蠕蟲自檢測方法,其特征在于,步驟④中判斷是否含有 Nop Sled的具體過程如下a、給定一個(gè)可疑數(shù)據(jù)包負(fù)載中長度為η的字節(jié)串I1I2I3. . . In,由于不知道該字節(jié) 串在拷貝到受害主機(jī)后,哪些字節(jié)在4字節(jié)對(duì)齊的位置上,不能知道哪些字節(jié)在內(nèi)存中的 地址模4等于0,需要均進(jìn)行一次檢測;b、首先假設(shè)1 i的在內(nèi)存中地址模4等于O,,i = 1、2、3、4,從第i個(gè)字節(jié)開始進(jìn)行反匯編,直至n-i個(gè)字節(jié)均反匯編完成,如果反匯編后的指令均為有效指令,或者遇到j(luò)mp 等跳轉(zhuǎn)指令,則認(rèn)為該位置開始的指令串是可以執(zhí)行的,然后從i+4的位置開始重復(fù)步驟2 進(jìn)行判斷,直至該位置大于η;如果該過程中得到的所有指令串均是可以執(zhí)行的,該字節(jié)串 為Nop Sled ;如果該過程中,檢測到某個(gè)位置開始反匯編的指令串存在內(nèi)存訪問錯(cuò)誤,或者 特權(quán)指令錯(cuò)誤,則Ii在內(nèi)存中的地址模4是不等于0的,如果檢測到所有的Ii的在內(nèi)存中 地址模4均不等于0,該字節(jié)串并不是Nop Sled。本發(fā)明的有益效果a)能夠?qū)崟r(shí)檢測未知蠕蟲本發(fā)明提出的檢測方法將不依賴于特征碼,而是通過實(shí)時(shí)的對(duì)網(wǎng)絡(luò)中的數(shù)據(jù)包負(fù) 載進(jìn)行深度分析的方式來檢測多態(tài)蠕蟲,克服了基于特征碼匹配方法的不能識(shí)別未知蠕蟲 和嚴(yán)重的滯后性的缺點(diǎn)。b)誤報(bào)率和漏報(bào)率低本發(fā)明提出的檢測方法通過對(duì)數(shù)據(jù)包負(fù)載進(jìn)行深度分析來檢測多態(tài)蠕蟲,該種檢 測方法建立在反匯編的基礎(chǔ)上,并通過抽象執(zhí)行的方式在數(shù)據(jù)包負(fù)載中檢測是否存在Nop Sled來判斷數(shù)據(jù)包是否為多態(tài)蠕蟲數(shù)據(jù)包,而Nop Sled本身在多態(tài)蠕蟲中幾乎是必然出 現(xiàn)的,從而保證了較低的誤報(bào)率和漏報(bào)率。c)能夠有效的應(yīng)對(duì)多態(tài)蠕蟲本發(fā)明提出的檢測方法通過抽象執(zhí)行的方式在數(shù)據(jù)包負(fù)載中檢測是否存在Nop Sled來判斷數(shù)據(jù)包是否為多態(tài)蠕蟲數(shù)據(jù)包。而且在檢測過程中,充分考慮了 Nop Sled本 身可能用于繞過檢測機(jī)制而采用的各種變形形式,并在此基礎(chǔ)之上分析出Nop Sled的本質(zhì) 特征來進(jìn)行檢測,即由于Nop Sled最終的功能是將控制流轉(zhuǎn)向Siellcode,因而Nop Sled 部分不管如何變形,都可以被反匯編為有效的指令串。即使是利用棧對(duì)齊特性的Nop Sled, 從每個(gè)模4等于0的位置開始的字節(jié)串也均可以被反匯編為有效的指令串。因而本發(fā)明中 提出的檢測方法可以有效的應(yīng)對(duì)多態(tài)蠕蟲的各種高級(jí)變形機(jī)制。
圖1是多態(tài)蠕蟲結(jié)構(gòu)圖;圖2是本發(fā)明的系統(tǒng)構(gòu)架圖;圖3是本發(fā)明的系統(tǒng)流程圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述如圖2所示,本發(fā)明實(shí)現(xiàn)的系統(tǒng)由如下幾個(gè)裝置實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲裝置本裝置用于捕獲網(wǎng)絡(luò)中的數(shù)據(jù)包。可以將本裝置放置于局 域網(wǎng)的進(jìn)出口等關(guān)鍵位置,以便捕獲進(jìn)出整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)包。這樣,需部署的檢測點(diǎn)相對(duì)較 少,系統(tǒng)運(yùn)行開銷相對(duì)較低。數(shù)據(jù)包的捕獲可通過兩種方式實(shí)現(xiàn),S卩,可將本檢測系統(tǒng)串聯(lián)在網(wǎng)絡(luò)中,這樣,所 有進(jìn)出該內(nèi)部網(wǎng)絡(luò)的數(shù)據(jù)包必然本檢測系統(tǒng),該種方法需要系統(tǒng)具有非常高的處理性能和 檢測精度,通常需要專門的硬件來并行處理,加快處理速度;當(dāng)然,也可通過將本系統(tǒng)并聯(lián)在網(wǎng)絡(luò)中,并將網(wǎng)卡設(shè)置為混雜模式實(shí)現(xiàn)。由于硬件條件限制,本系統(tǒng)中采用了第二種實(shí)現(xiàn) 方式。協(xié)議分析裝置本裝置對(duì)數(shù)據(jù)包捕獲裝置中捕獲到的數(shù)據(jù)包按照相應(yīng)的協(xié)議進(jìn)行 分析并提取出數(shù)據(jù)包中的負(fù)載。TCP/IP協(xié)議模型共有四層網(wǎng)際層,網(wǎng)絡(luò)層,傳輸層和應(yīng)用 層。各層中不同的協(xié)議具有各自不同的標(biāo)準(zhǔn)格式。協(xié)議分析裝置中將利用各種協(xié)議的層次 和標(biāo)準(zhǔn)對(duì)數(shù)據(jù)包負(fù)載進(jìn)行解碼、重組和命令解析等處理。其中,解碼主要是判斷數(shù)據(jù)包是 否符合規(guī)定的協(xié)議標(biāo)準(zhǔn),重組則主要是在解碼的基礎(chǔ)上對(duì)TCP會(huì)話狀態(tài)進(jìn)行跟蹤分析并重 組,同時(shí)對(duì)IP碎片進(jìn)行重組。命令解析則主要是針對(duì)各種高層協(xié)議,將所有的各種可能的 表示進(jìn)行規(guī)范化處理。開源的入侵檢測系統(tǒng)Snort中以預(yù)處理插件的形式實(shí)現(xiàn)了這幾種處 理流程。數(shù)據(jù)包過濾裝置數(shù)據(jù)包過濾裝置主要是針對(duì)經(jīng)過協(xié)議分析裝置處理后的含有負(fù) 載的數(shù)據(jù)包而言的,該裝置將利用已知的特征碼匹配過濾可能含有某種已知的惡意代碼的 數(shù)據(jù)包,提高整個(gè)系統(tǒng)的處理速度。模式匹配算法可以使用高效的AC算法實(shí)現(xiàn)。除此之外,數(shù)據(jù)包過濾裝置還將根據(jù)一定的算法對(duì)明顯不是多態(tài)蠕蟲的數(shù)據(jù)包進(jìn) 行過濾處理,以提高系統(tǒng)的處理速度。一般而言,蠕蟲主要通過尋找網(wǎng)絡(luò)中有漏洞的主機(jī), 針對(duì)該漏洞發(fā)起攻擊并復(fù)制自身到受害主機(jī)。蠕蟲要成功的實(shí)現(xiàn)攻擊,其數(shù)據(jù)包關(guān)鍵代碼 (如Nop Sled, shellcode,返回地址等)中不能包含空字符,否則,在執(zhí)行字符串拷貝時(shí), 該處將被截?cái)?,蠕蟲也就不可能正常工作。而多態(tài)蠕蟲的關(guān)鍵代碼一般而言長度是超過200 個(gè)字節(jié)的,可以選擇一個(gè)相對(duì)保守的值,在數(shù)據(jù)包中兩個(gè)連續(xù)空字符之間長度小于該值時(shí), 該部分肯定不為蠕蟲的關(guān)鍵代碼。由于正常情況下的數(shù)據(jù)包很多都不滿足該條件,從而可 極大地減少待處理的數(shù)據(jù)包,提高處理效率。靜態(tài)反匯編裝置靜態(tài)反匯編裝置主要是對(duì)經(jīng)過協(xié)議分析裝置和數(shù)據(jù)包過濾裝置 處理后的數(shù)據(jù)包的負(fù)載進(jìn)行反匯編處理,將二進(jìn)制字節(jié)反匯編為指令。靜態(tài)反匯編算法可 采用遞歸遍歷的反匯編方式,以防止將數(shù)據(jù)包負(fù)載中的數(shù)據(jù)也反匯編為指令。多態(tài)蠕蟲檢測裝置多態(tài)蠕蟲檢測裝置用于檢測數(shù)據(jù)包是否為多態(tài)蠕蟲數(shù)據(jù)包。 其檢測思想為通過檢測數(shù)據(jù)包中是否含有Nop Sled來判斷數(shù)據(jù)包是否為蠕蟲數(shù)據(jù)包。如 上所述,由于Nop Sled本身可能采取多種變形形式,比如說通過使用其它的單字節(jié)指令, 或者是使用能夠完成同樣功能的多字節(jié)指令,或者采用跳轉(zhuǎn)指令來代替Nop指令完成同樣 的功能等等,因而此處不再采用模式匹配或是正規(guī)表達(dá)式的匹配方式,而是采用抽象執(zhí)行 的方式來檢測Nop Sled。比如要檢測一段長度為η的字節(jié)串是否為Nop Sled,其檢測過 程的基本思想為如果該字節(jié)串從每個(gè)位置開始反匯編后的指令串都是有效的,那么認(rèn)為 該字節(jié)串為Nop Sled。其中,有效的指令串包含如下兩種情況1)指令串中每條指令有正確的操作碼和操作數(shù);如果指令有訪問內(nèi)存地址,那 么相應(yīng)的內(nèi)存地址可以被訪問;且指令中不包含任何特權(quán)指令;2)指令串中遇到j(luò)mp等跳轉(zhuǎn)指令。但考慮到采用了棧對(duì)齊技術(shù)的Nop Sled,該類Nop Sled并非從每個(gè)位置開始都可 以執(zhí)行到Siellcode,而是按4字節(jié)對(duì)齊的位置處開始才可以執(zhí)行到Siellcode。因而,在 檢測時(shí),我們將通過檢測所有可能的4字節(jié)對(duì)齊的位置處開始反匯編后的指令串是否為可 執(zhí)行的有效指令串,來判斷字節(jié)串是否為NopSled,而不需要檢測每個(gè)位置處開始的反匯編指令串是否均可以執(zhí)行。其具體檢測過程如下1)給定一個(gè)可疑數(shù)據(jù)包負(fù)載中長度為η的字節(jié)串I1I2I3. . . In,由于我們實(shí)際上并 不知道該字節(jié)串在拷貝到受害主機(jī)后,哪些字節(jié)在4字節(jié)對(duì)齊的位置上,也就是說,我們不 能知道哪些字節(jié)在內(nèi)存中的地址模4等于0,但實(shí)際上,可能的情況只有4種,I1的在內(nèi)存 中地址模4等于0,I2在內(nèi)存中地址模4等于0,I3在內(nèi)存中地址模4等于0,或者I4在內(nèi) 存中地址模4等于0,對(duì)每種可能的情況,我們均進(jìn)行一次檢測過程。2)首先假設(shè)IiG = 1,2,3,4)的在內(nèi)存中地址模4等于0,那么我們從第i個(gè)字 節(jié)開始進(jìn)行反匯編,直至n-i個(gè)字節(jié)均反匯編完成,如果反匯編后的指令均為有效指令,或 者遇到j(luò)mp等跳轉(zhuǎn)指令,則認(rèn)為該位置開始的指令串是可以執(zhí)行的,然后從i+4的位置開始 重復(fù)步驟2進(jìn)行判斷,直至該位置大于η。如果該過程中得到的所有指令串均是可以執(zhí)行 的,那么我們認(rèn)為該字節(jié)串為Nop Sled。相反的,如果該過程中,我們檢測到某個(gè)位置開始 反匯編的指令串存在內(nèi)存訪問錯(cuò)誤,或者特權(quán)指令等錯(cuò)誤,那么我們認(rèn)為Ii在內(nèi)存中的地 址模4是不等于0的。如果我們檢測到所有的Ii (i = 1,2,3,4)的在內(nèi)存中地址模4均不 等于0,那么此時(shí),我們認(rèn)為,該字節(jié)串并不是Nop Sled。響應(yīng)裝置本裝置負(fù)責(zé)在網(wǎng)絡(luò)中檢測到蠕蟲時(shí)進(jìn)行響應(yīng)。在檢測到蠕蟲數(shù)據(jù)包時(shí), 本裝置將提取出數(shù)據(jù)包中的源IP地址、源端口號(hào),目的IP地址信息,并聯(lián)合防火墻對(duì)源IP 地址主機(jī)發(fā)出的該端口號(hào)的數(shù)據(jù)包進(jìn)行阻斷和報(bào)警,同時(shí)也將在防火墻中設(shè)置過濾規(guī)則, 如果目的IP地址主機(jī)發(fā)出的該端口號(hào)的數(shù)據(jù)包也將進(jìn)行阻斷和報(bào)警處理。如附圖3所示,本發(fā)明主要按以下步驟進(jìn)行1)利用數(shù)據(jù)包捕獲裝置捕獲網(wǎng)絡(luò)中的數(shù)據(jù)包。2)對(duì)步驟1中捕獲到的每一個(gè)數(shù)據(jù)包,利用協(xié)議分析裝置對(duì)捕獲到的數(shù)據(jù)包進(jìn) 行分析和處理,并提取出經(jīng)過處理后的數(shù)據(jù)包負(fù)載。該步驟主要是判斷捕獲到的數(shù)據(jù)包是 否符合協(xié)議標(biāo)準(zhǔn)、對(duì)TCP會(huì)話狀態(tài)進(jìn)行跟蹤分析和流重組、對(duì)分片的IP數(shù)據(jù)包進(jìn)行重組,以 及利用命令解析功能對(duì)數(shù)據(jù)包負(fù)載進(jìn)行規(guī)范化處理。3)利用數(shù)據(jù)包過濾裝置對(duì)經(jīng)過步驟2處理后的含有負(fù)載的數(shù)據(jù)包進(jìn)行過濾處 理。首先來說,如果數(shù)據(jù)包負(fù)載本身能夠和已知的某種惡意代碼的特征碼相匹配,那么我們 將直接對(duì)其進(jìn)行阻斷和報(bào)警處理。其次,利用多態(tài)蠕蟲數(shù)據(jù)包關(guān)鍵代碼中不能含有空字符 的原理,在數(shù)據(jù)包負(fù)載中運(yùn)用模式匹配算法查找兩個(gè)空字符之間的距離,如果該距離小于 給定的閾值,那么我們認(rèn)為該處不可能為蠕蟲的關(guān)鍵代碼,從而無須繼續(xù)對(duì)該處進(jìn)行判斷。 相反,對(duì)數(shù)據(jù)包負(fù)載中每個(gè)距離大于給定的閾值的字節(jié)串,我們均需要進(jìn)行步驟4的處理。4)該步驟將判斷步驟3中處理得到的數(shù)據(jù)包負(fù)載中的一段字節(jié)串I1I2I3. . . Iffl(m >n)是否含有Nop Sled,從而進(jìn)一步判斷該數(shù)據(jù)包是否為蠕蟲數(shù)據(jù)包。對(duì)該字節(jié)串中的每 個(gè)位置開始的長度為η的子串,我們將按多態(tài)蠕蟲檢測裝置中給出的檢測步驟判斷該處是 否為Nop Sled。如果該處為Nop Sled,那么轉(zhuǎn)到步驟5,對(duì)檢測到的多態(tài)蠕蟲數(shù)據(jù)包進(jìn)行響 應(yīng)處理。5)該步驟對(duì)本系統(tǒng)檢測到的多態(tài)蠕蟲數(shù)據(jù)包進(jìn)行響應(yīng)。該步驟主要通過在防火 墻添加響應(yīng)的過濾規(guī)則實(shí)現(xiàn)。在檢測到蠕蟲數(shù)據(jù)包時(shí),本裝置將提取出數(shù)據(jù)包中的源IP地 址、源端口號(hào),目的IP地址信息,并在防火墻中添加規(guī)則過濾源IP地址主機(jī)發(fā)出的該源端 口號(hào)的數(shù)據(jù)包,同時(shí)也過濾目的IP地址主機(jī)發(fā)出的該端口的數(shù)據(jù)包。
8
本發(fā)明的技術(shù)關(guān)鍵點(diǎn)和欲保護(hù)點(diǎn)①本發(fā)明中提出的多態(tài)蠕蟲的Nop Sled部分的本質(zhì)特征,即,不管該部分如何 變形,都可以被反匯編為有效的指令串。即使是利用棧對(duì)齊特性的Nop Sled,從每個(gè)模4等 于0的位置開始的字節(jié)串也均可以被反匯編為有效的指令串。②判斷數(shù)據(jù)包負(fù)載中某個(gè)子字節(jié)串I1I2I3. . . ln,是否為Nop Sled的方法和步驟。 即1)給定一個(gè)可疑數(shù)據(jù)包負(fù)載中長度為η的字節(jié)串I1I2I3. . . In,由于我們實(shí)際上并 不知道該字節(jié)串在拷貝到受害主機(jī)后,哪些字節(jié)在4字節(jié)對(duì)齊的位置上,也就是說,我們不 能知道哪些字節(jié)在內(nèi)存中的地址模4等于0,但實(shí)際上,可能的情況只有4種,I1的在內(nèi)存 中地址模4等于0,I2在內(nèi)存中地址模4等于0,I3在內(nèi)存中地址模4等于0,或者I4在內(nèi) 存中地址模4等于0,對(duì)每種可能的情況,我們均進(jìn)行一次檢測過程。2)首先假設(shè)IiG = 1,2,3,4)的在內(nèi)存中地址模4等于0,那么我們從第i個(gè)字 節(jié)開始進(jìn)行反匯編,直至n-i個(gè)字節(jié)均反匯編完成,如果反匯編后的指令均為有效指令,或 者遇到j(luò)mp等跳轉(zhuǎn)指令,則認(rèn)為該位置開始的指令串是可以執(zhí)行的,然后從i+4的位置開始 重復(fù)步驟2進(jìn)行判斷,直至該位置大于η。如果該過程中得到的所有指令串均是可以執(zhí)行 的,那么我們認(rèn)為該字節(jié)串為Nop Sled。相反的,如果該過程中,我們檢測到某個(gè)位置開始 反匯編的指令串存在內(nèi)存訪問錯(cuò)誤,或者特權(quán)指令等錯(cuò)誤,那么我們認(rèn)為Ii在內(nèi)存中的地 址模4是不等于0的。如果我們檢測到所有的Ii (i = 1,2,3,4)的在內(nèi)存中地址模4均不 等于0,那么此時(shí),我們認(rèn)為,該字節(jié)串并不是Nop Sled。③本發(fā)明中提出的提高系統(tǒng)檢測速度的優(yōu)化措施,即利用多態(tài)蠕蟲數(shù)據(jù)包中 關(guān)鍵代碼不能含有空字符的特性,從而在數(shù)據(jù)包負(fù)載中運(yùn)用模式匹配算法查找兩個(gè)空字符 之間的距離,如果該距離小于給定的閾值,則認(rèn)為該處不可能為蠕蟲的關(guān)鍵代碼,從而無須 繼續(xù)對(duì)該處進(jìn)行深入判斷的思想。
權(quán)利要求
1.一種多態(tài)蠕蟲自檢測方法,包括以下步驟①捕獲整個(gè)進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包;②對(duì)所捕獲的數(shù)據(jù)包按照響應(yīng)的協(xié)議進(jìn)行分析并提數(shù)據(jù)包中的負(fù)載,然后利用各種協(xié) 議的層次和標(biāo)準(zhǔn)對(duì)數(shù)據(jù)包負(fù)載進(jìn)行解碼、重組和命令解析處理;③對(duì)步驟②處理后的含有負(fù)載的數(shù)據(jù)包進(jìn)行過濾處理a、如果數(shù)據(jù)包負(fù)載本身能夠和 已知的某種惡意代碼的特征碼相匹配,直接對(duì)其進(jìn)行阻斷和報(bào)警處理;b、利用多態(tài)蠕蟲數(shù) 據(jù)包關(guān)鍵代碼中不能含有空字符的原理,在數(shù)據(jù)包負(fù)載中運(yùn)用模式匹配算法查找兩個(gè)空字 符之間的距離,如果該距離小于給定的閾值,該處不可能為蠕蟲的關(guān)鍵代碼,從而無須繼續(xù) 對(duì)該處進(jìn)行判斷,對(duì)數(shù)據(jù)包負(fù)載中每個(gè)距離大于給定的閾值的字節(jié)串,進(jìn)入步驟④處理;④判斷步驟③中處理得到的數(shù)據(jù)包中是否含有NopSled來判斷數(shù)據(jù)包是否為蠕蟲數(shù) 據(jù)包對(duì)應(yīng)一段長度為η的字節(jié)串,從每個(gè)位置開始反匯編后的指令串都是有效的,則認(rèn)為 含有Nop Sled,判斷該該數(shù)據(jù)包為蠕蟲數(shù)據(jù)包;⑤對(duì)檢測到的蠕蟲數(shù)據(jù)包進(jìn)行響應(yīng)提取出數(shù)據(jù)包中的源IP地址、源端口號(hào),目的IP 地址信息,并在防火墻中添加規(guī)則過濾源IP地址主機(jī)發(fā)出的該源端口號(hào)的數(shù)據(jù)包,同時(shí)也 過濾目的IP地址主機(jī)發(fā)出的該端口的數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的多態(tài)蠕蟲自檢測方法,其特征在于,步驟④中有效的指令 串包括如下兩種情況a、指令串中每條指令有正確的操作碼和操作數(shù),如果指令有訪問內(nèi) 存地址,那么相應(yīng)的內(nèi)存地址可以被訪問且指令中不包含任何特權(quán)指令;b、指令串中遇到 jmp等跳轉(zhuǎn)指令。
3.根據(jù)權(quán)利要求1所述的多態(tài)蠕蟲自檢測方法,其特征在于,步驟④中判斷是否含有 Nop Sled的具體過程如下a、給定一個(gè)可疑數(shù)據(jù)包負(fù)載中長度為η的字節(jié)串I1I2I3.. . In,由于不知道該字節(jié)串在 拷貝到受害主機(jī)后,哪些字節(jié)在4字節(jié)對(duì)齊的位置上,不能知道哪些字節(jié)在內(nèi)存中的地址 模4等于0,需要均進(jìn)行一次檢測;b、首先假設(shè)Ii的在內(nèi)存中地址模4等于0,,i= 1、2、3、4,從第i個(gè)字節(jié)開始進(jìn)行反 匯編,直至n-i個(gè)字節(jié)均反匯編完成,如果反匯編后的指令均為有效指令,或者遇到j(luò)mp等 跳轉(zhuǎn)指令,則認(rèn)為該位置開始的指令串是可以執(zhí)行的,然后從i+4的位置開始重復(fù)步驟2進(jìn) 行判斷,直至該位置大于η;如果該過程中得到的所有指令串均是可以執(zhí)行的,該字節(jié)串為 Nop Sled ;如果該過程中,檢測到某個(gè)位置開始反匯編的指令串存在內(nèi)存訪問錯(cuò)誤,或者特 權(quán)指令錯(cuò)誤,則Ii在內(nèi)存中的地址模4是不等于0的,如果檢測到所有的Ii的在內(nèi)存中地 址模4均不等于0,該字節(jié)串并不是Nop Sled。
全文摘要
本發(fā)明公開了一種多態(tài)蠕蟲自檢測方法,包括以下步驟①捕獲整個(gè)進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包;②對(duì)所捕獲的數(shù)據(jù)包按照響應(yīng)的協(xié)議進(jìn)行分析并提數(shù)據(jù)包中的負(fù)載,然后利用各種協(xié)議的層次和標(biāo)準(zhǔn)對(duì)數(shù)據(jù)包負(fù)載進(jìn)行解碼、重組和命令解析處理;③對(duì)步驟②處理后的含有負(fù)載的數(shù)據(jù)包進(jìn)行過濾處理;④判斷步驟③中處理得到的數(shù)據(jù)包中是否含有Nop Sled來判斷數(shù)據(jù)包是否為蠕蟲數(shù)據(jù)包對(duì)應(yīng)一段長度為n的字節(jié)串,從每個(gè)位置開始反匯編后的指令串都是有效的,則認(rèn)為含有Nop Sled,判斷該該數(shù)據(jù)包為蠕蟲數(shù)據(jù)包;⑤對(duì)檢測到的蠕蟲數(shù)據(jù)包進(jìn)行響應(yīng)。
文檔編號(hào)H04L29/06GK102111308SQ201010600168
公開日2011年6月29日 申請(qǐng)日期2010年12月22日 優(yōu)先權(quán)日2010年12月22日
發(fā)明者劉飛, 張小松, 鮑厚兵, 黃勇 申請(qǐng)人:成都天融信網(wǎng)絡(luò)安全技術(shù)有限公司