本發(fā)明涉及信息安全,尤其涉及一種惡意軟件檢測(cè)方法及裝置。
背景技術(shù):
1、隨著信息化技術(shù)的發(fā)展,涌現(xiàn)了多種多樣的應(yīng)用軟件。例如,利用這些應(yīng)用軟件,可以進(jìn)行線上購(gòu)物、看新聞、聊天和刷短視頻??梢哉f,應(yīng)用軟件在日常生活中越來越重要。然而,這些應(yīng)用軟件中也存在一些惡意應(yīng)用,例如,非法收集個(gè)人信息,廣告彈窗關(guān)不掉,后臺(tái)扣費(fèi),以及強(qiáng)制、過度和頻繁索取權(quán)限等。在用戶使用應(yīng)用軟件前或應(yīng)用軟件在應(yīng)用市場(chǎng)上架前,對(duì)應(yīng)用軟件進(jìn)行分析檢測(cè),識(shí)別其是否是惡意軟件,對(duì)保護(hù)用戶隱私、財(cái)產(chǎn)安全,具有重要意義。
2、現(xiàn)有惡意軟件檢測(cè)方法通常是特征碼檢測(cè)方式。特征碼是被確定為只有惡意軟件才可能存在的一段或多段數(shù)據(jù)序列,正常軟件不會(huì)存在這種數(shù)據(jù)序列,這種數(shù)據(jù)序列通常是代碼文件中的某段代碼或匯編指令序列。特征碼是應(yīng)用比較廣泛的惡意軟件檢測(cè)技術(shù),具有檢測(cè)速度快、準(zhǔn)確率高的特點(diǎn)。但是特征碼只能檢測(cè)已知的惡意程序,對(duì)已知惡意程序的變體或未知的惡意程序無能為力,導(dǎo)致現(xiàn)有惡意軟件檢測(cè)方法的準(zhǔn)確性較低。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供了一種惡意軟件檢測(cè)方法及裝置,以解決現(xiàn)有特征碼惡意軟件檢測(cè)方式中,惡意軟件識(shí)別準(zhǔn)確性較低的問題。
2、第一方面,本發(fā)明提供了一種惡意軟件檢測(cè)方法,包括:獲取多個(gè)惡意軟件樣本。基于多個(gè)惡意軟件樣本的特征碼和api的對(duì)應(yīng)關(guān)系,建立特征碼集;基于多個(gè)惡意軟件樣本的api調(diào)用關(guān)系特征,建立api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù);所述api調(diào)用關(guān)系特征表示api與所調(diào)用的其他api的對(duì)應(yīng)關(guān)系;基于多個(gè)惡意軟件樣本的api調(diào)用序列特征,建立api調(diào)用序列向量數(shù)據(jù)庫(kù);所述api調(diào)用序列特征表示api調(diào)用其他api的先后順序;獲取目標(biāo)軟件的特征碼、api調(diào)用關(guān)系和api調(diào)用序列特征;根據(jù)所述特征碼集、所述api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)和所述api調(diào)用序列向量數(shù)據(jù)庫(kù),對(duì)目標(biāo)軟件進(jìn)行綜合檢測(cè),以確定所述目標(biāo)軟件是否是惡意軟件。
3、在一種可能的實(shí)現(xiàn)方式中,所述基于多個(gè)惡意軟件樣本的api調(diào)用關(guān)系特征,建立api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)包括:針對(duì)任一惡意軟件樣本中的任一個(gè)風(fēng)險(xiǎn)api,獲取該風(fēng)險(xiǎn)api所調(diào)用的api的名稱;基于該風(fēng)險(xiǎn)api所調(diào)用的api的名稱,得到該風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量;基于各惡意軟件樣本中的各個(gè)風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量,建立api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)。
4、在一種可能的實(shí)現(xiàn)方式中,在所述針對(duì)任一惡意軟件樣本中的任一個(gè)風(fēng)險(xiǎn)api,獲取該風(fēng)險(xiǎn)api所調(diào)用的api的名稱之前,還包括:獲取惡意軟件樣本庫(kù);所述惡意軟件樣本庫(kù)中包括多個(gè)惡意軟件樣本;獲取正常軟件樣本庫(kù);所述正常軟件樣本庫(kù)中包括多個(gè)正常軟件樣本;針對(duì)惡意軟件樣本中的任一api,基于該api在所述惡意軟件樣本庫(kù)和正常軟件樣本庫(kù)中的出現(xiàn)頻次,得到該api的風(fēng)險(xiǎn)系數(shù);若該api的風(fēng)險(xiǎn)系數(shù)大于預(yù)設(shè)值,則將該api判定為風(fēng)險(xiǎn)api。
5、在一種可能的實(shí)現(xiàn)方式中,所述基于該api在所述惡意軟件樣本庫(kù)和正常軟件樣本庫(kù)中的出現(xiàn)頻次,得到該api的風(fēng)險(xiǎn)系數(shù),包括:基于以下公式得到該api的風(fēng)險(xiǎn)系數(shù):
6、
7、其中,rf表示該api的風(fēng)險(xiǎn)系數(shù);x表示正常軟件樣本庫(kù)中api的總數(shù);y表示惡意軟件樣本庫(kù)中api的總數(shù);fy表示該api在惡意軟件中出現(xiàn)的頻次;fx表示該api在正常軟件中出現(xiàn)的頻次。
8、在一種可能的實(shí)現(xiàn)方式中,在所述基于該風(fēng)險(xiǎn)api所調(diào)用的api的名稱,得到該風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量之前,還包括:基于每個(gè)惡意軟件樣本的每個(gè)風(fēng)險(xiǎn)api的名稱,獲得名稱向量;所述名稱向量的每個(gè)元素對(duì)應(yīng)一個(gè)風(fēng)險(xiǎn)api,每個(gè)元素的值表示是否調(diào)用該名稱的風(fēng)險(xiǎn)api;相應(yīng)的,所述基于該風(fēng)險(xiǎn)api所調(diào)用的api的名稱,得到該風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量包括:針對(duì)風(fēng)險(xiǎn)api所調(diào)用的任一api的名稱,在名稱向量中查找名稱一致的元素;將名稱一致的元素的值修改為調(diào)用該名稱的風(fēng)險(xiǎn)api,得到調(diào)用關(guān)系向量。
9、在一種可能的實(shí)現(xiàn)方式中,所述基于多個(gè)惡意軟件樣本的api調(diào)用序列特征,建立api調(diào)用序列向量數(shù)據(jù)庫(kù)包括:針對(duì)任一惡意軟件樣本的任一api,在該樣本模擬運(yùn)行中,獲取該api調(diào)用api的先后順序;基于該api調(diào)用api的先后順序,得到該api的調(diào)用序列向量;基于各個(gè)惡意軟件樣本的各個(gè)api的調(diào)用序列向量,得到api調(diào)用序列向量數(shù)據(jù)庫(kù)。
10、在一種可能的實(shí)現(xiàn)方式中,在基于多個(gè)惡意軟件樣本的api調(diào)用序列特征,建立api調(diào)用序列向量數(shù)據(jù)庫(kù)之前,還包括:基于每個(gè)惡意軟件樣本的每個(gè)風(fēng)險(xiǎn)api的名稱,獲得名稱向量;所述名稱向量的每個(gè)元素對(duì)應(yīng)一個(gè)風(fēng)險(xiǎn)api;相應(yīng)的,所述基于該api調(diào)用api的先后順序,得到該api的調(diào)用序列向量包括:針對(duì)該api調(diào)用的任一api,基于被調(diào)用api的名稱,確定所述被調(diào)用api在所述名稱向量中相應(yīng)元素的序號(hào);將該api調(diào)用的各api的所述序列,按被調(diào)用的先后順序排列,得到該api的調(diào)用序列向量。
11、在一種可能的實(shí)現(xiàn)方式中,所述對(duì)目標(biāo)軟件進(jìn)行檢測(cè),以確定所述目標(biāo)軟件是否是惡意軟件包括:基于所述目標(biāo)軟件的特征碼與所述特征碼集,得到特征碼匹配的第一api;基于所述目標(biāo)軟件的api調(diào)用關(guān)系特征與api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)進(jìn)行距離計(jì)算,得到距離值小于閾值的第二api;基于所述目標(biāo)軟件的api調(diào)用序列特征與api調(diào)用序列向量數(shù)據(jù)庫(kù)進(jìn)行距離計(jì)算,得到距離值小于閾值的第三api;根據(jù)目標(biāo)軟件的第一api、第二api和第三api,確定所述目標(biāo)軟件是否是惡意軟件。
12、第二方面,本發(fā)明提供了一種惡意軟件檢測(cè)裝置,包括:惡意軟件獲取模塊,用于獲取多個(gè)惡意軟件樣本。第一建立模塊,用于基于多個(gè)惡意軟件樣本的特征碼和api的對(duì)應(yīng)關(guān)系,建立特征碼集;第二建立模塊,用于基于多個(gè)惡意軟件樣本的api調(diào)用關(guān)系特征,建立api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù);所述api調(diào)用關(guān)系特征表示api與所調(diào)用的其他api的對(duì)應(yīng)關(guān)系;第三建立模塊,用于基于多個(gè)惡意軟件樣本的api調(diào)用序列特征,建立api調(diào)用序列向量數(shù)據(jù)庫(kù);所述api調(diào)用序列特征表示api調(diào)用其他api的先后順序;目標(biāo)軟件獲取模塊,用于獲取目標(biāo)軟件的特征碼、api調(diào)用關(guān)系和api調(diào)用序列特征;檢測(cè)模塊,用于根據(jù)所述特征碼集、所述api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)和所述api調(diào)用序列向量數(shù)據(jù)庫(kù),對(duì)目標(biāo)軟件進(jìn)行綜合檢測(cè),以確定所述目標(biāo)軟件是否是惡意軟件。
13、在一種可能的實(shí)現(xiàn)方式中,所述第二建立模塊,具體用于針對(duì)任一惡意軟件樣本中的任一個(gè)風(fēng)險(xiǎn)api,獲取該風(fēng)險(xiǎn)api所調(diào)用的api的名稱;基于該風(fēng)險(xiǎn)api所調(diào)用的api的名稱,得到該風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量;基于各惡意軟件樣本中的各個(gè)風(fēng)險(xiǎn)api的調(diào)用關(guān)系向量,建立api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)。
14、本發(fā)明提供一種惡意軟件檢測(cè)方法及裝置。本發(fā)明通過建立惡意軟件的特征碼集、api調(diào)用關(guān)系向量數(shù)據(jù)庫(kù)和api調(diào)用序列特征向量數(shù)據(jù)庫(kù)。api調(diào)用關(guān)系表示api與所調(diào)用的其他api的對(duì)應(yīng)關(guān)系,api調(diào)用序列特征表示api調(diào)用其他api的先后順序特征。惡意軟件的api調(diào)用關(guān)系、api調(diào)用序列特征存在相似性。因此,本發(fā)明基于軟件的特征碼,再結(jié)合api調(diào)用關(guān)系和api調(diào)用序列,對(duì)目標(biāo)軟件進(jìn)行綜合檢測(cè),可避免特征碼識(shí)別方式對(duì)未知惡意軟件的漏識(shí)別問題,提升了惡意軟件識(shí)別準(zhǔn)確性。