一種惡意程序檢測方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及電子信息技術(shù)領(lǐng)域,尤其涉及一種惡意程序檢測方法及裝置。
【背景技術(shù)】
[0002]人們在使用電子設(shè)備的過程中,會遇到木馬、病毒等惡意程序。以網(wǎng)頁木馬為例,網(wǎng)頁木馬通常是指攻擊者編寫的具有特殊功能腳本的頁面,目的是為了竊取用戶的信息,干擾用戶使用瀏覽器并獲取用戶的操作權(quán)限。一些惡意程序可以通過混淆技術(shù)混淆在網(wǎng)頁中,以達到逃避檢測的目的。其中,混淆技術(shù)主要是通過特定的算法對腳本做編碼、代碼分片(指代碼被拆分到不同的網(wǎng)頁,圖片中)以及在代碼中插入垃圾代碼等,使得原本的腳本代碼變?yōu)椴灰鬃R別的代碼,從而躲避檢測。
[0003]此處,將通過混淆技術(shù)獲得的、解混淆之前的代碼定義為網(wǎng)頁源代碼,將對網(wǎng)頁源代碼進行解混淆之后得到的代碼稱為網(wǎng)頁代碼。現(xiàn)有技術(shù)中,通過采用JS(JavaScript,直譯式腳本語言)引擎對網(wǎng)頁源代碼進行解混淆,主要通過提取網(wǎng)頁源代碼中混淆的腳本代碼,對提取出來的腳本代碼進行解混淆生成對應(yīng)的網(wǎng)頁代碼,然后再將網(wǎng)頁代碼與惡意特征庫中的惡意特征進行匹配,如果網(wǎng)頁代碼與惡意特征匹配成功,則證明該網(wǎng)頁代碼中包含惡意程序的代碼。但是,由于網(wǎng)頁代碼的編寫格式比較多,這就會導(dǎo)致在網(wǎng)頁代碼與惡意特征進行匹配的過程中,匹配率較低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實施例提供一種惡意程序檢測方法及裝置,能夠解決現(xiàn)有技術(shù)中由于解混淆后的網(wǎng)頁代碼的編寫格式較多,導(dǎo)致在網(wǎng)頁代碼與惡意特征進行匹配的過程中,匹配率較低的問題。
[0005]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0006]第一方面,提供了一種惡意程序檢測方法,該方法包括:
[0007]獲取網(wǎng)頁代碼;
[0008]運行所述網(wǎng)頁代碼并通過預(yù)設(shè)程序記錄運行代碼,所述運行代碼為所述網(wǎng)頁代碼在運行時生成的代碼,所述運行代碼包括應(yīng)用程序接口 API函數(shù)序列,所述API函數(shù)序列包含N個API函數(shù),N為正整數(shù);
[0009]將所述API函數(shù)序列與已經(jīng)存儲在惡意特征庫中的惡意特征序列進行比較,若所述API函數(shù)序列包含的所述N個API函數(shù)與所述惡意特征序列中的惡意特征相同的數(shù)量大于或等于第一閾值,則確認(rèn)所述網(wǎng)頁代碼中包含惡意程序。
[0010]結(jié)合第一方面,在第一方面的一種可能的實現(xiàn)方式中,
[0011]所述若所述API函數(shù)序列包含的所述N個API函數(shù)與所述惡意特征序列中的惡意特征相同的數(shù)量大于或等于第一閾值,則確認(rèn)所述網(wǎng)頁代碼中包含惡意程序,包括:
[0012]若所述N個API函數(shù)中M個API函數(shù)分別與所述惡意特征序列中M個惡意特征相同,且所述M個API函數(shù)在所述API函數(shù)序列中的排列順序與所述M個惡意特征在所述惡意特征序列中的排列順序相同,則確認(rèn)所述網(wǎng)頁代碼中包含惡意程序,M為整數(shù),且M大于或等于第一閾值,M小于或等于N。
[0013]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第一方面的二種可能的實現(xiàn)方式中,
[0014]所述網(wǎng)頁代碼包括至少一個標(biāo)簽,一個標(biāo)簽包含至少一個API函數(shù),所述至少一個標(biāo)簽對應(yīng)所述N個API函數(shù);
[0015]所述運行所述網(wǎng)頁代碼并通過預(yù)設(shè)程序記錄運行代碼,包括:
[0016]根據(jù)所述網(wǎng)頁代碼中所述至少一個標(biāo)簽,調(diào)用所述N個API函數(shù),并獲取所述N個API函數(shù)的信息,所述N個API函數(shù)的信息包括所述N個API函數(shù)的名稱及所述N個API函數(shù)的屬性;
[0017]將所述N個API函數(shù)的信息組合成所述API函數(shù)序列。
[0018]結(jié)合第一方面或上述第一方面的任意一種可能的實現(xiàn)方式,在第一方面的三種可能的實現(xiàn)方式中,
[0019]所述網(wǎng)頁代碼包括靜態(tài)代碼及動態(tài)代碼,將所述網(wǎng)頁代碼解析之后,所述網(wǎng)頁代碼中數(shù)據(jù)結(jié)構(gòu)不發(fā)生變化的代碼為所述靜態(tài)代碼,將所述網(wǎng)頁代碼解析之后,所述網(wǎng)頁代碼中數(shù)據(jù)結(jié)構(gòu)發(fā)生變化的代碼為所述動態(tài)代碼。
[0020]結(jié)合第一方面或上述第一方面的任意一種可能的實現(xiàn)方式,在第一方面的四種可能的實現(xiàn)方式中,
[0021]所述惡意特征庫包含至少一個惡意特征序列,一個惡意特征序列包含至少一個惡意特征;
[0022]所述將所述API函數(shù)序列與已經(jīng)存儲在惡意特征庫中的惡意特征序列進行比較,具體為:
[0023]比較所述API函數(shù)序列包含的N個API函數(shù)中第η個API函數(shù)的名稱與所述惡意特征序列所包含的第η個惡意特征的名稱是否相同,且比較所述第η個API函數(shù)所包含的API函數(shù)的屬性與所述第η個惡意特征的屬性中相同屬性的數(shù)量是否超過第二閾值;
[0024]基于所述API函數(shù)序列包含的N個API函數(shù)中第η個API函數(shù)的名稱與所述惡意特征序列所包含的的第η個惡意特征的名稱相同,且所述第η個API函數(shù)所包含的API函數(shù)的屬性與所述第η個惡意特征的屬性中相同屬性的數(shù)量超過所述第二閾值的比較結(jié)果,確定所述第η個API函數(shù)與所述惡意特征序列中的第η個惡意特征相同,其中,η為區(qū)間(0,N]內(nèi)的整數(shù)。
[0025]結(jié)合第一方面或上述第一方面的任意一種可能的實現(xiàn)方式,在第一方面的五種可能的實現(xiàn)方式中,
[0026]所述惡意特征庫中的惡意特征序列包括:行為序列編號sid信息,排序order信息,判定verdict信息。其中,所述sid信息用于定義惡意特征在所述惡意特征序列中的位置,所述order信息用于定義惡意特征進行比較時的順序,若為true,表示順序比較,若為false,則表示無序比較,所述verdict信息用于判斷某一特征是否屬于惡意特征,若為可疑suspect,表示不屬于惡意特征,若為惡意malic1us,則表示屬于惡意特征。
[0027]結(jié)合第一方面或上述第一方面的任意一種可能的實現(xiàn)方式,在第一方面的六種可能的實現(xiàn)方式中,
[0028]所述將所述API函數(shù)序列與已經(jīng)存儲在惡意特征庫中的惡意特征序列進行比較,包括:
[0029]若采用字符串string方式進行比較,貝U通過相等equal、忽略大小寫ic_equal及正則表達式regex三個參數(shù)進行比較;若采用整數(shù)integer方式或者長度length方式進行比較,均通過大于greater、equal及小于less三個參數(shù)進行比較。其中,所述equal表示比較的參數(shù)等于預(yù)設(shè)閾值,所述ic-equal表示在忽略大小寫下比較的參數(shù)等于所述預(yù)設(shè)閾值,所述regex表示用正則的方式去比較參數(shù),所述greater表示比較的參數(shù)大于所述預(yù)設(shè)閾值,所述less表示比較的參數(shù)小于所述預(yù)設(shè)閾值。
[0030]結(jié)合第一方面或上述第一方面的任意一種可能的實現(xiàn)方式,在第一方面的七種可能的實現(xiàn)方式中,
[0031]所述獲取網(wǎng)頁代碼,包括:
[0032]獲取網(wǎng)頁源代碼;
[0033]對所述網(wǎng)頁源代碼進行解混淆生成所述網(wǎng)頁代碼。
[0034]第二方面,本發(fā)明提供了一種檢測裝置,包括:
[0035]獲取模塊,用于獲取網(wǎng)頁代碼;
[0036]運行模塊,用于運行所述網(wǎng)頁代碼并通過預(yù)設(shè)程序記錄運行代碼,所述運行代碼為所述網(wǎng)頁代碼在運行時生成的代碼,所述運行代碼包括應(yīng)用程序接口 API函數(shù)序列,所述API函數(shù)序列包括N個API函數(shù),N為正整數(shù);
[0037]對比模塊,用于將所述API函數(shù)序列與已經(jīng)存儲在惡意特征庫中的惡意特征序列進行比較,若所述API函數(shù)序列包含的所述N個API函數(shù)與所述惡意特征序列中的惡意特征相同的數(shù)量大于或等于第一閾值,則確認(rèn)所述網(wǎng)頁代碼中包含惡意程序。
[0038]結(jié)合第二方面,在第二方面的一種可能的實現(xiàn)方式中,
[0039]所述對比模塊,還用于若所述N個API函數(shù)中M個API函數(shù)分別與所述惡意特征序列中M個惡意特征相同,且所述M個API函數(shù)在所述API函數(shù)序列中的排列順序與所述M個惡意特征在所述惡意特征序列中的排列順序相同,則確認(rèn)所述網(wǎng)頁代碼中包含惡意程序,M為整數(shù),且M大于或等于第一閾值,M小于或等于N。
[0040]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的二種可能的實現(xiàn)方式中,
[0041]所述網(wǎng)頁代碼包括至少一個標(biāo)簽,一個標(biāo)簽包含至少一個API函數(shù),所述至少一個標(biāo)簽對應(yīng)所述N個API函數(shù);
[0042]所述運行模塊,還用于根據(jù)所述網(wǎng)頁代碼中所述至少一個標(biāo)簽,調(diào)用所述N個API函數(shù),并獲取所述N個API函數(shù)的信息,所述N個API函數(shù)的信息包括所述N個API函數(shù)的名稱及所述N個API函數(shù)的屬性,且分別將所述N個API函數(shù)的信息組合成所述N個API函數(shù)序列。
[0043]結(jié)合第二方面或上述第二方面的任意一種可能的實現(xiàn)方式,在第二方面的三種可能的實現(xiàn)方式中,
[0044]所述惡意特征庫包含至少一個惡意特征序列,一個惡意特征序列包含至少一個惡意特征;
[0045]所述對比模塊,還用于比較所述API函數(shù)序列包含的N個API函數(shù)中第η個API函數(shù)的名稱與所述惡意特征序列所包含的第η個惡意特征的名稱是否相同,且比較所述第η個API函數(shù)所包含的API函數(shù)的屬性與所述第η個惡意特征的屬性中相同屬性的數(shù)量是否超過第二閾值,基于所述API函數(shù)序列包含的N個API函數(shù)中第η個API函數(shù)的名稱與所述惡意特征序列所包含的第η個惡意特征的名稱相同,且所述第η個API函數(shù)所包含的API函數(shù)的屬性與所述第η個惡意特征的屬性中相同屬性的數(shù)量超過所述第二閾值的比較結(jié)果,確定所述第η個API函數(shù)與所述惡意特征序