一種基于動態(tài)語義特征的惡意代碼分析檢測方法
【專利摘要】本發(fā)明涉及一種基于動態(tài)語義特征的惡意代碼分析檢測方法,其步驟包括:1)將惡意樣本庫中待分析檢測的代碼動態(tài)運(yùn)行于虛擬環(huán)境之中,監(jiān)測其運(yùn)行過程并提取出原始特征;2)篩選出代表該代碼語義特征的API名稱信息;3)建立代表該代碼語義特征的API序列語義特征集合;4)選取具有代表性的語義特征建立語義特征庫;5)將待檢測代碼的語義特征集合與語義特征庫進(jìn)行相似性檢測,得出檢測結(jié)果,即待檢測代碼是良性代碼或惡意代碼。本發(fā)明根據(jù)不同的樣本可以建立不同的語義特征,具有很好的普適性,并提出了選取具有代表性特征的方法,能夠較準(zhǔn)確地表示代碼的語義特征,對惡意代碼的分析檢測更加準(zhǔn)確、檢測成本更低。
【專利說明】—種基于動態(tài)語義特征的惡意代碼分析檢測方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于系統(tǒng)安全【技術(shù)領(lǐng)域】,涉及一種惡意代碼分析檢測的方法,特別涉及基于代碼動態(tài)特征提取和建模的惡意代碼分析檢測方法。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的快速發(fā)展,Internet給人們的生活工作帶來了諸多便利并逐漸成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。如今人們在互?lián)網(wǎng)上進(jìn)行各種社交活動、商品交易,網(wǎng)絡(luò)上存在著許多用戶的隱私信息以及潛在的經(jīng)濟(jì)利益,這些吸引了眾多惡意攻擊者,他們利用各類技術(shù)手段來達(dá)到他們的目的,其中較常見的一種方式即是使用惡意軟件。
[0003]凡是涉及強(qiáng)制安裝、難以卸載、瀏覽器劫持、廣告彈出、惡意收集用戶信息、惡意卸載、惡意捆綁以及其他侵犯用戶知情權(quán)和選擇權(quán)的惡意行為等八種現(xiàn)象的軟件都可以被認(rèn)定為是惡意軟件。一般來說,惡意代碼是病毒、蠕蟲、特洛伊木馬、間諜軟件、僵尸、rootkit等惡意軟件的總稱。
[0004]分析惡意代碼的方法一般可分為靜態(tài)分析方法與動態(tài)分析方法,兩者的區(qū)別在于被分析的這段程序、軟件是否需要執(zhí)行。顧名思義,靜態(tài)分析指的即是不需要執(zhí)行程序這類情況。如采用反匯編等不執(zhí)行惡意代碼的分析方法對惡意代碼進(jìn)行分析,常用的如IDA靜態(tài)分析工具,該工具可以讓分析人員靜態(tài)分析二進(jìn)制代碼。靜態(tài)分析的優(yōu)點(diǎn)是分析較為全面,但是對于采用了變形、混淆等代碼變形技術(shù)的惡意代碼卻很難進(jìn)行準(zhǔn)確的分析。另外,惡意攻擊者了解到靜態(tài)分析方法的缺陷后,可以有針對性地編寫能避開靜態(tài)分析的惡意軟件,所以進(jìn)行惡意代碼動態(tài)分析技術(shù)研究是很有必要的。
[0005]動態(tài)分析,指的是執(zhí)行一個(gè)程序并對其運(yùn)行過程中的活動進(jìn)行分析。動態(tài)分析的方法有函數(shù)調(diào)用監(jiān)控、函數(shù)參數(shù)分析、信息流追蹤、指令追蹤等多種方法,其中函數(shù)調(diào)用監(jiān)控部分分為 API (Application Programming Interface)監(jiān)控、系統(tǒng)調(diào)用監(jiān)控、WindowsNative API監(jiān)控。靜態(tài)分析采用反匯編等方法分析代碼特征,從語法特征的角度的確可以檢測出部分惡意代碼,但是語法無法從根本上反映出惡意代碼的“惡意性”,不同的語法表達(dá)出的語義可以是相同的。故考慮從語義的角度入手,如監(jiān)控代碼運(yùn)行時(shí)實(shí)際進(jìn)行的函數(shù)調(diào)用,對于采用變形、混淆等技術(shù)改變其語法特征的惡意代碼,仍然可以從其實(shí)際進(jìn)行的函數(shù)調(diào)用監(jiān)測出“惡意性”。因此,有必要提出一種針對語義特征的惡意代碼特征選取和建模方法。
【發(fā)明內(nèi)容】
[0006]針對惡意代碼分析檢測問題,本發(fā)明提出了一種基于動態(tài)語義特征的惡意代碼分析檢測方法。在對代碼進(jìn)行動態(tài)執(zhí)行并監(jiān)測其運(yùn)行過程之后,可以得到以下特征:API名稱、API參數(shù)名稱、API參數(shù)值。本發(fā)明主要利用提取出的API名稱對惡意代碼進(jìn)行檢測。
[0007]本發(fā)明采用的技術(shù)方案如下:
[0008]一種基于動態(tài)語義特征的惡意代碼分析檢測方法,其步驟包括:[0009]1)將惡意樣本庫中任意一個(gè)待檢測代碼動態(tài)運(yùn)行于虛擬環(huán)境之中,同時(shí)監(jiān)測其運(yùn)行過程,并提取出原始特征;
[0010]2)根據(jù)提取出的原始特征篩選出能代表該待檢測代碼語義特征的API名稱信息;
[0011]3)根據(jù)篩選出的API名稱信息建立代表該待檢測代碼語義特征的數(shù)學(xué)模型,得到API序列語義特征集合;
[0012]4)從所有待檢測代碼的API序列語義特征集合中選取具有代表性的語義特征建立語義特征庫;
[0013]5)將待檢測代碼的語義特征集合與所述語義特征庫進(jìn)行相似性檢測,從而得出檢測結(jié)果,即待檢測代碼是良性代碼或惡意代碼。
[0014]更進(jìn)一步,提取出的原始特征包含的無關(guān)信息與所采用的提取方法、提取工具有關(guān),對原始特征進(jìn)行篩選指去除包括線程號、返回值、API調(diào)用參數(shù)值等在內(nèi)的信息,原始特征經(jīng)過篩選后所得的僅為該代碼執(zhí)行過程中調(diào)用的所有API的名稱序列。
[0015]更進(jìn)一步,每一個(gè)代碼的語義特征數(shù)學(xué)模型,即API序列語義特征集合,其構(gòu)成元素為多個(gè)依次相鄰的API名稱。
[0016]更進(jìn)一步,建立語義特征庫選取的具有代表性的語義特征,其代表性體現(xiàn)在集合元素在該集合中出現(xiàn)的頻次上,即該元素在集合中出現(xiàn)得越多,認(rèn)為越具有代表性。
[0017]更進(jìn)一步,對所述的API序列語義特征集合的構(gòu)造方法如下:
[0018]對監(jiān)測代碼動態(tài)運(yùn)行所得的原始特征進(jìn)行初步處理,得到API調(diào)用名稱序列,該序列中任意的k個(gè)相鄰的API都被當(dāng)做一個(gè)元素,k的取值為正整數(shù),所有這樣的元素構(gòu)成該代碼的API序列語義特征集合。
[0019]更進(jìn)一步,所述的語義特征庫的構(gòu)造方法如下:
[0020]從已有的API序列語義特征集合中,選取出出現(xiàn)得較多的元素,所有這些元素共同構(gòu)成了語義特征庫,語義特征庫中每一個(gè)元素需要滿足的條件是組成該元素的API名稱個(gè)數(shù)為固定值,即k為固定值。
[0021]更進(jìn)一步,所述檢測方法中待測樣本(即待檢測代碼)的語義特征集合選取如下:
[0022]根據(jù)某一語義特征庫來檢測待測樣本時(shí),待測樣本的語義特征集合中的元素若存在于該語義特征庫內(nèi),則檢測中該元素起到區(qū)分作用,否則該元素不起作用。
[0023]更進(jìn)一步,上述檢測方法中待測樣本(即待檢測代碼)的語義特征集合可通過如下方法構(gòu)造:
[0024]當(dāng)選定語義特征庫時(shí),待測樣本的語義特征集合中僅包含既出現(xiàn)在語義特征庫中又出現(xiàn)在該樣本代碼的API名稱序列中的元素。
[0025]本發(fā)明的有益效果:
[0026]1.本發(fā)明根據(jù)不同的樣本可以建立不同的語義特征,具有很好的普適性。
[0027]2.本發(fā)明基于代碼語義特征,對代碼進(jìn)行動態(tài)監(jiān)測,提取代碼的API序列特征,建立語義特征庫。
[0028]3.本發(fā)明考慮到了 API序列語義特征的特點(diǎn),針對API序列語義特征量大的問題,提出了選取具有代表性特征的方法,即選取出現(xiàn)頻次高的特征。
[0029]綜上,本發(fā)明提出的惡意代碼語義特征分析檢測方法,能夠較準(zhǔn)確地表示代碼的語義特征,對惡意代碼的分析檢測更加準(zhǔn)確、檢測成本更低?!緦@綀D】
【附圖說明】
[0030]圖1為惡意代碼語義特征分析檢測方法的流程示意圖。
【具體實(shí)施方式】
[0031]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,可以理解的是,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0032]實(shí)現(xiàn)本發(fā)明的一種【具體實(shí)施方式】如下,基于語義特征的惡意代碼分析檢測方法,其步驟為:
[0033]1)收集構(gòu)建語義特征數(shù)據(jù)庫所需的代碼樣本,并為動態(tài)運(yùn)行惡意代碼構(gòu)建虛擬環(huán)境;
[0034]2)從上述搜集到的樣本中選取樣本,使其在虛擬環(huán)境中運(yùn)行,并監(jiān)測其運(yùn)行過程,提取原始特征;
[0035]3)對監(jiān)測代碼動態(tài)運(yùn)行所得的原始特征進(jìn)行篩選,篩選出能代表該代碼語義特征的所有API名稱信息;
[0036]4)根據(jù)上述的API名稱信息得出API序列語義特征集合,將API名稱序列中相鄰的多個(gè)API名稱合并為同一個(gè)元素,該元素即為API序列語義特征集合中的元素;
[0037]5)利用API序列語義特征集合具有相同長度的元素構(gòu)造語義特征庫,這些元素是在相同長度元素中出現(xiàn)頻率較大的元素;
[0038]6)基于已有的語義特征庫`,使用相似性檢測對待測樣本進(jìn)行檢測,從而判斷其是否為惡意代碼。
[0039]在本發(fā)明的一實(shí)施例中,代碼樣本指良性代碼與惡意代碼,其中惡意代碼主要指現(xiàn)實(shí)中存在的惡意代碼,如惡意代碼源可以提供的惡意代碼,另外也指重新構(gòu)造的惡意代碼。
[0040]在本發(fā)明的一實(shí)施例中,虛擬環(huán)境指的是能保護(hù)主機(jī)避免惡意代碼運(yùn)行帶來的破壞的虛擬機(jī),此處采用的虛擬機(jī)技術(shù)包括VirtualBox、VMWare、Xen等采用的技術(shù)。
[0041]在本發(fā)明的一實(shí)施例中,監(jiān)測虛擬環(huán)境中運(yùn)行的代碼,使用第三方監(jiān)測工具,如API Monitor,對動態(tài)運(yùn)行的代碼進(jìn)行實(shí)時(shí)監(jiān)測,從而提取出原始特征。
[0042]在本發(fā)明的一實(shí)施例中,篩選原始特征是指對上述原始特征進(jìn)行的處理,篩選的進(jìn)行依賴于原始特征的形式,如果原始特征僅包含代碼運(yùn)行過程中調(diào)用的API名稱序列信息,則不用進(jìn)行篩選,否則篩選原始特征,去除非API名稱的信息。
[0043]在本發(fā)明的一實(shí)施例中,某代碼被監(jiān)測得到的么?1名稱序列信息為“^廣人,其中^((KKn+Li為整數(shù))為某API名稱,則API序列語義特征集合中的元素形如AiA2A3,AiAi+1,其中前者為3個(gè)相鄰API組成的語義特征,后者為2個(gè)相鄰API組成的語義特征,本實(shí)施例中只需要使用3個(gè)相鄰API組成的語義特征。
[0044]在本發(fā)明的一實(shí)施例中,根據(jù)API序列語義特征集合構(gòu)造的語義特征庫,使用的API序列語義特征元素均由相同數(shù)量的API組成,在本實(shí)施例數(shù)量為3,則語義特征庫中的元素形如A^AiAi+i。[0045]在本發(fā)明的一實(shí)施例中,語義特征庫中的語義特征均為有代表性的語義特征,有代表性指的是能代表代碼的良性或者惡意性,對于一個(gè)代碼運(yùn)行過程中產(chǎn)生的諸多API序列語義特征,出現(xiàn)次數(shù)越高,更準(zhǔn)確地說,出現(xiàn)概率越大的API序列語義特征,被認(rèn)為越具有代表性。所述的概率越大,比較對象為具有相同API名稱數(shù)目的語義特征,即含3個(gè)API名稱的元素僅與含3個(gè)API名稱的元素作比較。
[0046]在本發(fā)明的一實(shí)施例中,選取的具有代表性的語義特征元素,其出現(xiàn)概率均達(dá)到了 0.01,本概率的計(jì)算分子為該元素總共出現(xiàn)的次數(shù),分母為所有具有3個(gè)相鄰API名稱的元素的個(gè)數(shù)。
[0047]在本發(fā)明的一實(shí)施例中,相似性檢測過程使用的工具為Weka,使用了機(jī)器學(xué)習(xí)方法,分類器采用的是決策樹J48。
[0048]圖1是上述基于語義特征的惡意代碼分析檢測方法的流程示意圖,對其各步驟詳細(xì)說明如下:
[0049]1.提取代碼樣本的原始特征。
[0050]代碼樣本首先分為良性樣本和惡意性樣本,其中良性樣本可以選取正規(guī)廠商開發(fā)的應(yīng)用程序,惡意性樣本可以從反病毒廠商或者網(wǎng)絡(luò)上的惡意代碼庫獲取。提取代碼語義特征的前提是動態(tài)執(zhí)行該代碼,而為了避免惡意代碼執(zhí)行造成的破壞,需要構(gòu)建虛擬環(huán)境。虛擬機(jī)環(huán)境可以有效防止虛擬機(jī)中運(yùn)行的惡意代碼對主機(jī)(host)造成破壞,同時(shí)通過快照功能還具有快速恢復(fù)的能力。在虛擬機(jī)中通過使用第三方工具直接監(jiān)測代碼的運(yùn)行過程,獲取代碼運(yùn)行過程中產(chǎn)生的原始特征。
[0051]2.對原始特征進(jìn)行預(yù)處理,篩選API名稱信息。
[0052]通常第三方工具在監(jiān)測代碼運(yùn)行過程時(shí)獲取的原始特征會包含較多信息,且這些信息并不是都具有語義性質(zhì),如監(jiān)測執(zhí)行API時(shí),原始特征中可能會包含有API序號。所以原始特征需要經(jīng)過預(yù)處理,去除以下信息:API序號、API調(diào)用時(shí)間、API調(diào)用時(shí)長、API調(diào)用參數(shù)值等,以上信息根據(jù)使用的第三方工具不同而有所變化,最終篩選得到的結(jié)果應(yīng)該是代碼執(zhí)行產(chǎn)生的API調(diào)用名稱序列。
[0053]3.對API名稱信息進(jìn)行數(shù)學(xué)建模,得到語義特征集合。
[0054]因?yàn)椴煌腁PI能夠?qū)崿F(xiàn)不同的行為,也即表達(dá)了代碼的不同語義,對API調(diào)用名稱序列進(jìn)行數(shù)學(xué)建模,即對該序列進(jìn)行語義分段。將某代碼的API調(diào)用名稱序列分為一小段一小段的語義特征,這些特征形如..Ai+k (i, k均為正整數(shù)),這里的AJP為某個(gè)API調(diào)用,取自API調(diào)用名稱序列。實(shí)際根據(jù)構(gòu)造語義特征庫的需要,對k取一固定值即可,如3,那么所有的語義特征集合中的元素均為由3個(gè)相鄰的API名稱構(gòu)成的。
[0055]4.從相同長度的語義特征中選取有代表性的語義特征,建立語義特征庫。
[0056]由于單個(gè)代碼在運(yùn)行過程中就會產(chǎn)生成百上千個(gè)API調(diào)用,所以單個(gè)代碼的語義特征集合中的元素?cái)?shù)量也是相當(dāng)大的。構(gòu)建語義特征庫,既要保證語義特征不局限在幾個(gè)代碼上,又要保證該特征庫規(guī)模適中。所以最初選取樣本時(shí)需要選擇較多樣本,而由此帶來的大量語義特征需要進(jìn)過處理,選取出其中的具有代表性的特征,即該語義特征能較大程度上反映原代碼的惡意性或者良性。
[0057]對于每一個(gè)代碼產(chǎn)生的語義特征集合,選擇其中語義特征出現(xiàn)概率大于0.01的語義特征,將所有這類特征放入語義特征庫。以上0.01的選取可以根據(jù)實(shí)際檢測效果進(jìn)行調(diào)整。
[0058]5.根據(jù)已有的語義特征庫對待測樣本進(jìn)行相似性檢測,判斷樣本是否為惡意代碼。
[0059]當(dāng)需要對一個(gè)待測樣本進(jìn)行惡意性檢測時(shí),先將其放入虛擬環(huán)境中監(jiān)測其原始特征,并根據(jù)語義特征庫構(gòu)造其語義特征集合,該集合中的元素需要滿足的條件是構(gòu)成該元素的API數(shù)量應(yīng)與語義特征庫中元素的構(gòu)成API數(shù)量相等。之后對集合中元素進(jìn)行篩選,將其中同時(shí)也出現(xiàn)在語義特征庫中的元素用于相似性檢測,其他元素直接去除,因?yàn)檫@一部分元素被認(rèn)為不具有代表性。
[0060]相似性檢測使用的是機(jī)器學(xué)習(xí)方法,可以使用的分類器包括決策樹、K近鄰、樸素貝葉斯及貝葉斯網(wǎng)絡(luò)、支持向量機(jī)等。通過調(diào)整分類器的配置參數(shù),可以調(diào)整檢測效果,使檢測率更高。
[0061]實(shí)驗(yàn)結(jié)果:
[0062]
【權(quán)利要求】
1.一種基于動態(tài)語義特征的惡意代碼分析檢測方法,其步驟包括:1)將惡意樣本庫中任意一個(gè)待檢測代碼動態(tài)運(yùn)行于虛擬環(huán)境之中,同時(shí)監(jiān)測其運(yùn)行過程,并提取出原始特征;2)根據(jù)提取出的原始特征篩選出能代表該待檢測代碼語義特征的API名稱信息;3)根據(jù)篩選出的API名稱信息建立代表該待檢測代碼語義特征的數(shù)學(xué)模型,得到API序列語義特征集合;4)從所有待檢測代碼的API序列語義特征集合中選取具有代表性的語義特征建立語義特征庫;5)將待檢測代碼的語義特征集合與所述語義特征庫進(jìn)行相似性檢測,從而得出檢測結(jié)果,即待檢測代碼是良性代碼或惡意代碼。
2.如權(quán)利要求1所述的方法,其特征在于,對原始特征進(jìn)行篩選包括去除如下信息:線程號、返回值、API調(diào)用參數(shù)值,篩選后得到該代碼執(zhí)行過程中調(diào)用的所有API的名稱序列。
3.如權(quán)利要求1所述的方法,其特征在于:每一個(gè)代碼的API序列語義特征集合,其構(gòu)成元素為多個(gè)依次相鄰的API名稱。
4.如權(quán)利要求3所述的方法,其特征在于,所述API序列語義特征集合的構(gòu)造方法是:對監(jiān)測代碼動態(tài)運(yùn)行所得的原始特征進(jìn)行初步處理,得到API調(diào)用名稱序列,該序列中任意的k個(gè)相鄰的API都被當(dāng)做一個(gè)元素,k的取值為正整數(shù),所有這樣的元素構(gòu)成該代碼的API序列語義特征集合。
5.如權(quán)利要求1所述的方法,其特征在于:所述具有代表性的語義特征,其代表性體現(xiàn)在集合元素在該集合中出現(xiàn)的頻次,即該元素在集合中出現(xiàn)得越多,則越具有代表性。
6.如權(quán)利要求5所述的方法,其特征在于,所述的語義特征庫的構(gòu)造方法是:從已有的API序列語義特征集合中選取出現(xiàn)得較多的元素,所有這些元素共同構(gòu)成語義特征庫,語義特征庫中組成每一個(gè)元素的API名稱個(gè)數(shù)為固定值。
7.如權(quán)利要求1所述的方法,其特征在于:根據(jù)某一語義特征庫檢測待測樣本時(shí),待測樣本的語義特征集合中的元素若存在于該語義特征庫內(nèi),則檢測中該元素起到區(qū)分作用,否則該元素不起作用。
8.如權(quán)利要求1所述的方法,其特征在于,所述待檢測代碼的語義特征集合的構(gòu)造方法是:當(dāng)選定語義特征庫時(shí),待測樣本的語義特征集合中僅包含既出現(xiàn)在語義特征庫中又出現(xiàn)在該樣本代碼的API名稱序列中的元素。
9.如權(quán)利要求1所述的方法,其特征在于:采用虛擬機(jī)技術(shù)構(gòu)建所述虛擬環(huán)境,使用第三方監(jiān)測工具對虛擬環(huán)境中動態(tài)運(yùn)行的代碼進(jìn)行實(shí)時(shí)監(jiān)測,從而提取出原始特征。
10.如權(quán)利要求1所述的方法,其特征在于,使用機(jī)器學(xué)習(xí)方法進(jìn)行所述相似性檢測,采用的分類器為下列中的一種:決策樹、K近鄰、樸素貝葉斯及貝葉斯網(wǎng)絡(luò)、支持向量機(jī)。
【文檔編號】G06F21/56GK103679030SQ201310682922
【公開日】2014年3月26日 申請日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】賈曉啟, 李盟, 王蕊 申請人:中國科學(xué)院信息工程研究所