文件的數(shù)據(jù)特征提取方法、裝置及病毒特征檢測系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種文件的數(shù)據(jù)特征提取方法、裝置及病毒特征檢測系統(tǒng)。其中,該文件的數(shù)據(jù)特征提取方法包括:接收屬于同一會話的多個流數(shù)據(jù),并迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征;匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征。通過本發(fā)明,解決了相關技術中進行文件的特征提取需要還原流數(shù)據(jù)導致的效率低、占用資源高的問題,提高了文件的特征提取效率,降低了文件的特征提取的資源占用。
【專利說明】
文件的數(shù)據(jù)特征提取方法、裝置及病毒特征檢測系統(tǒng)
技術領域
[0001]本發(fā)明涉及病毒檢測領域,具體而言,涉及一種文件的數(shù)據(jù)特征提取方法、裝置,以及病毒特征檢測方法、系統(tǒng)。
【背景技術】
[0002]隨著網(wǎng)絡的普及,以及安全形式的多樣化,安全防范形式也趨于復雜化和集成化,而反病毒軟件,也更多的被作為一個安全模塊,集成在一個大的安全硬件平臺之中。例如防病毒網(wǎng)關、UTM、網(wǎng)閘、防火墻、IPS等設備產(chǎn)品。由于網(wǎng)關的硬件安全設備加入融合反病毒模塊后,對設備的性能、資源占用、帶寬處理要求都極高。
[0003]第一代是應用于網(wǎng)關的全文件特征的病毒檢測引擎。
[0004]傳統(tǒng)的防病毒網(wǎng)關、UTM、網(wǎng)閘、防火墻、IPS產(chǎn)品與反病毒引擎的結(jié)合具有很大的局限性,因為引擎對文件的檢測,需要針對完整的文件,而作為防病毒網(wǎng)關、UTM、網(wǎng)閘、防火墻、IPS產(chǎn)品,如果要使用傳統(tǒng)的反病毒引擎,則網(wǎng)關產(chǎn)品必須要額外增加一份數(shù)據(jù)流重組還原的工作,即需要網(wǎng)關產(chǎn)品將流過網(wǎng)關的數(shù)據(jù)先還原出原始文件,然后將原始文件交給引擎檢測,最后根據(jù)檢測結(jié)果來對數(shù)據(jù)進行放行或者阻斷處理。這里就出現(xiàn)了幾個很嚴重的問題:
[0005]第一、網(wǎng)關產(chǎn)品需要額外做一個數(shù)據(jù)流重組還原的操作,這部分會占用系統(tǒng)非常大的資源,包括(PU和內(nèi)存,甚至遠超了網(wǎng)關產(chǎn)品自身所需資源。
[0006]第二、在并發(fā)會話多、且長鏈接較多時候,對內(nèi)存的占用很驚人,成井噴狀增長,導致資源耗盡或卡死。一般應對方法是限制并發(fā)會話個數(shù),但是限制并發(fā)會話個數(shù)就會導致網(wǎng)關產(chǎn)品的并發(fā)處理能力無法提升,外在的表現(xiàn)就是:網(wǎng)絡數(shù)據(jù)包丟包率和重傳率大大增加,網(wǎng)絡速度緩慢。
[0007]第三、網(wǎng)關為產(chǎn)品和引擎的同步,也可能會存在延遲,而且引擎自身的檢測耗時會直接影響到網(wǎng)絡傳輸速度。
[0008]這是與網(wǎng)關類產(chǎn)品結(jié)合的第一代病毒檢測引擎,國內(nèi)的反病毒廠商,目前還有大部分是采用這種方式的。
[0009]第二代是應用于網(wǎng)關的流特征病毒檢測引擎。
[0010]由于第一代的引擎與網(wǎng)關結(jié)合存在巨大的缺陷,國內(nèi)極少數(shù)的反病毒廠商開始嘗試減小缺陷帶來的副作用,于是就出現(xiàn)了第二代應用于防病毒網(wǎng)關、UTM、網(wǎng)閘、防火墻、IPS產(chǎn)品的病毒檢測引擎。
[0011]第二代引擎的根本出發(fā)點是減小數(shù)據(jù)還原時候占用的內(nèi)存,提高會話并發(fā)性能。其根本的實現(xiàn)原理是:將病毒的特征提取位置限定在文件的首部片段內(nèi),例如有一個1MB的樣本,提取特征時候,將特征位置限定在樣本的前面5MB之內(nèi),那么在還原數(shù)據(jù)流的時候,就可以只還原5MB數(shù)據(jù),從而可以達到節(jié)省內(nèi)存的目的,節(jié)省出來的內(nèi)存可以用來處理更多的會話。
[0012]第二代引擎在一定范圍內(nèi),減小了缺陷帶來的副作用,但是,同時又會帶來一些潛在的隱患,而且這些隱患不可解決。
[0013]首先,假設每個會話至少需要5MB內(nèi)存做數(shù)據(jù)還原,那么并發(fā)一百個鏈接時候,就需要500MB內(nèi)存,如果并發(fā)一千個會話,就需要5GB的內(nèi)存,這對網(wǎng)關類產(chǎn)品本身資源的占用,依然是很不合理,很難接收。
[0014]其次,病毒程序中的惡意代碼位置,可能存在與文件的任何一個地方,并非都位于樣本前面一段,所以提取特征時將特征限制在文件的前面一段,會導致提取的特征并非關鍵信息,質(zhì)量很低下,誤報率大量增加。
【發(fā)明內(nèi)容】
[0015]本發(fā)明提供了一種文件的數(shù)據(jù)特征提取方法、裝置,以及病毒特征檢測方法、系統(tǒng),以至少解決相關技術中進行文件的特征提取需要還原流數(shù)據(jù)導致的效率低、占用資源高的問題。
[0016]根據(jù)本發(fā)明的一個方面,提供了一種文件的數(shù)據(jù)特征提取方法,包括:接收屬于同一會話的多個流數(shù)據(jù),并迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征;匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。
[0017]可選地,所述文件的數(shù)據(jù)特征提取方法通過為同一會話單獨分配的檢測引擎執(zhí)行。
[0018]可選地,在接收屬于所述同一會話的所述多個流數(shù)據(jù)之前,所述方法還包括:調(diào)用所述檢測引擎的初始化接口,以使所述檢測引擎初始化。
[0019]可選地,迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征包括:調(diào)用所述檢測引擎的迭代特征初始化接口,以使所述檢測引擎初始化所存儲的數(shù)據(jù)特征;每當收到所述多個流數(shù)據(jù)中的一個流數(shù)據(jù),則調(diào)用所述檢測引擎的迭代生成多點特征接口,以使所述檢測引擎提取并存儲該流數(shù)據(jù)的數(shù)據(jù)特征。
[0020]可選地,匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征包括:在屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,調(diào)用所述檢測引擎的迭代特征匯總接口,以使所述檢測引擎匯總所述多個流數(shù)據(jù)中屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。
[0021]可選地,在匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征之后,所述方法還包括:將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息。
[0022]可選地,在所述文件的數(shù)據(jù)特征提取方法通過分配給所述同一會話的檢測引擎執(zhí)行的情況下,將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息包括:調(diào)用所述檢測引擎的特征檢測接口,以使所述檢測引擎將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息。
[0023]可選地,在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,所述方法還包括:調(diào)用所述檢測引擎的引擎釋放接口,以使所述檢測引擎釋放占用的資源。
[0024]根據(jù)本發(fā)明的另一個方面,還提供了一種文件的數(shù)據(jù)特征提取裝置,包括:迭代模塊,用于接收屬于同一會話的多個流數(shù)據(jù),并迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征;匯總模塊,用于匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。
[0025]可選地,所述裝置還包括:匹配模塊,用于將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;返回模塊,用于在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息。
[0026]根據(jù)本發(fā)明的另一個方面,還提供了一種病毒特征檢測系統(tǒng),包括:為同一會話單獨分配的檢測引擎,其中,所述檢測引擎包括:初始化接口,用于初始化所述檢測引擎;迭代特征初始化接口,用于初始化所述檢測引擎所存儲的數(shù)據(jù)特征;迭代生成多點特征接口,用于接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征;迭代特征匯總接口,用于在所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征;特征檢測接口,用于將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息;引擎釋放接口,用于在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放所述檢測引擎占用的資源。
[0027]根據(jù)本發(fā)明的另一個方面,還提供了一種病毒特征檢測方法,包括:初始化為同一會話單獨分配的檢測引擎;初始化所述檢測引擎所存儲的數(shù)據(jù)特征;接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征;在所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征;將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息;在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放所述檢測引擎占用的資源。
[0028]通過本發(fā)明,采用接收屬于同一會話的多個流數(shù)據(jù),并迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征;匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征的方式,解決了相關技術中進行文件的特征提取需要還原流數(shù)據(jù)導致的效率低、占用資源高的問題,提高了文件的特征提取效率,降低了文件的特征提取的資源占用。
【附圖說明】
[0029]此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
[0030]圖1是根據(jù)本發(fā)明實施例的文件的數(shù)據(jù)特征提取方法的流程圖;
[0031 ]圖2是根據(jù)本發(fā)明實施例的文件的數(shù)據(jù)特征提取裝置的結(jié)構(gòu)框圖;
[0032]圖3是根據(jù)本發(fā)明實施例的病毒特征檢測方法的流程圖;
[0033]圖4是根據(jù)相關技術的低并發(fā)檢測引擎的工作示意圖;
[0034]圖5是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎并發(fā)處理的工作示意圖;
[0035]圖6是根據(jù)相關技術的需要對流數(shù)據(jù)還原和緩存的流數(shù)據(jù)處理示意圖;
[0036]圖7是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎無緩存的流數(shù)據(jù)處理示意圖;
[0037]圖8是根據(jù)相關技術的檢測引擎需進行數(shù)據(jù)還原的流數(shù)據(jù)處理的示意圖;
[0038]圖9是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎的流數(shù)據(jù)迭代處理的示意圖;
[0039]圖10是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎的工作流程圖。
【具體實施方式】
[0040]下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
[0041]需要說明的是,本發(fā)明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。
[0042]在本實施例中提供了一種文件的數(shù)據(jù)特征提取方法,圖1是根據(jù)本發(fā)明實施例的文件的數(shù)據(jù)特征提取方法的流程圖,如圖1所示,該流程包括如下步驟:
[0043]步驟SlOl,接收屬于同一會話的多個流數(shù)據(jù),并迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征;
[0044]步驟S102,匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征。
[0045]在上述步驟中,分別對屬于同一會話的流數(shù)據(jù)迭代提取數(shù)據(jù)特征,并將其中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征進行匯總,從而得到完整文件的數(shù)據(jù)特征。一方面,單一的流數(shù)據(jù)的數(shù)據(jù)特征提取過程不需要進行數(shù)據(jù)還原,因此,節(jié)省了數(shù)據(jù)還原需要的緩存占用和內(nèi)存開銷;另一方面,對于同一個文件的全部流數(shù)據(jù)的數(shù)據(jù)特征最終進行匯總,相當于得到了整個文件的數(shù)據(jù)特征,避免了僅還原并獲取部分文件的數(shù)據(jù)特征所導致的數(shù)據(jù)特征漏檢、病毒特征漏報的問題??梢姡ㄟ^上述步驟,解決了相關技術中進行文件的特征提取需要還原流數(shù)據(jù)導致的效率低、占用資源高的問題,提高了文件的特征提取效率,降低了文件的特征提取的資源占用。
[0046]可選地,上述的文件的數(shù)據(jù)特征提取方法通過為同一會話單獨分配的檢測引擎執(zhí)行。即對于每一個會話(或者進程)分別創(chuàng)建或者分配一個檢測引擎,并發(fā)運行的引擎數(shù)量由會話數(shù)或者進程數(shù)確定。
[0047]上述的檢測引擎可以預留多種功能接口,這樣,就可以將檢測引擎嵌入各種其他的軟件中,其他的軟件通過這些功能接口對檢測引擎進行調(diào)用。
[0048]可選地,在上述方法應用于檢測引擎中時,在接收屬于同一會話的多個流數(shù)據(jù)之前,可以調(diào)用檢測引擎的初始化接口,以使檢測引擎初始化。
[0049]可選地,在上述方法應用于檢測引擎中時,在步驟SlOl中迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征時,可以調(diào)用檢測引擎的迭代特征初始化接口,以使檢測引擎初始化所存儲的數(shù)據(jù)特征;每當收到多個流數(shù)據(jù)中的一個流數(shù)據(jù),則調(diào)用檢測引擎的迭代生成多點特征接口,以使檢測引擎提取并存儲該流數(shù)據(jù)的數(shù)據(jù)特征。
[0050]可選地,在上述方法應用于檢測引擎中時,在步驟S102中,可以在屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,調(diào)用檢測引擎的迭代特征匯總接口,以使檢測引擎匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征。
[0051]可選地,在步驟S102之后,為了實現(xiàn)病毒檢測,可以將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;在確定特征匹配的情況下,返回同一文件攜帶的病毒信息。其中,為了保證預設的病毒庫為最新病毒庫,在檢測引擎初始化之后,檢測引擎可以獲取最新的病毒庫版本信息。通過該方式,實現(xiàn)了文件病毒的檢測功能。
[0052]可選地,在上述方法應用于檢測引擎中時,在文件的數(shù)據(jù)特征提取方法通過分配給同一會話的檢測引擎執(zhí)行的情況下,將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;在確定特征匹配的情況下,返回同一文件攜帶的病毒信息的情況下,可以調(diào)用檢測引擎的特征檢測接口,以使檢測引擎將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回同一文件攜帶的病毒信息。
[0053]可選地,在上述方法應用于檢測引擎中時,在完成同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,可以調(diào)用檢測引擎的引擎釋放接口,以使檢測引擎釋放占用的資源。通過該方式實現(xiàn)了檢測引擎的資源釋放。
[0054]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據(jù)上述實施例的方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)(如R0M/RAM、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。
[0055]在本實施例中還提供了一種文件的數(shù)據(jù)特征提取裝置,該裝置用于實現(xiàn)上述實施例及優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述。如以下所使用的,術語“模塊”可以實現(xiàn)預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
[0056]圖2是根據(jù)本發(fā)明實施例的文件的數(shù)據(jù)特征提取裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括:迭代模塊21,用于接收屬于同一會話的多個流數(shù)據(jù),并迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征;匯總模塊22,耦合至迭代模塊21,用于匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征。
[0057]可選地,裝置還包括:匹配模塊23,耦合至匯總模塊22,用于將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;返回模塊,用于在確定特征匹配的情況下,返回同一文件攜帶的病毒信息。
[0058]上述實施例給出了文件的數(shù)據(jù)特征提取裝置的內(nèi)部結(jié)構(gòu)示意,并對各個內(nèi)部模塊的功能進行了描述。
[0059]需要說明的是,上述各個模塊是可以通過軟件或硬件來實現(xiàn)的,對于后者,可以通過以下方式實現(xiàn),但不限于此:上述模塊均位于同一處理器中;或者,上述模塊分別位于多個處理器中。
[0060]在本實施例中還提供了一種病毒特征檢測系統(tǒng),包括:一個或者多個檢測引擎,這些檢測引擎分別為同一會話單獨分配的檢測引擎。
[0061]其中,檢測引擎的內(nèi)部結(jié)構(gòu)與上述的文件的數(shù)據(jù)特征提取裝置的內(nèi)部結(jié)構(gòu)相當。為了能夠讓檢測引擎能夠嵌入到其他的軟件中,在檢測引擎外部預先設置了多種功能接口,這些功能接口包括但不限于:初始化接口、迭代特征初始化接口、迭代生成多點特征接口、迭代特征匯總接口、特征檢測接口、引擎釋放接口等。這些功能接口與檢測引擎內(nèi)部的模塊連接,用于在接收外部指令的調(diào)用時,使用相應的模塊完成對應的功能。
[0062]例如,初始化接口,用于初始化檢測引擎;迭代特征初始化接口,用于初始化檢測引擎所存儲的數(shù)據(jù)特征;迭代生成多點特征接口,用于接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征;迭代特征匯總接口,用于在多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征;特征檢測接口,用于將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回同一文件攜帶的病毒信息;引擎釋放接口,用于在完成同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放檢測引擎占用的資源。
[0063]在本實施例中還提供了一種病毒特征檢測方法。圖3是根據(jù)本發(fā)明實施例的病毒特征檢測方法的流程圖,如圖3所示,該流程包括如下步驟:
[0064]步驟S301,初始化為同一會話單獨分配的檢測引擎;
[0065]步驟S302,初始化檢測引擎所存儲的數(shù)據(jù)特征;
[0066]步驟S303,接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征;
[0067]步驟S304,在多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征;
[0068]步驟S305,將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回同一文件攜帶的病毒信息;
[0069]步驟S306,在完成同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放檢測引擎占用的資源。
[0070]通過上述步驟,實現(xiàn)了病毒檢測;并且,在病毒檢測過程中,檢測引擎的檢測效率尚,占用資源開銷少,病毒檢出率尚。
[0071]本實施例還提供了一種軟件,該軟件用于執(zhí)行上述實施例及優(yōu)選實施方式中描述的技術方案。
[0072]本實施例還提供了一種存儲介質(zhì)。在本實施例中,上述存儲介質(zhì)可以被設置為存儲用于執(zhí)行以下步驟的程序代碼:
[0073]步驟SlOl,接收屬于同一會話的多個流數(shù)據(jù),并迭代提取多個流數(shù)據(jù)的數(shù)據(jù)特征;
[0074]步驟S102,匯總多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征。
[0075]本實施例還提供了一種存儲介質(zhì)。在本實施例中,上述存儲介質(zhì)可以被設置為存儲用于執(zhí)行以下步驟的程序代碼:
[0076]步驟S301,初始化為同一會話單獨分配的檢測引擎;
[0077]步驟S302,初始化檢測引擎所存儲的數(shù)據(jù)特征;
[0078]步驟S303,接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征;
[0079]步驟S304,在多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含同一文件的至少一個文件的數(shù)據(jù)特征;
[0080]步驟S305,將同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回同一文件攜帶的病毒信息;
[0081]步驟S306,在完成同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放檢測引擎占用的資源。
[0082]可選地,在本實施例中,上述存儲介質(zhì)可以包括但不限于:U盤、只讀存儲器(Read-Only Memory,簡稱為ROM)、隨機存取存儲器(Random Access Memory,簡稱為RAM)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0083]本實施例中的具體示例可以參考上述實施例及可選實施方式中所描述的示例,本實施例在此不再贅述。
[0084]為了使本發(fā)明實施例的描述更加清楚,下面結(jié)合優(yōu)選實施例進行描述和說明。
[0085]本發(fā)明優(yōu)選實施例將上述的文件的數(shù)據(jù)特征提取方法應用在Linux系統(tǒng)的病毒檢測技術中,在本優(yōu)選實施例中將以Linux系統(tǒng)的病毒檢測為例進行描述和說明。
[0086]本優(yōu)選實施例提供了一種Linux流迭代嵌入式病毒檢測引擎和檢測方法,其目的是至少達到以下效果之一:避免做數(shù)據(jù)會話還原;避免大內(nèi)存來存儲會話;高并發(fā),支持同時創(chuàng)建上千個引擎;高效率,檢測效率高;精確率高,可以對已知病毒精確定位,無誤報。
[0087]本優(yōu)選實施例實現(xiàn)高并發(fā)
[0088]病毒檢測引擎是否能支持并發(fā),直接關系到網(wǎng)關類產(chǎn)品的性能。如果十個會話只能使用兩個引擎進行輪詢掃描,那么同一時間必然會有八個會話處于等待狀態(tài),同時還需要處理資源競爭和同步。這就造成了堵塞,性能瓶頸卡在了引擎檢測。圖4是根據(jù)相關技術的低并發(fā)檢測引擎的工作示意圖,如圖4所示,相關技術中的檢測引擎限制了最大并發(fā)的引擎數(shù)量,并發(fā)性能不高的檢測引擎在處理會話時多個會話需要排隊等待處理,增加了檢測的時延,檢測效率低。
[0089]假如可以創(chuàng)建十個引擎,每個引擎獨自處理一個會話,那么就不存在資源競爭,也不會有會話處于等待狀態(tài)。從而提升整體性能,這就是弓I擎支持并發(fā)的必要性。
[0090]圖5是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎并發(fā)處理的工作示意圖,如圖5所示,本優(yōu)選實施例中提供的Linux流迭代嵌入式病毒檢測引擎提升了對并發(fā)數(shù)量的支持,無論是在多線程環(huán)境,還是在多進程環(huán)境中,都可以創(chuàng)建多個引擎,來檢測病毒。例如用戶在自己的設備中創(chuàng)建了一百個線程,每個線程中都創(chuàng)建一個獨立的引擎,用來處理不同的會話。需要說明的是,在本發(fā)明優(yōu)選實施例中Linux流迭代嵌入式病毒檢測引擎的實際并發(fā)支持并不限于一百,并發(fā)數(shù)可以多于一千。
[0091 ]本優(yōu)選實施例實現(xiàn)無緩存
[0092]使用本發(fā)明優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎,進行樣本檢測時候,不需要對流數(shù)據(jù)進行還原和緩存,故不需要大量的內(nèi)存空間,也不會消耗過多的CPU資源。圖6是根據(jù)相關技術的需要對流數(shù)據(jù)還原和緩存的流數(shù)據(jù)處理示意圖,如圖6所示,傳統(tǒng)引擎需要緩存,中間陰影部分為需要緩存會話占用的內(nèi)存空間。
[0093]圖7是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎無緩存的流數(shù)據(jù)處理示意圖,如圖7所示,Linux流迭代嵌入式病毒檢測引擎不需要緩存,去掉了緩存部分,減少了內(nèi)存占用。
[0094]本優(yōu)選實施例實現(xiàn)流迭代
[0095]流迭代,是針對網(wǎng)關類產(chǎn)品開發(fā)出的針對性接口,即用戶可以使用提供的接口,對流數(shù)據(jù)進行迭代檢測。
[0096]圖8是根據(jù)相關技術的檢測引擎需進行數(shù)據(jù)還原的流數(shù)據(jù)處理的示意圖,如圖8所示,第一代和第二代應用在網(wǎng)關的引擎,都是需要等待數(shù)據(jù)還原完成或者還原到一定大小之后,才可以使用引擎檢測,所以必須得緩存會話。
[0097]圖9是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎的流數(shù)據(jù)迭代處理的示意圖,如圖9所示,Linux流迭代嵌入式病毒檢測引擎可以對每個數(shù)據(jù)流段進行檢測,對檢測的多點特征結(jié)果進行迭代,得到最終的檢測結(jié)果。
[0098]本優(yōu)選實施例實現(xiàn)零誤報
[0099]在本優(yōu)選實施例中,誤報率的控制通過多個方面綜合防范,可以達到了無限接近零誤報(概率小于百萬分之一)。
[0100]樣本收集和特征提取環(huán)節(jié),有多個質(zhì)量把控環(huán)節(jié)來保證提取的樣本特征質(zhì)量,包括多道自動化及人工處理工序,來降低誤報率。
[0101]白名單的處理環(huán)節(jié),有收集主流的操作系統(tǒng),應用軟件等白名單,在病毒庫出庫前會用最新病毒庫對白名單文件進行掃描,從而杜絕系統(tǒng)文件,應用軟件等被誤報。
[0102]尤其是,本發(fā)明優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎的設計,是針對全文件的檢測,會對流數(shù)據(jù)的每一個片段進行詳細分析,最終確定結(jié)果。而第二代引擎,只是對文件的前半部進行檢測,對文件的后半部不做鑒定,故此對于惡意代碼位于文件后半部的樣本檢測會存在漏報,而對相同前半部但不同后半部的正常樣本則存在誤報。
[0103]Linux流迭代嵌入式病毒檢測引擎通過多個環(huán)節(jié)可以達到遠超第一代和第二代的檢測精準度,將誤報率降到最低。
[0104]本優(yōu)選實施例實現(xiàn)多平臺支持
[0105]本優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎是一款定制型引擎,在引擎設計時候,充分考慮到了國內(nèi)各種網(wǎng)關類產(chǎn)品所使用的硬件平臺差異,讓引擎的實現(xiàn)可以支持多種平臺,具有更大的通用性,適應信息安全產(chǎn)品國產(chǎn)化的大趨勢。
[0106]本優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎支持的平臺包括但不限于:x86架構(gòu)(包括英特爾、AMD等市面流行的常見芯片及架構(gòu))、龍芯MIPS架構(gòu)(支持國產(chǎn)龍芯MIPS架構(gòu),龍芯3A等芯片)、飛騰ARM架構(gòu)(支持飛騰ARM64架構(gòu),F(xiàn)T1500A等芯片)、申威平臺架構(gòu)等。另外,引擎能支持的平臺,不僅僅限于以上平臺,其他更多的平臺也可以適應,只是需要進行適配或者二次開發(fā)。
[0107]本優(yōu)選實施例嵌入開發(fā)易用
[0108]本發(fā)明優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎最終可以提供給第三方嵌入使用,所以接口應該盡量簡單清晰,以方便第三方使用。
[0109]很多引擎接口功能繁多,操作復雜,導致使用過程中出現(xiàn)各種問題,而本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎提供給第三方的接口,非常簡易,因為將很多復雜的操作都在后臺實現(xiàn)了,用戶可以很方便的將引擎嵌入到自己的產(chǎn)品中。
[0110]引擎的接口包括但不限于:初始化引擎接口、釋放引擎接口、獲取病毒庫版本接口、特征初始化接口、特征迭代接口、匯總多點特征接口、檢測特征接口。
[0111]這些接口的功能如下:
[0112]引擎初始化接口
[0113]引擎在使用之前,需要先調(diào)用初始化函數(shù),為了提高效率,引擎內(nèi)部無鎖,每個引擎句柄都是獨立工作,多線程情況下,使用者可以在每個線程中創(chuàng)建一個引擎,各個引擎互不影響。
[0114]引擎釋放接口
[0115]在使用完引擎之后需要調(diào)用引擎釋放接口,以釋放引擎占用的內(nèi)存和其他資源。
[0116]獲取病毒庫版本接口
[0117]在引擎初始化之后,可以獲取引擎使用的病毒庫版本,病毒庫版本是以日期的格式表示,例如:"2015-07-23 15:30:30"。
[0118]迭代特征初始化接口
[0119]在使用引擎對一個新的流會話進行檢測時候,需要先調(diào)用迭代特征初始化接口,用來初始化迭代的特征,并且可以指定文件檢測的最大長度,當文件長度超過設置的最大長度時,引擎會忽略檢測此類文件。
[0120]迭代多點特征接口
[0121]迭代生成多點特征接口,是在迭代特征初始化完成之后需要調(diào)用的,每次收到一段流數(shù)據(jù)時候,都要調(diào)用此接口來生成一個當前流數(shù)據(jù)塊的多點特征。
[0122]迭代特征匯總接口
[0123]迭代特征匯總,是在一個會話的流傳輸完畢后使用,調(diào)用此接口,可以對之前生成的多個流數(shù)據(jù)塊的多點特征進行匯總,最終得到一個綜合的特征權值。該特征權值是針對這一個完整的流會話的,用這個特征權值,就可以在江民的病毒庫中進行特征匹配,檢測傳輸?shù)牧鲾?shù)據(jù)是否安全。
[0124]特征檢測接口
[0125]特征檢測接口,是在完成迭代特征匯總之后,調(diào)用,使用這個接口可以檢測最終生成的特征權值是否安全,如果不安全,則會返回病毒名信息。
[0126]圖10是根據(jù)本發(fā)明優(yōu)選實施例的Linux流迭代嵌入式病毒檢測引擎的工作流程圖,如圖1O所示,流程包括如下步驟:
[0127]步驟I,打開包含接口頭文件。
[0128]步驟2,打開接口動態(tài)庫,并導出動態(tài)庫中的接口函數(shù)。
[0129]步驟3,調(diào)用初始化接口初始化引擎。
[0130]步驟4,調(diào)用獲取版本接口取得版本信息。
[0131 ]步驟5,調(diào)用迭代特征初始化接口。
[0132]步驟6,對流數(shù)據(jù)進行多次特征迭代調(diào)用。
[0133]步驟7,調(diào)用迭代特征匯總接口,對多個迭代特征進行匯總。
[0134]步驟8,調(diào)用特征檢測接口進行檢測。
[0135]步驟9,釋放引擎。
[0136]由上述描述可知,本發(fā)明優(yōu)選實施例提供的Linux流迭代嵌入式病毒檢測引擎具有下列優(yōu)點:1、無緩存,不需要做會話還原。2、流迭代,支持迭代生成特征。3、高并發(fā),支持創(chuàng)建多個引擎,同時檢測。4、多平臺,支持多個平臺。
[0137]綜上所述,本發(fā)明提供的檢測引擎是針對網(wǎng)關類產(chǎn)品開發(fā)的定制型引擎,有很強的針對性。從對該檢測引擎的性能測試的結(jié)果來看,檢測的瓶頸主要存在于系統(tǒng)磁盤10,以及內(nèi)存的讀寫速度上,這部分受限與系統(tǒng)硬件。CPU的消耗,主要集中在對流數(shù)據(jù)的迭代部分,而病毒特征的監(jiān)測速度大于每秒鐘I萬條,同時多線程多并發(fā)的支持非常好。以上性能已經(jīng)能夠滿足網(wǎng)關類產(chǎn)品的各項需求,適合網(wǎng)類產(chǎn)品集成流迭代引擎。
[0138]顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0139]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【主權項】
1.一種文件的數(shù)據(jù)特征提取方法,其特征在于包括: 接收屬于同一會話的多個流數(shù)據(jù),并迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征; 匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。2.根據(jù)權利要求1所述的方法,其特征在于,所述文件的數(shù)據(jù)特征提取方法通過為同一會話單獨分配的檢測引擎執(zhí)行。3.根據(jù)權利要求2所述的方法,其特征在于,在接收屬于所述同一會話的所述多個流數(shù)據(jù)之前,所述方法還包括: 調(diào)用所述檢測引擎的初始化接口,以使所述檢測引擎初始化。4.根據(jù)權利要求2所述的方法,其特征在于,迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征包括: 調(diào)用所述檢測引擎的迭代特征初始化接口,以使所述檢測引擎初始化所存儲的數(shù)據(jù)特征; 每當收到所述多個流數(shù)據(jù)中的一個流數(shù)據(jù),則調(diào)用所述檢測引擎的迭代生成多點特征接口,以使所述檢測引擎提取并存儲該流數(shù)據(jù)的數(shù)據(jù)特征。5.根據(jù)權利要求2所述的方法,其特征在于,匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征包括: 在屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,調(diào)用所述檢測引擎的迭代特征匯總接口,以使所述檢測引擎匯總所述多個流數(shù)據(jù)中屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。6.根據(jù)權利要求1或2所述的方法,其特征在于,在匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征之后,所述方法還包括: 將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配; 在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息。7.根據(jù)權利要求6所述的方法,其特征在于,在所述文件的數(shù)據(jù)特征提取方法通過分配給所述同一會話的檢測引擎執(zhí)行的情況下,將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配;在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息包括: 調(diào)用所述檢測引擎的特征檢測接口,以使所述檢測引擎將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒?目息O8.根據(jù)權利要求7所述的方法,其特征在于,在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,所述方法還包括: 調(diào)用所述檢測引擎的引擎釋放接口,以使所述檢測引擎釋放占用的資源。9.一種文件的數(shù)據(jù)特征提取裝置,其特征在于包括: 迭代模塊,用于接收屬于同一會話的多個流數(shù)據(jù),并迭代提取所述多個流數(shù)據(jù)的數(shù)據(jù)特征; 匯總模塊,用于匯總所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征。10.根據(jù)權利要求9所述的裝置,其特征在于,所述裝置還包括: 匹配模塊,用于將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配; 返回模塊,用于在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息。11.一種病毒特征檢測系統(tǒng),其特征在于包括:為同一會話單獨分配的檢測引擎, 其中,所述檢測引擎包括: 初始化接口,用于初始化所述檢測引擎; 迭代特征初始化接口,用于初始化所述檢測引擎所存儲的數(shù)據(jù)特征; 迭代生成多點特征接口,用于接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征; 迭代特征匯總接口,用于在所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征; 特征檢測接口,用于將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息; 引擎釋放接口,用于在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放所述檢測引擎占用的資源。12.一種病毒特征檢測方法,其特征在于包括: 初始化為同一會話單獨分配的檢測引擎; 初始化所述檢測引擎所存儲的數(shù)據(jù)特征; 接收屬于同一會話的多個流數(shù)據(jù),提取并存儲接收到的流數(shù)據(jù)的數(shù)據(jù)特征; 在所述多個流數(shù)據(jù)中屬于同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征都迭代提取完畢之后,匯總屬于所述同一文件的全部流數(shù)據(jù)的數(shù)據(jù)特征,得到包含所述同一文件的至少一個文件的數(shù)據(jù)特征; 將所述同一文件的數(shù)據(jù)特征與預設的病毒庫進行特征匹配,并在確定特征匹配的情況下,返回所述同一文件攜帶的病毒信息; 在完成所述同一會話中全部文件的數(shù)據(jù)特征與預設的病毒庫的特征匹配之后,釋放所述檢測引擎占用的資源。
【文檔編號】G06F21/56GK106022129SQ201610326717
【公開日】2016年10月12日
【申請日】2016年5月17日
【發(fā)明人】郭昌盛
【申請人】北京江民新科技術有限公司