專利名稱:惡意代碼檢測方法及網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種惡意代碼檢測方法及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,各種基于網(wǎng)絡(luò)的應(yīng)用層出不窮。面對(duì)日益突出的網(wǎng)絡(luò)安全問題,僅靠傳統(tǒng)被動(dòng)的防御已經(jīng)不能滿足要求,于是能夠主動(dòng)檢測并防御的入侵檢測系統(tǒng)應(yīng)運(yùn)而生。在互聯(lián)網(wǎng)領(lǐng)域,各種入侵檢測技術(shù),例如網(wǎng)絡(luò)漏洞掃描、網(wǎng)頁木馬掃描、網(wǎng)頁分類及數(shù)據(jù)挖掘技術(shù)等均是使用特征庫匹配的方法來進(jìn)行入侵檢測和防御的。特征匹配是當(dāng)前安全廠商檢測惡意代碼的一種通用方法。當(dāng)已知一種惡意代碼時(shí),從該惡意代碼中提取出一條到N條特征串,由這些特征串組成一條規(guī)則,用這條規(guī)則代表該類型的惡意代碼。其中,多模特征匹配算法是一種在對(duì)被檢測數(shù)據(jù)塊的一次遍歷過程中進(jìn)行多種特征匹配的算法,該算法具有較高的匹配速度,因此得到較為廣泛的使用,尤其是AC自動(dòng)機(jī)匹配算法。AC自動(dòng)機(jī)匹配算法包括構(gòu)造一棵Trie樹、構(gòu)造失敗指針和模式匹配三個(gè)步驟。在AC自動(dòng)機(jī)匹配算法中,構(gòu)建Trie樹的過程較慢,且所需內(nèi)存較大,因此,隨著網(wǎng)絡(luò)資源越來越豐富,檢測惡意代碼用的特征庫越來越龐大,即使是使用AC自動(dòng)機(jī)匹配算法的特征匹配的速度也會(huì)越來越低,因此,現(xiàn)有特征匹配算法越來越無法滿足惡意代碼檢測過程對(duì)特征匹配速度的需求。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種惡意代碼檢測方法及網(wǎng)絡(luò)設(shè)備,用以提高惡意代碼檢測過程中的特征匹配速度,提高惡意代碼檢測的速度。本發(fā)明實(shí)施例提供一種惡意代碼檢測方法,包括獲取被檢測數(shù)據(jù)塊;按照預(yù)設(shè)劃分策略將所述被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)所述數(shù)據(jù)片段的索引,將所述數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配,其中,所述規(guī)則庫是預(yù)先生成的;當(dāng)所述數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;當(dāng)所有字符匹配均成功時(shí),判定所述被檢測數(shù)據(jù)塊為惡意代碼。本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備,包括數(shù)據(jù)塊獲取模塊,用于獲取被檢測數(shù)據(jù)塊;索引獲取模塊,用于按照預(yù)設(shè)劃分策略將所述被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,并獲取每個(gè)所述數(shù)據(jù)片段的索引;索引匹配模塊,用于將所述數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配,其中,所述規(guī)則庫是預(yù)先生成的;字符匹配模塊,用于在所述數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;第一判定模塊,用于在所有字符匹配均成功時(shí),判定所述被檢測數(shù)據(jù)塊為惡意代碼。本發(fā)明實(shí)施例的惡意代碼檢測方法及網(wǎng)絡(luò)設(shè)備,在獲取被檢測數(shù)據(jù)塊后,根據(jù)預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)數(shù)據(jù)片段的索引,首先將數(shù)據(jù)片段的索引和預(yù)先生成的規(guī)則庫中所有規(guī)則的特征串的基數(shù)相匹配,只有在數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),再將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配,當(dāng)所有字符匹配均成功時(shí),判定被檢測數(shù)據(jù)塊為惡意代碼。其中,數(shù)據(jù)片段的索引和特征串的基數(shù)的數(shù)據(jù)量要遠(yuǎn)小于數(shù)據(jù)片段或特征串,因此,本發(fā)明實(shí)施例可以顯著提高特征匹配的速度,進(jìn)而提高惡意代碼檢測的速度。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明一實(shí)施例提供的惡意代碼檢測方法的流程圖;圖2A為本發(fā)明又一實(shí)施例提供的惡意代碼檢測方法的流程圖;圖2B為本發(fā)明又一實(shí)施例提供的步驟201的實(shí)施方式的流程圖;圖2C為本發(fā)明又一實(shí)施例提供的生成規(guī)則庫中所有規(guī)則的特征串的基數(shù)的實(shí)施方式的流程圖;圖2D為本發(fā)明又一實(shí)施例提供的步驟203的實(shí)施方式的流程圖;圖3為本發(fā)明一實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖;圖4為本發(fā)明又一實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明一實(shí)施例提供的惡意代碼檢測方法的流程圖。如圖1所示,本實(shí)施的方法包括步驟101、獲取被檢測數(shù)據(jù)塊。在本實(shí)施例中,網(wǎng)絡(luò)設(shè)備下載互聯(lián)網(wǎng)上的數(shù)據(jù)塊并對(duì)下載的數(shù)據(jù)塊進(jìn)行檢測,則該數(shù)據(jù)塊即為被檢測數(shù)據(jù)塊。被檢測數(shù)據(jù)塊可以包括Web頁面和二進(jìn)制代碼等。本實(shí)施例中的網(wǎng)絡(luò)設(shè)備可以是服務(wù)器、個(gè)人計(jì)算機(jī)等任何可以從互聯(lián)網(wǎng)上下載數(shù)據(jù)的設(shè)備。步驟102、按照預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)數(shù)據(jù)片段的索引,將數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配,并判斷匹配結(jié)果是
5否為數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中,如果判斷結(jié)果為是,執(zhí)行步驟103 ;如果判斷結(jié)果為否,執(zhí)行步驟105。其中,規(guī)則通常是根據(jù)已知的惡意代碼預(yù)先生成并存放在規(guī)則庫中的,即規(guī)則庫中存放著根據(jù)已知的惡意代碼生成的若干條規(guī)則。每條規(guī)則包括多個(gè)從惡意代碼中提取出的特征串,每條規(guī)則代表一種惡意代碼。在特征匹配過程中,如果一條規(guī)則中的全部特征串均被被檢測數(shù)據(jù)塊匹配中,也就是說規(guī)則中全部的特征串均能在被檢測數(shù)據(jù)塊中被發(fā)現(xiàn), 則稱該條規(guī)則被被檢測數(shù)據(jù)塊匹配中,也就意味著該被檢測數(shù)據(jù)塊屬于該條規(guī)則代表的惡意代碼。其中,可以根據(jù)所獲取的特征串的部分字符生成特征串的基數(shù);特征串的基數(shù)是特征串的特征描述,即特征串的基數(shù)在一定程度上可以表征特征串。獲取特征串的基數(shù)可以通過對(duì)特征串中的部分字符計(jì)算獲得,計(jì)算方式有多種, 只要該計(jì)算方式計(jì)算特征串基數(shù)的運(yùn)算成本小于通過對(duì)整個(gè)特征串的字符計(jì)算基數(shù)的運(yùn)算成本就可以,以提高運(yùn)算效率;其中,計(jì)算方式可以是取特征串的前η個(gè)字節(jié)計(jì)算md5摘要值,將md5摘要值求和得到特征串的技術(shù),獲取特征串基數(shù)的方式還可以通過獲取特征串前η個(gè)字節(jié)基數(shù)shal 摘要值,將shal摘要值求和的方式獲得;本發(fā)明實(shí)施例通過對(duì)特征串中的部分字符進(jìn)行哈希(HASH)運(yùn)算生成的;其中部分字符是根據(jù)預(yù)設(shè)獲取策略獲取的,預(yù)設(shè)獲取策略規(guī)定了如何從特征串中獲取部分字符,例如可以規(guī)定獲取特征串的前m個(gè)字符作為部分字符,也可以規(guī)定從特征串第2個(gè)字符開始獲取m個(gè)字符作為部分字符等等,m是大于等于1的整數(shù)。 例如對(duì)于長度為L個(gè)字節(jié)的特征串,可以取其前K個(gè)字節(jié)并進(jìn)行HASH計(jì)算,HASH運(yùn)算的結(jié)果即為該特征串的基數(shù),其中K < L。對(duì)于一條規(guī)則,按照相同的預(yù)設(shè)獲取策略,獲取該規(guī)則中每個(gè)特征串的部分字符; 然后對(duì)每個(gè)特征串的部分字符進(jìn)行HASH運(yùn)算,就生成了該規(guī)則中所有特征串的基數(shù)。在本實(shí)施例中,每條規(guī)則中所有特征串的基數(shù)都是預(yù)先生成并存儲(chǔ)起來的。其中,存儲(chǔ)特征串的基數(shù)的方式不做限定,優(yōu)選的可以采用HASH桶來存儲(chǔ)。由上述生成基數(shù)的過程可見,特征串的基數(shù)的長度要遠(yuǎn)遠(yuǎn)小于特征串的長度,故通過表征特征串的基數(shù)進(jìn)行特征匹配時(shí)的數(shù)據(jù)量將明顯小于直接以特征串進(jìn)行特征匹配時(shí)的數(shù)據(jù)量。通常,被檢測數(shù)據(jù)塊的數(shù)量很大,直接以被檢測數(shù)據(jù)塊進(jìn)行特征匹配時(shí)的數(shù)據(jù)量也很大,為了提高匹配速度,本實(shí)施例的網(wǎng)絡(luò)設(shè)備在獲取到被檢測數(shù)據(jù)塊之后,根據(jù)預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為多個(gè)數(shù)據(jù)片段,并獲取每個(gè)數(shù)據(jù)片段的索引,根據(jù)數(shù)據(jù)片段的索引和預(yù)先生成的規(guī)則庫中所有規(guī)則的特征串的基數(shù)進(jìn)行匹配,可以降低特征匹配時(shí)的數(shù)據(jù)量,提高匹配速度。其中,對(duì)被檢測數(shù)據(jù)塊進(jìn)行分塊可根據(jù)實(shí)際情況來設(shè)定劃分策略, 例如,設(shè)定數(shù)據(jù)片段長度可以是特征庫中最大長度特征串的長度,或者,數(shù)據(jù)片段長度也可以是從當(dāng)前數(shù)據(jù)偏移到整個(gè)數(shù)據(jù)塊結(jié)尾的長度,數(shù)據(jù)塊的長度等于或大于規(guī)則庫中特征串的長度就可以。本實(shí)施例中,采用的劃分策略為數(shù)據(jù)片段與特征串具有相同長度,即特征串包括多少字符,數(shù)據(jù)片段也包括多少個(gè)字符。而數(shù)據(jù)片段的索引是數(shù)據(jù)片段的特征描述,在一定程度上可以表征數(shù)據(jù)片段。為了與特征串的基數(shù)相適應(yīng),數(shù)據(jù)片段的索引可以是對(duì)數(shù)據(jù)片段中的部分字符串進(jìn)行HASH運(yùn)算生成的,其中數(shù)據(jù)片段中的部分字符也是根據(jù)預(yù)設(shè)獲取策略獲取的,且該預(yù)設(shè)獲取策略與獲取特征串中的部分字符的預(yù)設(shè)獲取策略相同;獲取數(shù)據(jù)片段索引的方式還可以是通過數(shù)據(jù)片段的基數(shù)和數(shù)據(jù)HASH桶的大小取模,例如,令D = 數(shù)據(jù)HASH桶的大小(size of (數(shù)據(jù)HSAH桶)),B (η)表示偏移為η的數(shù)據(jù)片段的基數(shù)值, 那么定位該數(shù)據(jù)片段在數(shù)據(jù)HASH桶中的索引I (n) =B(n)%D0其中,對(duì)于不同規(guī)則而言,將數(shù)據(jù)片段的索引和該規(guī)則的特征串的基數(shù)進(jìn)行匹配的過程相同,故在本實(shí)施例中以一條規(guī)則為例進(jìn)行說明。網(wǎng)絡(luò)設(shè)備將一條規(guī)則中每個(gè)特征串的基數(shù)與所有數(shù)據(jù)片段的索引逐一進(jìn)行匹配;當(dāng)一個(gè)特征串的基數(shù)與至少一個(gè)數(shù)據(jù)片段的索引相同時(shí),確定特征串的基數(shù)匹配中數(shù)據(jù)片段的索引;當(dāng)一個(gè)特征串的基數(shù)與所有數(shù)據(jù)片段的索引均不相同時(shí),確定特征串的基數(shù)未匹配中數(shù)據(jù)片段的索引。其中,如果一條規(guī)則中所有特征串的基數(shù)都匹配中數(shù)據(jù)片段的索引,在一定程度上意味著該條規(guī)則的所有特征串可能會(huì)被由被檢測數(shù)據(jù)塊劃分出的數(shù)據(jù)片段匹配中,也就是說該規(guī)則中所有特征串均可能與某個(gè)數(shù)據(jù)片段相同,故需要做進(jìn)一步的特征匹配,即執(zhí)行步驟103。如果一條規(guī)則的特征串的基數(shù)中存在未匹配中數(shù)據(jù)片段的索引的基數(shù)時(shí),表明該未匹配中數(shù)據(jù)片段的索引的基數(shù)對(duì)應(yīng)的特征串不會(huì)被任何數(shù)據(jù)片段匹配中,也就是說該特征串不會(huì)存在于被檢測數(shù)據(jù)塊中,故可以直接判定該被檢測數(shù)據(jù)塊不會(huì)匹配中該條規(guī)則,也就可以判定該被檢測數(shù)據(jù)塊為非惡意代碼。與現(xiàn)有技術(shù)中直接以被檢測數(shù)據(jù)塊和特征串進(jìn)行匹配的方案相比,本實(shí)施例可以極大的提高匹配速度。步驟103、當(dāng)數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的特征串的基數(shù)均匹配中時(shí), 將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配,并判斷匹配結(jié)果是否為所有字符匹配均成功,如果判斷結(jié)果為是,執(zhí)行步驟104 ;如果判斷結(jié)果為否,執(zhí)行步驟105。當(dāng)一條規(guī)則中所有特征串的基數(shù)均匹配中數(shù)據(jù)片段的索引時(shí),說明該條規(guī)則可能會(huì)被被檢測數(shù)據(jù)塊匹配中,故需要將匹配中每個(gè)特征串的基數(shù)的數(shù)據(jù)片段的索引(即被匹配中的索引)對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符比較,也就是判斷被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段是否與被匹配中的基數(shù)對(duì)應(yīng)的特征串所有字符均相同。如果兩者所有字符均相同,確定被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的字符匹配成功;如果兩者所有字符不是全部相同,確定被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的字符匹配不成功。如果每個(gè)被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與相應(yīng)被匹配中的基數(shù)對(duì)應(yīng)的特征串的字符匹配均成功,表明該被檢測數(shù)據(jù)塊中包括有該條規(guī)則中的所有特征串,故該被檢測數(shù)據(jù)塊匹配中該條規(guī)則;如果所有字符匹配中存在匹配不成功的字符匹配時(shí),判定該被檢測數(shù)據(jù)塊未匹配中該條規(guī)則。步驟104、判定被檢測數(shù)據(jù)塊為惡意代碼,并結(jié)束操作。即當(dāng)所有字符匹配均成功時(shí),判定被檢測數(shù)據(jù)塊為惡意代碼。步驟105、判定被檢測數(shù)據(jù)塊為非惡意代碼,并結(jié)束操作。即當(dāng)數(shù)據(jù)片段的索引與規(guī)則庫中任一條規(guī)則的特征串的基數(shù)均未匹配中時(shí),或者當(dāng)所有字符匹配中存在匹配不成功的字符匹配時(shí),直接判定被檢測數(shù)據(jù)塊為非惡意代碼。本實(shí)施例的惡意代碼檢測方法,通過預(yù)先生成規(guī)則庫中所有規(guī)則的特征串的基數(shù),在獲取到被檢測數(shù)據(jù)塊后對(duì)被檢測數(shù)據(jù)塊進(jìn)行分塊,獲取每個(gè)數(shù)據(jù)片段的索引,首先將數(shù)據(jù)片段的索引與特征串的基數(shù)進(jìn)行匹配,其中索引與基數(shù)遠(yuǎn)小于數(shù)據(jù)片段或特征串,極大的降低了特征匹配時(shí)的數(shù)據(jù)量,只有在數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則中所有特征串的基數(shù)均匹配中后才進(jìn)行數(shù)據(jù)片段與特征串的字符匹配,極大的提高了特征匹配的速度,進(jìn)而提高了整個(gè)惡意代碼檢測過程的速度,滿足惡意代碼檢測對(duì)檢測速度的要求。圖2A為本發(fā)明另一實(shí)施例提供的惡意代碼檢測方法的流程圖。如圖2A所示,本實(shí)施例的方法包括步驟200、獲取被檢測數(shù)據(jù)塊。步驟201、根據(jù)預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,并獲取每個(gè)數(shù)據(jù)片段的索引。其中,預(yù)設(shè)劃分策略可根據(jù)實(shí)際情況而定。在本實(shí)施例中,具體通過對(duì)被檢測數(shù)據(jù)塊逐位進(jìn)行偏移,將每次偏移的位置作為數(shù)據(jù)片段起點(diǎn),獲取與特征串具有相同長度的數(shù)據(jù)片段,進(jìn)而獲取數(shù)據(jù)片段的索引。如圖2B所示,該實(shí)施方式包括以下步驟步驟2011、將被檢測數(shù)據(jù)塊從開始位置偏移設(shè)定的偏移量。由于在實(shí)際匹配過程中,特征串往往出現(xiàn)在被檢測數(shù)據(jù)塊的某段數(shù)據(jù)中,故在本實(shí)施例中通過對(duì)被檢測數(shù)據(jù)塊進(jìn)行逐位偏移,以保證獲取被檢測數(shù)據(jù)塊中所有可能匹配中特征串的數(shù)據(jù)片段。其中,偏移量的初始值為0,每偏移一次偏移量自動(dòng)加1。當(dāng)偏移量為 0時(shí),網(wǎng)絡(luò)設(shè)備不對(duì)被檢測數(shù)據(jù)塊進(jìn)行偏移,即網(wǎng)絡(luò)設(shè)備從被檢測數(shù)據(jù)塊的首位開始獲取數(shù)據(jù)片段。又例如當(dāng)偏移量為2時(shí),網(wǎng)絡(luò)設(shè)備將被檢測數(shù)據(jù)塊從開始位置偏移2個(gè)字符,此時(shí)被檢測數(shù)據(jù)塊的偏移位置為第3個(gè)字符,網(wǎng)絡(luò)設(shè)備從第3個(gè)字符開始獲取數(shù)據(jù)片段。步驟2012、從被檢測數(shù)據(jù)塊的當(dāng)前偏移位置開始獲取數(shù)據(jù)片段。其中,為了便于與特征串進(jìn)行匹配,數(shù)據(jù)片段與特征串的長度相同。如果特征串的長度為L,則從被檢測數(shù)據(jù)塊的當(dāng)前偏移位置開始獲取L個(gè)字符作為數(shù)據(jù)片段。步驟2013、根據(jù)預(yù)設(shè)獲取策略,獲取數(shù)據(jù)片段的部分字符,對(duì)獲取的部分字符進(jìn)行 HASH運(yùn)算,生成索引。其中,預(yù)設(shè)獲取策略優(yōu)選為獲取數(shù)據(jù)片段的前K個(gè)字符,對(duì)前K個(gè)字符進(jìn)行HASH 運(yùn)算,HASH運(yùn)算的結(jié)果為數(shù)據(jù)片段的索引。其中,計(jì)算數(shù)據(jù)片段的索引時(shí)所用的獲取策略與計(jì)算特征串的基數(shù)時(shí)所用的獲取策略相同,即在計(jì)算特征串的基數(shù)時(shí),也要獲取特征串的前K個(gè)字符,對(duì)對(duì)前K個(gè)字符進(jìn)行HASH運(yùn)算,HASH運(yùn)算的結(jié)果為特征串的基數(shù)。步驟2014、將獲取的索引和與索引對(duì)應(yīng)的偏移量加入HASH桶中。網(wǎng)絡(luò)設(shè)備將索引和索引對(duì)應(yīng)的偏移量同時(shí)存儲(chǔ)到HASH桶中,一方面便于將數(shù)據(jù)片段的索引和特征串的基數(shù)進(jìn)行匹配,另一方面當(dāng)數(shù)據(jù)片段的索引匹配中特征串的基數(shù)時(shí),通過偏移量可以方便的獲取與該索引對(duì)應(yīng)的數(shù)據(jù)片段,且偏移量的數(shù)據(jù)量較小,占用的存儲(chǔ)空間較少,與存儲(chǔ)數(shù)據(jù)片段相比具有節(jié)約存儲(chǔ)空間的優(yōu)勢。其中,HSAH桶僅是一種較為優(yōu)選的存儲(chǔ)方式,但并不限于此。步驟2015、判斷偏移量是否小于被檢測數(shù)據(jù)塊的長度與數(shù)據(jù)片段的長度的差值; 如果判斷結(jié)果為是,執(zhí)行步驟2016 ;如果判斷結(jié)果為否,執(zhí)行步驟2017。網(wǎng)絡(luò)設(shè)備判斷偏移量是否小于被檢測數(shù)據(jù)塊的長度與數(shù)據(jù)片段的長度的差值來判斷是否獲取到被檢測數(shù)據(jù)塊中最后一個(gè)長度與特征串相同的數(shù)據(jù)片段,如果小于表明當(dāng)前獲取的數(shù)據(jù)片段不是最后一個(gè)數(shù)據(jù)片段,則繼續(xù)執(zhí)行步驟2016及其后續(xù)步驟,以獲取下一個(gè)數(shù)據(jù)片段;如果不小于(這里的不小于實(shí)際是指等于),表明當(dāng)前獲取的數(shù)據(jù)片段是最后一個(gè)數(shù)據(jù)片段,則執(zhí)行步驟2017,即結(jié)束操作。步驟2016、將偏移量加1,并返回執(zhí)行步驟2011。網(wǎng)絡(luò)設(shè)備將偏移量加1,以繼續(xù)將被檢測數(shù)據(jù)塊的當(dāng)前偏移位置向下錯(cuò)一位,以從該位置開始繼續(xù)獲取下一個(gè)數(shù)據(jù)片段。步驟2017、結(jié)束生成數(shù)據(jù)片段的索引的操作。下面將以被檢測數(shù)據(jù)塊為“AB⑶EFGHIJK”,被檢測數(shù)據(jù)塊的長度為11,記數(shù)據(jù)片段的長度為4,且假設(shè)取數(shù)據(jù)片段的前4個(gè)字符(或者也可以取1、2、3個(gè)字符)進(jìn)行索引計(jì)算,記偏移量為I,且從0開始為例,對(duì)上生成數(shù)據(jù)片段的索引的過程做進(jìn)一步說明。其中,被檢測數(shù)據(jù)塊的長度與數(shù)據(jù)片段的長度的差值為7。在后續(xù)描述中將省略判斷I是否小于7的操作的描述。首先,I = 0,獲取的數(shù)據(jù)片段為ABCD,對(duì)數(shù)據(jù)片段ABCD進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 0時(shí)對(duì)應(yīng)的索引,記為HI。I = 1時(shí),獲取的數(shù)據(jù)片段為B⑶E,對(duì)數(shù)據(jù)片段B⑶E進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 1時(shí)對(duì)應(yīng)的索引,記為H2。I = 2時(shí),獲取的數(shù)據(jù)片段為⑶EF,對(duì)數(shù)據(jù)片段⑶EF進(jìn)行HASH運(yùn)算,該 HASH運(yùn)算的結(jié)果即為與I = 2時(shí)對(duì)應(yīng)的索引,記為H3。I = 3時(shí),獲取的數(shù)據(jù)片段為DETO, 對(duì)數(shù)據(jù)片段DER;進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 3時(shí)對(duì)應(yīng)的索引,記為H4。 I = 4時(shí),獲取的數(shù)據(jù)片段為EFGH,對(duì)數(shù)據(jù)片段EFGH進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 4時(shí)對(duì)應(yīng)的索引,記為H5。I = 5時(shí),獲取的數(shù)據(jù)片段為FGHI,對(duì)數(shù)據(jù)片段FGHI進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 5時(shí)對(duì)應(yīng)的索引,記為H6。I = 6時(shí),獲取的數(shù)據(jù)片段為GHIJ,對(duì)數(shù)據(jù)片段GHIJ進(jìn)行HASH運(yùn)算,該HASH運(yùn)算的結(jié)果即為與I = 6時(shí)對(duì)應(yīng)的索引,記為H7。I = 7時(shí),獲取的數(shù)據(jù)片段為HIJK,對(duì)數(shù)據(jù)片段HIJK進(jìn)行HASH運(yùn)算,該 HASH運(yùn)算的結(jié)果即為與I = 7時(shí)對(duì)應(yīng)的索引,記為H8。此時(shí),I等于7,則結(jié)束操作。在上述過程中,網(wǎng)絡(luò)設(shè)備會(huì)將生成的Hl與I = 0、H2與I = 1、H3與I = 2、H4 與I = 3、H5與I = 4、H6與I = 5、H7與I = 6、H8與I = 7加入到HASH桶中??梢?,該 HASH桶中的數(shù)據(jù)量明顯小于被檢測數(shù)據(jù),且被檢測數(shù)據(jù)塊的數(shù)據(jù)量越大該數(shù)據(jù)量的差距越明顯。網(wǎng)絡(luò)設(shè)備在進(jìn)行惡意代碼檢測時(shí),首先將HASH桶中的索引與特征串的基數(shù)進(jìn)行匹配,一方面降低了特征匹配的次數(shù),另一方面每個(gè)匹配操作的數(shù)據(jù)量也降低了,使得整個(gè)特征匹配操作的數(shù)據(jù)量減少了,提高了匹配速度。進(jìn)一步,在圖2B所示實(shí)施例的基礎(chǔ)上,網(wǎng)絡(luò)設(shè)備在生成數(shù)據(jù)片段的索引之后將數(shù)據(jù)片段的索引加入到HASH桶中之前,還包括將數(shù)據(jù)片段的索引與預(yù)先生成的規(guī)則庫中所有規(guī)則的特征串的基數(shù)進(jìn)行匹配的操作。當(dāng)數(shù)據(jù)片段的索引匹配中某個(gè)特征串的基數(shù)時(shí), 說明該數(shù)據(jù)片段的索引在后續(xù)基于索引的匹配過程中會(huì)被某個(gè)特征串的基數(shù)匹配中,故將該數(shù)據(jù)片段的索引存儲(chǔ)到HASH桶中,以便于進(jìn)行后續(xù)的匹配操作;當(dāng)數(shù)據(jù)片段的索引未能匹配中任何一個(gè)特征串的基數(shù)時(shí),說明該數(shù)據(jù)片段的索引在后續(xù)基于索引的匹配過程中不會(huì)被任何一個(gè)特征串的基數(shù)匹配中,將直接丟棄而不存儲(chǔ)到HASH桶中。本實(shí)施例通過預(yù)先對(duì)數(shù)據(jù)片段的索引進(jìn)行篩選處理,減少了后續(xù)基于索引進(jìn)行匹配時(shí)的匹配數(shù)據(jù)量,進(jìn)一步提高特征匹配的速度,提高惡意代碼檢測的效率。步驟202、從存儲(chǔ)特征串的基數(shù)的HASH桶中獲取一條規(guī)則中所有特征串的基數(shù)。
在本實(shí)施例中,預(yù)先生成規(guī)則庫中所有規(guī)則中所有特征串的基數(shù),并將生成的特征串的基數(shù)存儲(chǔ)到一 HASH桶中。如圖2C所示,一種生成規(guī)則庫中所有規(guī)則的特征串的基數(shù)的實(shí)施方式包括以下步驟步驟2021、獲取規(guī)則庫中的規(guī)則。可以是,網(wǎng)絡(luò)設(shè)備根據(jù)規(guī)則標(biāo)識(shí),從規(guī)則庫中獲取一條未進(jìn)行過匹配操作的規(guī)則。步驟2022、獲取獲取到的規(guī)則中的特征串??梢允?,網(wǎng)絡(luò)設(shè)備根據(jù)特征串標(biāo)識(shí),從獲取的規(guī)則中獲取一個(gè)未進(jìn)行過匹配操作的特征串。步驟2023、計(jì)算獲取到的特征串的基數(shù)。網(wǎng)絡(luò)設(shè)備根據(jù)預(yù)設(shè)獲取策略從特征串中獲取部分字符,對(duì)獲取的部分字符進(jìn)行 HASH運(yùn)算,HASH運(yùn)算的結(jié)果即為特征串的基數(shù)。例如假設(shè)特征串共包括L個(gè)字符,獲取特征串的前K個(gè)字符(即從特征串的首位開始獲取K個(gè)字符),對(duì)這K個(gè)字符進(jìn)行HASH運(yùn)算,HASH運(yùn)算的結(jié)果為該特征串的基數(shù)。其中,K<L。步驟2024、將計(jì)算出的基數(shù)存儲(chǔ)到HASH桶中。步驟2025、判斷獲取的規(guī)則中是否還存在未被獲取過的特征串;如果判斷結(jié)果為是,返回執(zhí)行步驟2022 ;如果判斷結(jié)果為否,執(zhí)行步驟2026。網(wǎng)絡(luò)設(shè)備根據(jù)特征串標(biāo)識(shí)判斷是否還有未被獲取過的特征串。該步驟用于判斷一條規(guī)則中是否全部特征串的基數(shù)都被加入到了 HASH桶中。步驟2026、判斷規(guī)則庫中是否還存在未被獲取過的規(guī)則;如果判斷結(jié)果為是,返回執(zhí)行步驟2021如果判斷結(jié)果為否,執(zhí)行步驟2027。網(wǎng)絡(luò)設(shè)備根據(jù)規(guī)則標(biāo)識(shí)判斷是否還有未被獲取過的規(guī)則。該步驟用于判斷是否對(duì)規(guī)則庫中的全部規(guī)則都進(jìn)行了處理,以保證所有規(guī)則中的所有特征串的基數(shù)都被加入到了 HASH桶中。步驟2027、結(jié)束生成特征串的基數(shù)的操作。至此步驟2027,表明已經(jīng)生成了規(guī)則庫中所有規(guī)則中的所有特征串的基數(shù),并將所有基數(shù)加入到HASH桶中。該生成特征串的基數(shù)的方法,實(shí)現(xiàn)簡單、效率較高,且通過HASH桶存儲(chǔ)特征串的基數(shù)為后續(xù)基于特征串的基數(shù)進(jìn)行特征匹配打下了基礎(chǔ)。步驟203、將數(shù)據(jù)片段的索引和獲取的規(guī)則中的特征串的基數(shù)進(jìn)行匹配,并判斷匹配結(jié)果是否為規(guī)則中所有特征串的基數(shù)均匹配中數(shù)據(jù)片段的索引,如果判斷結(jié)果為否,執(zhí)行步驟204 ;如果判斷結(jié)果為是,執(zhí)行步驟205。如圖2D所示,步驟203的一種實(shí)施方式包括以下步驟步驟2031、從獲取的規(guī)則中的特征串的基數(shù)中,獲取一個(gè)基數(shù)。網(wǎng)絡(luò)設(shè)備具體從該條規(guī)則的所有基數(shù)中,獲取一個(gè)未經(jīng)過匹配操作的基數(shù)。由于基數(shù)是與特征串對(duì)應(yīng)的,故網(wǎng)絡(luò)設(shè)備可以根據(jù)特征串標(biāo)識(shí)識(shí)別基數(shù)是否被獲取過并經(jīng)過匹配操作。步驟2032、將獲取的基數(shù)在存儲(chǔ)數(shù)據(jù)片段的索引的HASH中進(jìn)行匹配,判斷是否存在與所述獲取的基數(shù)相同的索引;如果判斷結(jié)果為是,執(zhí)行步驟2033 ;如果判斷結(jié)果為否,執(zhí)行步驟2034。步驟2033、判斷獲取的規(guī)則中是否還存在未被獲取過的基數(shù);如果判斷結(jié)果為是,返回執(zhí)行步驟2031,如果判斷結(jié)果為否,執(zhí)行步驟2035。步驟2034、判定該條規(guī)則中所有特征串的基數(shù)中存在未匹配中任何數(shù)據(jù)片段的索引的基數(shù),結(jié)束對(duì)此條規(guī)則的處理,并轉(zhuǎn)去執(zhí)行步驟204。步驟2035、判定該條規(guī)則中所有特征串的基數(shù)均匹配中數(shù)據(jù)片段的索引,結(jié)束對(duì)此條規(guī)則的處理,并轉(zhuǎn)去執(zhí)行步驟205。步驟204、判斷存儲(chǔ)特征串的基數(shù)的HASH桶中是否還有未被獲取過的規(guī)則;如果判斷結(jié)果為是,返回執(zhí)行步驟202,如果判斷結(jié)果為否,執(zhí)行步驟206。步驟205、將匹配中特征串的基數(shù)的索引(即被匹配中的索引)對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配,并判斷匹配結(jié)果是否為所有字符匹配均成功,如果判斷結(jié)果為是,執(zhí)行步驟207 ;如果判斷結(jié)果為否,執(zhí)行步驟206。在具體實(shí)施過程中,網(wǎng)絡(luò)設(shè)備從存儲(chǔ)數(shù)據(jù)片段的索引的HASH桶中獲取一個(gè)被匹配中的索引,并根據(jù)被匹配中的索引對(duì)應(yīng)的偏移量確定該被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片斷在被檢測數(shù)據(jù)塊中的起點(diǎn),從該起點(diǎn)開始獲取被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段;然后將獲取的數(shù)據(jù)片段與被匹配的索引對(duì)應(yīng)的特征串進(jìn)行字符匹配;如果匹配結(jié)果為數(shù)據(jù)片段與特征串的所有字符均相同,確定字符匹配成功;如果匹配結(jié)果為數(shù)據(jù)片段與特征串的所有字符不全部相同,確定字符匹配不成功。當(dāng)對(duì)所有被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段都進(jìn)行了字符匹配后判斷是否所有字符匹配均成功。另外,在具體實(shí)施過程中,也可以逐一對(duì)被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與相應(yīng)被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配,直到出現(xiàn)字符匹配不成功的結(jié)果時(shí)為止,而并不一定要對(duì)全部被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段進(jìn)行字符匹配,這樣在出現(xiàn)字符匹配不成功的情況下可以及時(shí)退出字符匹配操作,節(jié)約匹配操作,提高匹配效率。進(jìn)一步,在本實(shí)施例中步驟205是在步驟203判斷出一條規(guī)則中所有特征串的基數(shù)均匹配中數(shù)據(jù)片段的索引之后才執(zhí)行的,但并不限于此。例如在步驟203中可以在每對(duì)一個(gè)基數(shù)進(jìn)行匹配操作后就進(jìn)行是否被數(shù)據(jù)片段的索引匹配中的判斷操作,并在發(fā)現(xiàn)未匹配中數(shù)據(jù)片斷的索引的基數(shù)時(shí)執(zhí)行步驟204的操作,而每當(dāng)發(fā)現(xiàn)一個(gè)匹配中數(shù)據(jù)片段的索引的基數(shù)時(shí)就執(zhí)行步驟205中的字符匹配操作,并在發(fā)現(xiàn)字符匹配不成功的情況時(shí)執(zhí)行步驟206,這種方式可以更為及時(shí)的判定出被檢測數(shù)據(jù)塊為非惡意代碼,并節(jié)后續(xù)操作,節(jié)約資源。步驟206、判定被檢測數(shù)據(jù)塊為非惡意代碼,并結(jié)束操作。當(dāng)規(guī)則庫中所有的規(guī)則都未被匹配中時(shí),判定該被檢測數(shù)據(jù)塊為非惡意代碼。步驟207、判定被檢測數(shù)據(jù)塊為惡意代碼,并結(jié)束操作。只要規(guī)則庫中存在一條規(guī)則被匹配中,就判定該被檢測數(shù)據(jù)塊為惡意代碼。本實(shí)施例的惡意代碼檢測方法,通過預(yù)先生成規(guī)則庫中所有規(guī)則的特征串的基數(shù)并存放在HASH桶中,在獲取到被檢測數(shù)據(jù)塊后對(duì)被檢測數(shù)據(jù)塊進(jìn)行分塊,獲取每個(gè)數(shù)據(jù)片段的索引并存儲(chǔ)在另一個(gè)HASH桶中,首先將索引與基數(shù)進(jìn)行匹配,其中索引與基數(shù)遠(yuǎn)小于數(shù)據(jù)片段或特征串,極大的降低了特征匹配時(shí)的數(shù)據(jù)量,只有在數(shù)據(jù)片斷的索引與一條規(guī)則中所有特征串的基數(shù)均匹配中后才進(jìn)行數(shù)據(jù)片段與特征串的字符匹配,與現(xiàn)有技術(shù)相比,本實(shí)施例進(jìn)行特征匹配的數(shù)據(jù)量較小,提高了特征匹配的速度,進(jìn)而提高了整個(gè)惡意代碼檢測過程的速度,滿足惡意代碼檢測對(duì)檢測速度的要求。在此說明,上述實(shí)施例中生成的存儲(chǔ)特征串的基數(shù)的HASH桶可以保存在網(wǎng)絡(luò)設(shè)備上,當(dāng)網(wǎng)絡(luò)設(shè)備再次進(jìn)行惡意代碼檢測時(shí),可以直接使用該HASH桶,節(jié)約每次惡意代碼檢測時(shí)重新生成特征串的基數(shù)所消耗的各種資源。另外,上述實(shí)施例所生成的存儲(chǔ)特征串的基數(shù)的HASH桶還可以根據(jù)規(guī)則庫的更新進(jìn)行更新,對(duì)于每次更新可以僅根據(jù)預(yù)先獲取策略對(duì)新增的規(guī)則中的每個(gè)特征串的部分字符進(jìn)行HASH運(yùn)算,生成新增規(guī)則中每個(gè)特征串的基數(shù),并加入到上述存儲(chǔ)特征串的基數(shù)的HASH桶中,以使存儲(chǔ)特征串的基數(shù)的HASH桶與特征庫保持一致,以保證惡意代碼檢測的準(zhǔn)確度。圖3為本發(fā)明一實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。本實(shí)施例的網(wǎng)絡(luò)設(shè)備可以是服務(wù)器、個(gè)人計(jì)算機(jī)等任何可以從互聯(lián)網(wǎng)上下載數(shù)據(jù)的設(shè)備。如圖3所示,本實(shí)施例的網(wǎng)絡(luò)設(shè)備包括數(shù)據(jù)獲取模塊31、索引獲取模塊32、索引匹配模塊33、字符匹配模塊34和第一判定模塊35。其中,數(shù)據(jù)獲取模塊31,用于獲取被檢測數(shù)據(jù)塊;具體的,數(shù)據(jù)獲取模塊31可以下載互聯(lián)網(wǎng)上的數(shù)據(jù)塊,所下載的數(shù)據(jù)塊即為被檢測數(shù)據(jù)塊。該被檢測數(shù)據(jù)塊可以包括Web 頁面和二進(jìn)制代碼等。索引獲取模塊32,與數(shù)據(jù)獲取模塊31連接,用于按照預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,并獲取每個(gè)數(shù)據(jù)片段的索引。索引匹配模塊33,與索引獲取模塊32連接,用于將數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配。其中, 規(guī)則庫是預(yù)先生成的。字符匹配模塊34,與索引匹配模塊33連接,用于在數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配。第一判定模塊35,與字符匹配模塊34連接,用于在所有字符匹配均成功時(shí),判定被檢測數(shù)據(jù)塊為惡意代碼。本實(shí)施例網(wǎng)絡(luò)設(shè)備的各功能模塊可用于執(zhí)行圖1所示惡意代碼檢測方法的流程, 其工作原理不再贅述,詳見方法實(shí)施例的描述。本實(shí)施例的網(wǎng)絡(luò)設(shè)備,通過預(yù)先生成規(guī)則庫中所有規(guī)則的特征串的基數(shù),在獲取到被檢測數(shù)據(jù)塊后對(duì)被檢測數(shù)據(jù)塊進(jìn)行分塊,獲取每個(gè)數(shù)據(jù)片段的索引,首先將數(shù)據(jù)片段的索引與特征串的基數(shù)進(jìn)行匹配,其中索引與基數(shù)遠(yuǎn)小于數(shù)據(jù)片段或特征串,極大的降低了特征匹配時(shí)的數(shù)據(jù)量,只有在數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則中所有特征串的基數(shù)均匹配中后才進(jìn)行數(shù)據(jù)片段與特征串的字符匹配,極大的提高了特征匹配的速度。圖4為本發(fā)明又一實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。本實(shí)施例基于圖3所示實(shí)施例,如圖4所示,本實(shí)施例的網(wǎng)絡(luò)設(shè)備還包括第二判定模塊36。第二判定模塊36,與索引匹配模塊33和字符匹配模塊34連接,用于在數(shù)據(jù)片段的索引與規(guī)則庫中任一條規(guī)則中的特征串的基數(shù)未匹配中時(shí),或者在所有字符匹配中存在匹配不成功的字符匹配時(shí),判定被檢測數(shù)據(jù)塊為非惡意代碼。第二判定模塊可用于執(zhí)行圖1或圖2A所示惡意代碼檢測方法中的相應(yīng)流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。進(jìn)一步,本實(shí)施例的網(wǎng)絡(luò)設(shè)備還包括字符獲取模塊37和基數(shù)獲取模塊38。其中,字符獲取模塊37,用于根據(jù)預(yù)設(shè)獲取策略,獲取規(guī)則庫中每條規(guī)則中每個(gè)特征串的部分字符?;鶖?shù)獲取模塊38,與字符獲取模塊37和索引匹配模塊33連接,用于根據(jù)所獲取的特征串的部分字符生成特征串的基數(shù),以供索引匹配模塊33進(jìn)行匹配操作。上述字符獲取模塊和基數(shù)獲取模塊用于預(yù)先生成規(guī)則庫中所有規(guī)則的基數(shù),具體可用于執(zhí)行圖2C所示生成特征串的基數(shù)的方法流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。進(jìn)一步,本實(shí)施例的索引獲取模塊32的一種實(shí)現(xiàn)結(jié)構(gòu)包括第一片段獲取單元 321、字符獲取單元322和索引獲取單元323。其中,第一片段獲取單元321,與數(shù)據(jù)獲取模塊31連接,用于將被檢測數(shù)據(jù)塊逐位進(jìn)行偏移,將每次偏移的位置作為數(shù)據(jù)片段起點(diǎn),獲取與特征串具有相同長度的數(shù)據(jù)片段。 字符獲取單元322,與第一片段獲取單元321連接,用于按照預(yù)設(shè)獲取策略,獲取數(shù)據(jù)片段的部分字符。索引獲取單元323,與字符獲取單元322連接,用于根據(jù)獲取的數(shù)據(jù)片段的部分字符,獲取數(shù)據(jù)片段的索引。上述各功能單元可用于執(zhí)行圖2B所示生成數(shù)據(jù)片段的索引的方法流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。本實(shí)施例的字符匹配模塊34的一種實(shí)現(xiàn)結(jié)構(gòu)包括第二片段獲取單元341、字符匹配單元342和確定單元343。其中,第二片段獲取單元341,與索引匹配模塊33連接,用于根據(jù)被匹配中的索引對(duì)應(yīng)的偏移量,確定被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段在被檢測數(shù)據(jù)塊中的起點(diǎn),從起點(diǎn)開始獲取被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段。字符匹配單元342,與第二片段獲取單元341連接,用于將第二片段獲取單元341獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配。確定單元343,與字符匹配單元342連接,用于在獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的所有字符相同時(shí),確定字符匹配成功。另外,確定單元343還用于在獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的所有字符不完全相同時(shí),確定字符匹配不成功。上述各功能單元可用于執(zhí)行圖2A所示惡意代碼檢測方法中步驟205的操作,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。本實(shí)施例的網(wǎng)絡(luò)設(shè)備通過上述功能模塊或功能單元,預(yù)先生成規(guī)則庫中所有規(guī)則的特征串的基數(shù)并存放在HASH桶中,在獲取到被檢測數(shù)據(jù)塊后對(duì)被檢測數(shù)據(jù)塊進(jìn)行分塊, 獲取每個(gè)數(shù)據(jù)片段的索引并存儲(chǔ)在另一個(gè)HASH桶中,首先將索引與基數(shù)進(jìn)行匹配,其中索引與基數(shù)遠(yuǎn)小于數(shù)據(jù)片段或特征串,極大的降低了特征匹配時(shí)的數(shù)據(jù)量,只有在數(shù)據(jù)片斷的索引與一條規(guī)則中所有特征串的基數(shù)均匹配中后才進(jìn)行數(shù)據(jù)片段與特征串的字符匹配, 與現(xiàn)有技術(shù)相比,本實(shí)施例進(jìn)行特征匹配的數(shù)據(jù)量較小,提高了特征匹配的速度,進(jìn)而提高了整個(gè)惡意代碼檢測過程的速度,滿足惡意代碼檢測對(duì)檢測速度的要求。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種惡意代碼檢測方法,其特征在于,包括 獲取被檢測數(shù)據(jù)塊;按照預(yù)設(shè)劃分策略將所述被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)所述數(shù)據(jù)片段的索弓丨,將所述數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配,其中,所述規(guī)則庫是預(yù)先生成的;當(dāng)所述數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配; 當(dāng)所有字符匹配均成功時(shí),判定所述被檢測數(shù)據(jù)塊為惡意代碼。
2.根據(jù)權(quán)利要求1所述的惡意代碼檢測方法,其特征在于,所述特征串的基數(shù)通過以下步驟獲得按照預(yù)設(shè)獲取策略,獲取規(guī)則庫中每條規(guī)則中每個(gè)特征串的部分字符; 根據(jù)所述獲取的特征串的部分字符生成所述特征串的基數(shù)。
3.根據(jù)權(quán)利要求1所述的惡意代碼檢測方法,其特征在于,所述按照預(yù)設(shè)劃分策略將所述被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)所述數(shù)據(jù)片段的索引包括將所述被檢測數(shù)據(jù)塊逐位進(jìn)行偏移,將每次偏移的位置作為數(shù)據(jù)片段起點(diǎn),獲取與所述特征串具有相同長度的數(shù)據(jù)片段;按照所述預(yù)設(shè)獲取策略,獲取所述數(shù)據(jù)片段的部分字符; 根據(jù)所述獲取的每個(gè)數(shù)據(jù)片段的部分字符,獲取所述數(shù)據(jù)片段的索引。
4.根據(jù)權(quán)利要求3所述的惡意代碼檢測方法,其特征在于,所述將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配包括根據(jù)被匹配中的索引對(duì)應(yīng)的偏移量,確定被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段在所述被檢測數(shù)據(jù)塊中的起點(diǎn),從所述起點(diǎn)開始獲取被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段;將所述獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;當(dāng)所述獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的所有字符相同時(shí),確定字符匹配成功。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的惡意代碼檢測方法,其特征在于,還包括當(dāng)所述數(shù)據(jù)片段的索引與規(guī)則庫中任一條規(guī)則中的特征串的基數(shù)未匹配中時(shí),或者當(dāng)所有字符匹配中存在匹配不成功的字符匹配時(shí),判定所述被檢測數(shù)據(jù)塊為非惡意代碼。
6.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括 數(shù)據(jù)塊獲取模塊,用于獲取被檢測數(shù)據(jù)塊;索引獲取模塊,用于按照預(yù)設(shè)劃分策略將所述被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,并獲取每個(gè)所述數(shù)據(jù)片段的索引;索引匹配模塊,用于將所述數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配,其中,所述規(guī)則庫是預(yù)先生成的;字符匹配模塊,用于在所述數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;第一判定模塊,用于在所有字符匹配均成功時(shí),判定所述被檢測數(shù)據(jù)塊為惡意代碼。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,還包括字符獲取模塊,用于根據(jù)預(yù)設(shè)獲取策略,獲取規(guī)則庫中每條規(guī)則中每個(gè)特征串的部分字符;基數(shù)獲取模塊,用于根據(jù)所述獲取的特征串的部分字符生成所述特征串的基數(shù)。
8.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述索引獲取模塊包括第一片段獲取單元,用于將所述被檢測數(shù)據(jù)塊逐位進(jìn)行偏移,將每次偏移的位置作為數(shù)據(jù)片段起點(diǎn),獲取與所述特征串具有相同長度的數(shù)據(jù)片段;字符獲取單元,用于按照所述預(yù)設(shè)獲取策略,獲取所述數(shù)據(jù)片段的部分字符;索引獲取單元,用于根據(jù)所述獲取的數(shù)據(jù)片段的部分字符,獲取所述數(shù)據(jù)片段的索引。
9.根據(jù)權(quán)利要求8所述的網(wǎng)絡(luò)設(shè)備,其特征在于,所述字符匹配模塊包括第二片段獲取單元,用于根據(jù)被匹配中的索引對(duì)應(yīng)的偏移量,確定被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段在所述被檢測數(shù)據(jù)塊中的起點(diǎn),從所述起點(diǎn)開始獲取被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段;字符匹配單元,用于將所述獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;確定單元,用于在所述獲取的被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串的所有字符相同時(shí),確定字符匹配成功。
10.根據(jù)權(quán)利要求6-9任一項(xiàng)所述的網(wǎng)絡(luò)設(shè)備,其特征在于,還包括第二判定模塊,用于在所述數(shù)據(jù)片段的索引與規(guī)則庫中任一條規(guī)則中的特征串的基數(shù)未匹配中時(shí),或者在所有字符匹配中存在匹配不成功的字符匹配時(shí),判定所述被檢測數(shù)據(jù)塊為非惡意代碼。
全文摘要
本發(fā)明提供一種惡意代碼檢測方法及網(wǎng)絡(luò)設(shè)備。方法包括獲取被檢測數(shù)據(jù)塊;按照預(yù)設(shè)劃分策略將被檢測數(shù)據(jù)塊劃分為數(shù)據(jù)片段,獲取每個(gè)數(shù)據(jù)片段的索引,將數(shù)據(jù)片段的索引和規(guī)則庫中規(guī)則的特征串的基數(shù)進(jìn)行匹配;當(dāng)數(shù)據(jù)片段的索引與規(guī)則庫中一條規(guī)則的所有特征串的基數(shù)均匹配中時(shí),將被匹配中的索引對(duì)應(yīng)的數(shù)據(jù)片段與被匹配中的基數(shù)對(duì)應(yīng)的特征串進(jìn)行字符匹配;當(dāng)所有字符匹配均成功時(shí),判定被檢測數(shù)據(jù)塊為惡意代碼。本發(fā)明技術(shù)方案根據(jù)特征串的基數(shù)和數(shù)據(jù)片段的索引進(jìn)行特征匹配,由于基數(shù)和索引的數(shù)據(jù)量較小,提高了特征匹配的速度,進(jìn)而提高了惡意代碼檢測的速度。
文檔編號(hào)H04L29/06GK102307189SQ20111023763
公開日2012年1月4日 申請(qǐng)日期2011年8月18日 優(yōu)先權(quán)日2011年8月18日
發(fā)明者王新穎 申請(qǐng)人:成都市華為賽門鐵克科技有限公司