欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于軟件控制流特征的計算機惡意軟件檢測新方法

文檔序號:6399975閱讀:1599來源:國知局

專利名稱::基于軟件控制流特征的計算機惡意軟件檢測新方法
技術(shù)領(lǐng)域
:本發(fā)明涉及計算機信息安全中的惡意軟件的檢測方法,特別是對于惡意軟件設(shè)計者采用模糊和多態(tài)技術(shù)來隱藏代碼外部信息和局部特征時,其檢測結(jié)果具有良好的穩(wěn)定性的惡意軟件檢測方法。
背景技術(shù)
:隨著計算機科學在社會各個領(lǐng)域的廣泛應(yīng)用,計算機軟件的安全問題受到人們越來越多的關(guān)注。建立可信的軟件系統(tǒng)成為維護計算機信息安全的一種有效手段,對于惡意軟件的檢測成為軟件可信性分析的核心研究方向。傳統(tǒng)的基于特征碼的檢測方式需要通過專用數(shù)據(jù)庫來更新和維護事先提取相關(guān)特征碼,通過掃描引擎查找軟件的局部信息,并使用字符串匹配方法來對比這些信息和特征碼的相似度,根據(jù)對比結(jié)果來得出檢測結(jié)論。這種檢測方法被廣泛應(yīng)用于現(xiàn)有的殺毒軟件和系統(tǒng)防護軟件中,屬于比較成熟的技術(shù),現(xiàn)在開發(fā)重點主要集中在提高代碼的掃描速度和特征碼提取的準確度。近年來提出的非特征碼惡意軟件檢測方法中,有些是采用啟發(fā)式分析或是基于軟件行為來判斷正常軟件和惡意軟件,這些方法在沒有軟件先驗信息的情況下,對zero-day惡意軟件有一定的檢測效果。還有一些研究是通過在軟件特殊結(jié)構(gòu)屬性信息來分類軟件,比如通過提取PE文件的頭部信息進行對比分類,在正常運行環(huán)境也取得了不錯的檢測結(jié)果。這些方法都是通過對軟件的局部信息挖掘,期望得到能夠?qū)④浖_分類的指標集,然后用指標集檢測軟件。上述的惡意軟件檢測方法分別存在以下問題:第一,基于特征碼的檢測方法需要獲得惡意軟件的特征碼,并將不斷增加的特征碼到用戶端的數(shù)據(jù)庫,對日益龐大的數(shù)據(jù)庫維護成為使用者付出的代價。該檢測方法最大的缺點是難以檢測未知的惡意軟件,用戶不能夠及時處理新的安全威脅。第二,采用啟發(fā)式分析或是基于軟件行為檢測方法是通過獲得代碼的特殊局部信息對軟件進行分類,但是對于使用模糊和多態(tài)的惡意軟件,這種局部特征往往不固定,因此該檢測方法在判斷這些惡意軟件時準確率不夠。第三,使用標準格式信息來區(qū)分軟件的檢測方法,利用的是軟件的外部描述信息,這些信息大多不直接涉及軟件的行為,對于熟悉該方法的惡意軟件設(shè)計者,能夠通過對格式信息的特殊處理來大幅度降低該方法的檢測效果。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種識別準確率高、檢測結(jié)果穩(wěn)定性好的基于軟件控制流特征的惡意軟件檢測方法。本發(fā)明的目的是這樣實現(xiàn)的:一種基于軟件控制流特征的惡意軟件檢測方法,包含4個主要步驟:I)對PE格式文件即PortableExecutables格式文件進行反匯編:采用遞歸下降算法來處理文件,以有效區(qū)分指令和數(shù)據(jù),并采用基于x86匯編指令集創(chuàng)建指令序列;2)根據(jù)控制流選擇代碼的基本塊軟件控制流是指反匯編代碼中的基本塊所形成的控制流結(jié)構(gòu);基本塊是由若干虛擬地址連續(xù)的指令組成,它的特點是只有一個入口地址和一個出口地址,即這些指令執(zhí)行時要么都不執(zhí)行,要么按地址依次全部執(zhí)行;基本塊的構(gòu)成采用斷點判別法來實現(xiàn),即首先確定整個軟件代碼序列中的斷點地址,在相鄰斷點地址之間的指令序列則形成一個基本塊;3)軟件特征表示和篩選將軟件代碼序列中的基本塊作為代表軟件的特征類型,采用布爾型向量來表達軟件特征:統(tǒng)計軟件樣本中出現(xiàn)的所有η個基本塊并編號分別為(0,1,2,…,η-1),所有軟件使用一個η維的布爾向量來表不,當軟件包含編號為i的基本塊時,向量的第i+Ι表不為1,否則表示為O;并通過軟件特征在文件中出現(xiàn)的頻率來篩選特征,最優(yōu)先的選擇區(qū)間為,其中m是所有樣本中不同特征的數(shù)量;4)通過數(shù)據(jù)挖掘算法判斷惡意軟件和正常軟件:4.1)通過數(shù)據(jù)挖掘算法產(chǎn)生訓練集結(jié)果:該過程是生成訓練集結(jié)果和判斷規(guī)則的過程;首先對大量的正常軟件和惡意代碼樣本進行處理,樣本文件按前面的特征表示與篩選生成的數(shù)據(jù)集作為輸入,通過機器學習過程,在以下選用的數(shù)據(jù)挖掘算法中得到訓練集結(jié)果;數(shù)據(jù)挖掘算法采用基于決策樹的C4.5算法,基于RandomForest的分類算法和貝葉斯分類算法中的基于Bagging算法之一種;并按mfold交叉驗證產(chǎn)生分類規(guī)則;訓練集結(jié)果產(chǎn)生的這些分類規(guī)則作為之后檢測PE文件的依據(jù);mfold交叉驗證:在對文件進行分類時,將所有文件按隨機方式平均分為m份,將其中m-Ι份作為機器學習的材料,而另外I份作為測試目標,這樣進行m次,使每一份都能得到測試;4.2)產(chǎn)生測試結(jié)果:對于被測試的PE文件,經(jīng)過提取與前面過程中相同的控制流特征后,將這些特征使用布爾型向量表示并使用arff記錄文件存儲這些數(shù)據(jù);這些記錄文件作為輸入,利用上述訓練集結(jié)果就得到測試結(jié)果。所述斷點地址的判斷原則是出現(xiàn)跳轉(zhuǎn)指令,或者,該地址為跳轉(zhuǎn)指令的目標地址或調(diào)用指令的目標地址。本發(fā)明針對傳統(tǒng)惡意軟件檢測方法中偏重于軟件的局部或外部特征,對使用模糊和多態(tài)技術(shù)惡意軟件檢測效率不穩(wěn)定的缺點,提出利用軟件控制流反映出的語法結(jié)構(gòu)和語義信息來發(fā)掘軟件的行為特征,并使用向量空間模型描述這些信息,通過指標分析和數(shù)據(jù)挖掘來實現(xiàn)惡意軟件檢測。本發(fā)明的有益效果是:1、本發(fā)明解決的關(guān)鍵問題在于:創(chuàng)新性的利用軟件控制流結(jié)構(gòu)中的指令序列來判斷軟件行為,通過序列頻率區(qū)域選取部分信息作為軟件特征,然后利用數(shù)據(jù)挖掘的分類算法對樣本處理得到軟件分類的判斷規(guī)則,從而進行惡意軟件檢測。2、現(xiàn)有通過人工分析提取軟件特征碼的方法,在效率和對未知病毒的檢測性能方面都存在不足。本發(fā)明提出能夠靜態(tài)分析二進制文件的控制流結(jié)構(gòu),自動提取操作碼序列,并利用空間向量模型將序列轉(zhuǎn)為結(jié)構(gòu)化信息,這些信息經(jīng)過篩選后作為文件的特征集。使用數(shù)據(jù)挖掘的方法從大量特征集中發(fā)現(xiàn)軟件分類的規(guī)則,并將其用于惡意軟件的檢測。本發(fā)明對于PortableExecutables(PE)文件中反匯編代碼中的控制流,通過提取指令序列信息來檢測惡意軟件。該方法主要過程分三步:①通過反匯編代碼中的基本塊獲得軟件指令序列,②將軟件指令序列信息轉(zhuǎn)換成軟件特征指標,③通過有效的數(shù)據(jù)挖掘算法分類惡意軟件和正常軟件?;谲浖刂屏鞯膼阂廛浖z測方法,不但能夠有效的檢測出普通zero-day惡意軟件,而且對于采用模糊和多態(tài)技術(shù)的惡意軟件同樣有較好的檢測結(jié)果,對于蓄意攻擊也保持良好的穩(wěn)定性。圖1是基于軟件控制流特征的惡意軟件檢測方法的模型框圖。具體實施例方式參見圖1,本發(fā)明包含以下4個步驟:1、對PE格式文件進行反匯編;2、根據(jù)控制流選擇代碼基本塊;3、軟件特征表示與篩選;4、通過分類算法判斷惡意軟件和正常軟件;具體步驟如下:I)對PE格式文件進行反匯編:我們處理的對象是PE格式的文件,主要數(shù)據(jù)是這些文件反匯編后得到的代碼,因此反匯編的質(zhì)量關(guān)系到數(shù)據(jù)的準確性,在本模型中采用遞歸下降算法來處理文件,這種算法的好處是能夠有效的區(qū)分指令和數(shù)據(jù),提高可信賴的結(jié)果。由于不同編譯器生成的函數(shù)調(diào)用指令存在差異,我們采用基于x86匯編指令集創(chuàng)建指令序列。2)選擇代碼的基本塊軟件控制流在不同層次上的表現(xiàn)也各不相同,本方法使用的控制流是指反匯編代碼中的基本塊所形成的控制流結(jié)構(gòu)。基本塊是由若干虛擬地址連續(xù)的指令組成,它的特點是只有一個入口地址和一個出口地址,即這些指令執(zhí)行時要么都不執(zhí)行,要么按地址依次全部執(zhí)行?;緣K的構(gòu)成采用斷點判別法來實現(xiàn),即首先確定整個軟件代碼序列中的斷點指令地址,在相鄰斷點之間的指令序列則形成一個基本塊。斷點地址由兩種情況,一種是出現(xiàn)跳轉(zhuǎn)指令,如jmp,ja,jae,jb,jbe,jc,jcxz,jecxz,je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,jno,jnp,jnp,jns,jnz,jo,p,jpe,jpo,js,jz,retn等,另一種情況該地址被其它指令調(diào)用,即前面所述跳轉(zhuǎn)指令的目標地址,也包括call調(diào)用的目標地址。3)軟件特征表示和篩選代碼中的基本塊作為代表軟件的特征類型,本方法采用布爾型數(shù)值來表達軟件特征。具體方法是統(tǒng)計軟件樣本中出現(xiàn)的所有η個基本塊并編號分別為(0,1,2,...,n-1),所有軟件使用一個η維的布爾向量來表示,當軟件包含編號為i的基本塊時,向量的第i+Ι表示為1,否則表示為O。通過特征在文件中出現(xiàn)的頻率來篩選特征。閾值設(shè)置要綜合考慮特征的區(qū)分度以及有效性,如果設(shè)置過大,表示在絕大多數(shù)程序中都出現(xiàn)過,就不能很好的區(qū)分程序;如果設(shè)置過小,表示只會出現(xiàn)在極少程序中,很難在其它程序找到這些序列,把它們作為特征時對于其它程序的檢測很可能沒有用處。本方法保留Xi在區(qū)間的軟件特征,其中,Xi代表包含第i個序列文件數(shù)量,m是所有樣本文件中不同特征的數(shù)量。4)通過數(shù)據(jù)挖掘算法判斷惡意軟件和正常軟件:4.1)通過分類算法產(chǎn)生訓練集結(jié)果:該過程是生成訓練集結(jié)果和判斷規(guī)則的過程;首先對大量的正常軟件和惡意代碼樣本進行處理,樣本文件按前面的特征表示與篩選生成的數(shù)據(jù)集作為輸入,通過機器學習過程,在選用的數(shù)據(jù)挖掘算法中得到訓練集結(jié)果;上述數(shù)據(jù)挖掘算法采用基于決策樹的C4.5算法,基于RandomForest的分類算法和貝葉斯分類算法中的基于Bagging算法之一種;并按mfold交叉驗證產(chǎn)生分類規(guī)則;訓練集結(jié)果產(chǎn)生的這些分類規(guī)則作為之后檢測PE文件的依據(jù);mfold交叉驗證:在對文件進行分類時,將所有文件按隨機方式平均分為m份,將其中m-Ι份作為機器學習的材料,而另外I份作為測試目標,這樣進行m次,使每一份都能得到測試;4.2)產(chǎn)生測試結(jié)果:對于被測試的PE文件,經(jīng)過提取與前面過程中相同的控制流特征后,將這些特征使用布爾型向量表示并使用arff記錄文件存儲這些數(shù)據(jù);這些記錄文件作為輸入,利用上述訓練集結(jié)果就得到測試結(jié)果。本發(fā)明的具體描述如下:(I)檢測模型及基本思想基于軟件控制流特征的惡意軟件檢測方法處理的對象主要是PE格式的正常軟件和惡意軟件。該方法是一種靜態(tài)的分析方法,無需真正運行被檢測的軟件,只是將其進行反匯編處理,得到軟件的反匯編指令序列,然后將這些序列處理后作為軟件特征,進而識別惡意軟件。新檢測方法使用的模型如圖1所示,該模型分為2個階段,第一個階段數(shù)據(jù)訓練階段,包括反匯編、序列選擇、特征篩選和機器學習4個步驟;第二個階段軟件檢測階段,包括反匯編,序列選擇和惡意軟件檢測3個步驟。我們處理的對象是PE格式的文件,主要數(shù)據(jù)是這些文件反匯編后得到的代碼,因此反匯編的質(zhì)量關(guān)系到數(shù)據(jù)的準確性,在本模型中采用遞歸下降算法來處理文件,這種算法的好處是能夠有效的區(qū)分指令和數(shù)據(jù),提高可信賴的結(jié)果。由于不同編譯器生成的函數(shù)調(diào)用指令存在差異,我們采用基于x86匯編指令集創(chuàng)建指令序列。軟件控制流在不同層次上的表現(xiàn)也各不相同,本方法使用的控制流是指反匯編代碼中的基本塊所形成的控制流結(jié)構(gòu)。基本塊是由若干虛擬地址連續(xù)的指令組成,它的特點是只有一個入口地址和一個出口地址,即這些指令執(zhí)行時要么都不執(zhí)行,要么按地址依次全部執(zhí)行?;緣K的構(gòu)成采用斷點判別法來實現(xiàn),即首先確定整個軟件代碼序列中的斷點指令地址,在相鄰斷點之間的指令序列則形成一個基本塊。斷點地址由兩種情況,一種是出現(xiàn)跳轉(zhuǎn)指令,如jmp,ja,jae,jb,jbe,jc,jcxz,jecxz,je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,jno,jnp,jnp,jns,jnz,jo,p,jpe,jpo,js,jz,retn等,另一種情況該地址被其它指令調(diào)用,即前面所述跳轉(zhuǎn)指令的目標地址,也包括call調(diào)用的目標地址。軟件基本塊的形成算法如下所示:方法:軟件基本塊的形成方法。輸入:■反匯編后的代碼序列F輸出:■基本塊集合BlockList方法:首先定義斷點地址,通過對遍歷輸入的代碼序列,標注出序列之間的斷點地址,然后相鄰斷點地址之間的指令序列形成一個基本塊;調(diào)用CreateBlocks(FileasmFile);procedurePatternsMining(inputFile);(I)BlockList—0;//BlockList為特征集合(2)repeat(3)if該地址中操作符是跳轉(zhuǎn)指令:a)標記該地址為斷點b)標記跳轉(zhuǎn)的目標地址為斷點(4)if該地址是函數(shù)調(diào)用的入口地址a)標記該地址為斷點(5)if該地址是斷點地址:a)將該地址和上一個斷點地址之間的操作碼作為基本塊并加入BlockList(包含該地址但不包括上個斷點地址中的操作碼)(6)until遍歷反匯編操作碼(7)returnBlockList;軟件基本塊作為代表軟件的特征類型,本方法采用布爾型數(shù)值來表達軟件特征。具體方法是統(tǒng)計軟件樣本中出現(xiàn)的所有η個基本塊并編號分別為(0,1,2,…,η-1),所有軟件使用一個η維的布爾向量來表示,當軟件包含編號為i的基本塊時,向量的第i+Ι為表示為I,否則表示為O。隨著軟件數(shù)量的增加,代碼中基本塊的數(shù)量也急劇增多,以及由此表現(xiàn)的軟件特征數(shù)量也相應(yīng)增加,因此需要對特征進行篩選,挑選出少量有效的軟件特征。在我們的特征篩選方法中,通過特征在文件中出現(xiàn)的頻率來篩選特征。閾值設(shè)置要綜合考慮特征的區(qū)分度以及有效性,如果設(shè)置過大,表示在絕大多數(shù)程序中都出現(xiàn)過,就不能很好的區(qū)分程序;如果設(shè)置過小,表示只會出現(xiàn)在極少程序中,很難在其它程序找到這些序列,把它們作為特征時對于其它程序的檢測很可能沒有用處。本方法保留Xi在區(qū)間的軟件特征,其中,Xi代表包含第i個序列文件數(shù)量,m是所有樣本文件中不同特征的數(shù)量。機器學習過程中,我們使用了3種分類算法,分別是判定樹算法C4.5、Bagging和RandomForest算法。C4.5使用信息增益比率選擇最優(yōu)屬性來劃分數(shù)據(jù)集,直到滿足一定的條件。Bagging算法是用來提高分類器穩(wěn)定性和精度的一種元分類算法,它產(chǎn)生多個分類器并使用多數(shù)投票的方式?jīng)Q定最終的分類結(jié)果。RandomForest通過引導過程建立多個分類器,每個分類器的學習樣本是隨機產(chǎn)生的,RandomForest還將隨機性加入到每棵樹的生成過程之中。設(shè)樣本共有Q個屬性,事先給定q〈Q(q通常取Q的平方根),在選擇每個結(jié)點的分裂屬性時,從全體特征中隨機選擇q個進行比較,選擇其中分類結(jié)果較好的屬性進行分裂。惡意軟件的檢測結(jié)果是和分類器的性能密切相關(guān)的,如果采用適當?shù)姆诸惼髟u估方法,就可以使得分類器性能與未知病毒檢測能力兩者達到一致。我們將分類器的truepositiverate表不為病毒識別率,falsepositiverate表不為虛警率,而overallaccuracy表示為總體識別率。惡意軟件檢測階段則是根據(jù)特征篩選的結(jié)果提取性質(zhì)未知軟件的相應(yīng)基本塊作為軟件特征,利用建立好的分類器對其進行分類,分類結(jié)果即為檢測結(jié)果。最后,由表I給出本發(fā)明方法與傳統(tǒng)的基于特征碼模式、最新的局部信息挖掘模式方法之間的簡要對比與總結(jié)。表I本發(fā)明方法與傳統(tǒng)方法間的對比總結(jié)權(quán)利要求1.一種基于軟件控制流特征的惡意軟件檢測方法,其特征是:包含4個主要步驟:1)對PE格式文件即PortableExecutables格式文件進行反匯編:采用遞歸下降算法來處理文件,以有效區(qū)分指令和數(shù)據(jù),并采用基于x86匯編指令集創(chuàng)建指令序列;2)根據(jù)控制流選擇代碼的基本塊:軟件控制流是指反匯編代碼中的基本塊所形成的控制流結(jié)構(gòu);基本塊是由若干虛擬地址連續(xù)的指令組成,它的特點是只有一個入口地址和一個出口地址,即這些指令執(zhí)行時要么都不執(zhí)行,要么按地址依次全部執(zhí)行;基本塊的構(gòu)成采用斷點判別法來實現(xiàn),即首先確定整個軟件代碼序列中的斷點地址,在相鄰斷點地址之間的指令序列則形成一個基本塊;3)軟件特征表示和篩選:將軟件代碼序列中的基本塊作為代表軟件的特征類型,采用布爾型向量來表達軟件特征:統(tǒng)計軟件樣本中出現(xiàn)的所有η個基本塊并編號分別為(O,1,2,...,n-1),所有軟件使用一個η維的布爾向量來表不,當軟件包含編號為i的基本塊時,向量的第i+Ι表不為1,否則表示為O;并通過軟件特征在文件中出現(xiàn)的頻率來篩選特征,最優(yōu)先的選擇區(qū)間為,其中m是所有樣本中不同特征的數(shù)量;4)通過數(shù)據(jù)挖掘算法判斷惡意軟件和正常軟件:4.1)通過數(shù)據(jù)挖掘算法產(chǎn)生訓練集結(jié)果:該過程是生成訓練集結(jié)果和判斷規(guī)則的過程;首先對大量的正常軟件和惡意代碼樣本進行處理,樣本文件按前面的特征表示與篩選生成的數(shù)據(jù)集作為輸入,通過機器學習過程,在以下選用的數(shù)據(jù)挖掘算法中得到訓練集結(jié)果;數(shù)據(jù)挖掘算法采用基于決策樹的C4.5算法,基于RandomForest的分類算法和貝葉斯分類算法中的基于Bagging算法之一種;并按mfold交叉驗證產(chǎn)生分類規(guī)則;訓練集結(jié)果產(chǎn)生的這些分類規(guī)則作為之后檢測PE文件的依據(jù);mfold交叉驗證:在對文件進行分類時,將所有文件按隨機方式平均分為m份,將其中m-Ι份作為機器學習的材料,而另外I份作為測試目標,這樣進行m次,使每一份都能得到測試;4.2)產(chǎn)生測試結(jié)果:對于被測試的PE文件,經(jīng)過提取與前面過程中相同的控制流特征后,將這些特征使用布爾型向量表示并使用arff記錄文件存儲這些數(shù)據(jù);這些記錄文件作為輸入,利用上述訓練集結(jié)果就得到測試結(jié)果。2.根據(jù)權(quán)利要求1所述的基于軟件控制流特征的惡意軟件檢測方法,其特征是:所述斷點地址的判斷原則是出現(xiàn)跳轉(zhuǎn)指令,或者,該地址為跳轉(zhuǎn)指令的目標地址或調(diào)用指令的目標地址。全文摘要一種基于軟件控制流特征的計算機惡意軟件檢測新方法,通過靜態(tài)分析二進制文件的控制流結(jié)構(gòu),自動提取操作碼序列,并利用空間向量模型將序列轉(zhuǎn)為結(jié)構(gòu)化信息,這些信息經(jīng)過篩選后作為文件的特征集,再使用數(shù)據(jù)挖掘的方法從大量特征集中發(fā)現(xiàn)軟件分類的規(guī)則,并將其用于惡意軟件的檢測。本發(fā)明不但能夠有效的檢測出普通zero-day惡意軟件,而且對于采用模糊和多態(tài)技術(shù)的惡意軟件同樣有較好的檢測結(jié)果,對于蓄意攻擊也保持良好的穩(wěn)定性。文檔編號G06F17/30GK103177215SQ20131006985公開日2013年6月26日申請日期2013年3月5日優(yōu)先權(quán)日2013年3月5日發(fā)明者李琪林,趙宗渠,王俊峰,肖杰,苗長勝,余明書,馮軍,屈鳴,白泰申請人:四川電力科學研究院,國家電網(wǎng)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
武邑县| 肥城市| 武乡县| 枝江市| 云安县| 宜宾县| 商都县| 循化| 莲花县| 张家川| 弥渡县| 五莲县| 浮山县| 且末县| 孟津县| 湘乡市| 岗巴县| 秦安县| 吉林省| 台东市| 漯河市| 彭水| 社会| 黄浦区| 明星| 米林县| 资兴市| 汤原县| 安远县| 琼中| 安义县| 多伦县| 北宁市| 连州市| 清流县| 黎城县| 松潘县| 桂阳县| 开鲁县| 禄丰县| 黑河市|