專利名稱:基于機器學習的程序識別方法及裝置的制作方法
技術領域:
本申請涉及計算機技術領域,特別是涉及一種基于機器學習的程序識別方法及裝置。
背景技術:
惡意程序是一類特殊的程序,它們通常在用戶不知曉也未授權的情況下潛入到用戶的計算機系統(tǒng)中,對用戶系統(tǒng)改進型攻擊。惡意程序可以包括病毒、后門程序、木馬程序、 宏病毒、引導區(qū)病毒、腳本病毒等。在查殺惡意病毒之前,首先要對惡意程序進行識別,以查殺病毒為例,現(xiàn)有技術中主要通過字符串特征碼和簡單的人工總結進行查殺,所查殺的病毒也均是已知的病毒,難以對新型病毒進行查殺。發(fā)明人在對現(xiàn)有技術的研究過程中發(fā)現(xiàn),現(xiàn)有技術基本上采用字符串特征碼和人工規(guī)則的啟發(fā)式通殺,這種識別惡意程序的方式嚴重依賴于病毒分析師的能力,需要分析師針對已有樣本進行人工分析,找出相應的特征,因此需要大量經(jīng)驗豐富的人員才能滿足解決問題的需求,并且由于技術復雜,人工處理的結果將導致效率低效;現(xiàn)有技術中只能處理已知的問題,不能對可能發(fā)生的問題進行防范,因此具有一定的滯后性;由于現(xiàn)有技術基于簡單的特征或規(guī)則進行查殺,因此很容易被病毒作者免殺。
發(fā)明內容
本申請實施例提供了一種基于機器學習的程序識別方法及裝置,以解決現(xiàn)有技術中在識別惡意程序時效率不高,具有滯后性的問題。為了解決上述技術問題,本申請實施例公開了如下技術方案一種基于機器學習的程序識別方法,包括分析輸入的未知程序,提取所述未知程序的特征;根據(jù)所提取的特征對所述未知程序進行粗分類;根據(jù)所述粗分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。當包括多個訓練模型時,所述將未知程序輸入已生成的訓練模型及相應的決策機中進行判斷包括將未知程序分別輸入一個或多個已生成的訓練模型及相應的決策機中進行判斷;根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對所述未知程序進行判斷的結果進行加權計算;所述輸出未知程序的識別結果具體為根據(jù)所述加權計算的結果輸出對所述位置程序的識別結果。還包括
4
輸入提取到的海量程序,所述海量程序中包括惡意程序和非惡意程序;從所輸入的每個程序中提取特征,并對所提取的特征進行分類;根據(jù)所述分類的結果,將不同類別的特征使用不同的決策機進行訓練,生成用于識別惡意程序的訓練模型或訓練模型集合。所述從所輸入的每個程序中提取特征包括分析每個程序文件,從所述程序文件中抽取預先定義的特征;根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。所述對所提取的特征進行分類具體為根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。所述不同的決策機使用相同或不同的方式對特征進行訓練,包括使用支持向量機的決策機進行訓練,或使用決策樹的決策機進行訓練。所述訓練模型為帶編碼的訓練模型、或壓縮的訓練模型。一種基于機器學習的程序識別裝置,包括提取單元,用于分析輸入的未知程序,提取所述未知程序的特征;分類單元,用于根據(jù)所提取的特征對所述未知程序進行粗分類;判斷單元,用于根據(jù)所述粗分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;輸出單元,用于輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。所述判斷單元包括程序輸入單元,用于當包括多個訓練模型時,將未知程序分別輸入多個已生成的訓練模型及相應的決策機中進行判斷;加權計算單元,用于根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對所述未知程序進行判斷的結果進行加權計算;所述輸出單元,具體用于根據(jù)所述加權計算的結果輸出對所述位置程序的識別結^ ο還包括輸入單元,用于輸入提取到的海量程序,所述海量程序中包括惡意程序和非惡意程序;提取單元,用于從所輸入的每個程序中提取特征;分類單元,用于對所提取的特征進行分類;生成單元,用于根據(jù)所述分類的結果,將不同類別的特征使用不同的決策機進行訓練,生成用于識別惡意程序的訓練模型或訓練模型集合。所述提取單元包括程序文件分析單元,用于分析每個程序文件,從所述程序文件中抽取預先定義的特征;向量屬性生成單元,用于根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。所述分類單元具體用于,根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。由上述實施例可以看出,本申請實施例在識別未知程序的類型時,提取未知程序的特征,并根據(jù)所提取的特征對未知程序進行分類,根據(jù)分類的結果,將未知程序輸入已生成的訓練模型及相應的決策機中進行判斷,輸出未知程序的識別結果。本申請采用機器學習技術,通過對大量程序樣本進行分析,得到識別惡意程序的模型,通過該模型的使用可以節(jié)省大量的人力,提高對惡意程序的識別效率;并且,在基于對海量程序進行數(shù)據(jù)挖掘的基礎上,可以發(fā)現(xiàn)程序的內在規(guī)律,對未發(fā)生的惡意程序進行預防,使得惡意程序難以被免
κΚ O
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請生成識別程序類型的模型的第一實施例流程圖;圖2A為本申請生成識別程序類型的模型的第二實施例流程圖;圖2B為本申請實施例生成識別程序類型的模型應用實例示意圖;圖3為本申請基于機器學習的程序識別方法的第一實施例流程圖;圖4A為本申請基于機器學習的程序識別方法的第二實施例流程圖;圖4B為本申請實施例對程序類型進行識別的應用實例示意圖;圖5為本申請基于機器學習的程序識別裝置實施例框圖;圖6為本申請在生成識別程序類型的模型的裝置實施例框圖。
具體實施例方式本申請如下實施例提供了一種基于機器學習的程序識別方法及裝置。本申請采用 MLD (Machine Learning Detection機器學習識別)技術,通過對大量程序樣本進行分析,得到識別惡意程序的模型,通過該模型可以提高對惡意程序的識別效率,對未發(fā)生的惡意程序進行預防,使得惡意程序難以被免殺。為了使本技術領域的人員更好地理解本申請實施例中的技術方案,并使本申請實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本申請實施例中技術方案作進一步詳細的說明。參見圖1,為本申請生成識別程序類型的模型的第一實施例流程圖步驟101 輸入提取到的海量程序,該海量程序中包括惡意程序和非惡意程序。步驟102 從所輸入的每個程序中提取特征,并對所提取的特征進行分類。具體的,分析每個程序文件,從程序文件中抽取預先定義的特征,根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性,根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。步驟103 根據(jù)分類的結果,將不同類別的特征使用不同的決策機進行訓練,生成用于識別惡意程序的訓練模型或訓練模型集合。其中,不同的決策機使用相同或不同的方式對特征進行訓練,包括使用支持向量
6機的決策機進行訓練,或使用決策樹的決策機進行訓練;訓練模型可以為帶編碼的訓練模型、或壓縮的訓練模型。參見圖2A,為本申請生成識別程序類型的模型的第二實施例流程圖步驟201 輸入提取到的海量程序,海量程序中包括惡意程序和非惡意程序。步驟202 分析每個程序文件,從程序文件中抽取預先定義的特征。步驟203 根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。不同的特征分類中包含不同數(shù)量的具體特征,以特征分類是編譯器為例,其中可以具體包括的編譯器特征為VC4、VC5、VC6、VC7、VC8、Delphi、BC。本申請實施例中,可以為每一個特征分類分配一個分類標識,例如,編譯器的分類標識為“ 1,,,對于具體的每個編譯器特征,可以為其進一步分配特征標識,例如,VC4的特征標識為“1”、VC5的特征標識為 “2”、VC6的特征標識為“3”、VC7的特征標識為“4”、VC8的特征標識為“5”、Delphi的特征標識為“6”、BC的特征標識為“7”。則在根據(jù)所抽取的特征生成特征向量時,特征向量中的每一個特征的數(shù)組都用其分類標識和特征標識進行表征,例如,所抽取的特征為編譯器特征“VC5”,則其對應的分類標識為“ 1 ”,特征標識為“2”,因此特征向量中對應該“VC5”的信息表示為“1:2”;同理,屬于其它特征分類的具體特征也用上述形式表示,如下所示,為從某個程序中提取到了4個特征的特征向量示例1:0 2:121 100:12345678 5000:365。特征向量的黑白屬性用于表示包含該特征向量中的特征的程序屬于惡意程序還是非惡意程序,其中屬性為“白”,則對應非惡意程序,屬性為“黑”,則對應惡意程序;進一步,可以為白屬性定義標識為“0”,黑屬性定義標識為“1”。則在為每個程序生成特征向量后,可以根據(jù)特征向量包含的信息為其分配屬性標識,例如,為上述特征向量“1:0 2:121 100 12345678 5000 365”分配屬性標識為白屬性“0”,則相應的信息可以表示為“0 1:0 2:121100:12345678 5000:365”。上述表示方法也可以直接用數(shù)組表示,在數(shù)組第η個位置的值即為第η個特征的值。步驟204:根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。步驟205 根據(jù)分類的結果,將不同類別的向量矩陣使用預選的決策機進行訓練, 生成用于識別惡意程序的訓練模型。參見圖2Β,為本申請實施例生成識別程序類型的模型的應用實例示意圖其中,若干PE文件即為所輸入的海量可執(zhí)行程序文件,包括惡意程序和非惡意程序,根據(jù)特征分類的不同包含了 k個決策機,以及對應k個決策機的k個訓練模型。分析可執(zhí)行程序文件后,抽取相應的特征,將所抽取的特征放入一個相應的特征向量之內,根據(jù)已經(jīng)抽取到的特征,進行特征分類,例如,可以依據(jù)加殼的類別將特征分成UPX、NSPack, ASPack, UPack, PECompact等,根據(jù)分類的結果,將不同類別的程序文件的特征向量和黑白屬性使用不同的決策機進行訓練,得到相應的訓練模型。本實施例中進行分類時,根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。該分類方法速度較快,經(jīng)過統(tǒng)計只需要反匯編16步,即可達到良好區(qū)分度,并且準確度較高,通用性好,大多數(shù)情況下不易被混淆;并且可以實現(xiàn)擴展。
應用該實例生成識別程序類型的模型的詳細過程與圖2A所述流程的描述一致, 在此不再贅述。參見圖3,為本申請基于機器學習的程序識別方法的第一實施例流程圖步驟301 分析輸入的未知程序,提取未知程序的特征。步驟302 根據(jù)所提取的特征對未知程序進行粗分類。步驟303 根據(jù)粗分類的結果,將未知程序輸入已生成的訓練模型及相應的決策機中進行判斷。步驟304 輸出未知程序的識別結果,該識別結果為惡意程序或非惡意程序。參見圖4A,為本申請識別程序類型的方法的第二實施例流程圖,該實施例示出了當有多個訓練模型時的識別過程步驟401 分析輸入的未知程序,提取未知程序的特征。步驟402 根據(jù)所提取的特征對未知程序進行粗分類。步驟403 根據(jù)粗分類的結果,將未知程序分別輸入多個已生成的訓練模型及相應的決策機中進行判斷。步驟404 根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對未知程序進行判斷的結果進行加權計算。步驟405 根據(jù)加權計算的結果輸出對位置程序的識別結果,該識別結果為惡意程序或非惡意程序。參見圖4B,為本申請實施例對程序類型進行識別的應用實例示意圖其中,PE文件即為所輸入的未知程序文件,根據(jù)特征分類的不同包含了 k個決策機,以及對應k個決策機的k個訓練模型。分析PE文件后,抽取相應的特征,將所抽取的特征放入一個相應的特征向量之內,根據(jù)已經(jīng)抽取到的特征,進行特征分類,例如,可以依據(jù)加殼的類別將特征分成UPX、NSPack, ASPack, UPack, PECompact等,或者,據(jù)編譯器的類型可以分為VC4、VC5、VC6、VC7、VC8、Delphi、BC等,根據(jù)分類的結果,使用不同的決策機和訓練模型進行相應的判斷,根據(jù)相應決策機和模型得出的判斷結果,依分類的權重加權得到評分結果,由評分結果確定該文件是否是惡意程序或正常程序。例如,假設決策機一共有k個,分類一共有m種,分別為分類1,2,. . .,m,第i種分類預先設定的權重是(wn,wi2, wik),則相應的樣本類別i的決策機判別的結果是(rn, ri2,...,rik),由此得到的綜合結果為(Wil,Wi2,...,Wik)*(rn,ri2,...,rik)??梢灶A先設置一個結果判斷閾值,當判斷結果小于該閾值則確定未知程序為非惡意程序,當判斷結果大于該閾值,則確定未知程序為惡意程序。與本申請基于機器學習的程序識別方法的實施例相對應,本申請還提供了基于機器學習的程序識別裝置的實施例。參見圖5,為本申請基于機器學習的程序識別裝置的實施例框圖該裝置包括提取單元510、分類單元520、判斷單元530和輸出單元M0。其中,提取單元510,用于分析輸入的未知程序,提取所述未知程序的特征;分類單元520,用于根據(jù)所提取的特征對所述未知程序進行粗分類;判斷單元530,用于根據(jù)所述粗分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;
輸出單元M0,用于輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。具體的,判斷單元530可以包括(圖5中未示出)程序輸入單元,用于當包括多個訓練模型時,將未知程序分別輸入多個已生成的訓練模型及相應的決策機中進行判斷;力口權計算單元,用于根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對所述未知程序進行判斷的結果進行加權計算;所述輸出單元M0,具體用于根據(jù)所述加權計算的結果輸出對所述位置程序的識別結果。參見圖6,為本申請在生成識別程序類型的模型時的裝置實施例框圖該裝置包括輸入單元610、提取單元620、分類單元630和生成單元640。其中,輸入單元610,用于輸入提取到的海量程序,所述海量程序中包括惡意程序和非惡意程序;提取單元620,用于從所輸入的每個程序中提取特征;分類單元630,用于對所提取的特征進行分類;生成單元640,用于根據(jù)所述分類的結果,將不同類別的特征使用不同的決策機進行訓練,生成用于識別惡意程序的訓練模型或訓練模型集合。具體的,提取單元620可以包括(圖6中未示出)程序文件分析單元,用于分析每個程序文件,從所述程序文件中抽取預先定義的特征;向量屬性生成單元,用于根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。具體的,分類單元630用于根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。通過對以上實施方式的描述可知,本申請實施例在識別未知程序的類型時,提取未知程序的特征,并根據(jù)所提取的特征對未知程序進行分類,根據(jù)分類的結果,將未知程序輸入已生成的訓練模型及相應的決策機中進行判斷,輸出未知程序的識別結果。本申請采用機器學習技術,通過對大量程序樣本進行分析,得到識別惡意程序的模型,通過該模型的使用可以節(jié)省大量的人力,提高對惡意程序的識別效率;并且,在基于對海量程序進行數(shù)據(jù)挖掘的基礎上,可以發(fā)現(xiàn)程序的內在規(guī)律,對未發(fā)生的惡意程序進行預防,使得惡意程序難以被免殺。本領域的技術人員可以清楚地了解到本申請實施例中的技術可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本申請實施例中的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品可以存儲在存儲介質中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本申請各個實施例或者實施例的某些部分所述的方法。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。以上所述的本申請實施方式,并不構成對本申請保護范圍的限定。任何在本申請的精神和原則之內所作的修改、等同替換和改進等,均應包含在本申請的保護范圍之內。
權利要求
1.一種基于機器學習的程序識別方法,其特征在于,包括 分析輸入的未知程序,提取所述未知程序的特征;根據(jù)所提取的特征對所述未知程序進行粗分類;根據(jù)所述粗分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。
2.根據(jù)權利要求1所述的方法,其特征在于,當包括多個訓練模型時,所述將未知程序輸入已生成的訓練模型及相應的決策機中進行判斷包括將未知程序分別輸入一個或多個已生成的訓練模型及相應的決策機中進行判斷; 根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對所述未知程序進行判斷的結果進行加權計算;所述輸出未知程序的識別結果具體為根據(jù)所述加權計算的結果輸出對所述位置程序的識別結果。
3.根據(jù)權利要求1所述的方法,其特征在于,還包括輸入提取到的海量程序,所述海量程序中包括惡意程序和非惡意程序; 從所輸入的每個程序中提取特征,并對所提取的特征進行分類; 根據(jù)所述分類的結果,將不同類別的特征使用不同的決策機進行訓練,生成用于識別惡意程序的訓練模型或訓練模型集合。
4.根據(jù)權利要求3所述的方法,其特征在于,所述從所輸入的每個程序中提取特征包括分析每個程序文件,從所述程序文件中抽取預先定義的特征; 根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。
5.根據(jù)權利要求3所述的方法,其特征在于,所述對所提取的特征進行分類具體為根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。
6.根據(jù)權利要求3所述的方法,其特征在于,所述不同的決策機使用相同或不同的方式對特征進行訓練,包括使用支持向量機的決策機進行訓練,或使用決策樹的決策機進行訓練。
7.根據(jù)權利要求3所述的方法,其特征在于,所述訓練模型為帶編碼的訓練模型、或壓縮的訓練模型。
8.一種基于機器學習的程序識別裝置,其特征在于,包括 提取單元,用于分析輸入的未知程序,提取所述未知程序的特征; 分類單元,用于根據(jù)所提取的特征對所述未知程序進行粗分類;判斷單元,用于根據(jù)所述粗分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;輸出單元,用于輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。
9.根據(jù)權利要求8所述的裝置,其特征在于,所述判斷單元包括程序輸入單元,用于當包括多個訓練模型時,將未知程序分別輸入多個已生成的訓練模型及相應的決策機中進行判斷;加權計算單元,用于根據(jù)預先設置的每種特征分類在每個訓練模型中的權重,將每個訓練模型及相應的決策機對所述未知程序進行判斷的結果進行加權計算;所述輸出單元,具體用于根據(jù)所述加權計算的結果輸出對所述位置程序的識別結果。
10.根據(jù)權利要求8所述的裝置,其特征在于,還包括輸入單元,用于輸入提取到的海量程序,所述海量程序中包括惡意程序和非惡意程序;提取單元,用于從所輸入的每個程序中提取特征; 分類單元,用于對所提取的特征進行分類;生成單元,用于根據(jù)所述分類的結果,將不同類別的特征使用不同的決策機進行訓練, 生成用于識別惡意程序的訓練模型或訓練模型集合。
11.根據(jù)權利要求10所述的裝置,其特征在于,所述提取單元包括程序文件分析單元,用于分析每個程序文件,從所述程序文件中抽取預先定義的特征;向量屬性生成單元,用于根據(jù)所抽取的特征生成特征向量,以及每個特征向量的黑白屬性。
12.根據(jù)權利要求10所述的裝置,其特征在于,所述分類單元具體用于,根據(jù)已知編譯器的入口指令序列判定編譯生成相應程序的編譯器類型。
全文摘要
本申請實施例公開了一種基于機器學習的程序識別方法及裝置,所述方法包括分析輸入的未知程序,提取所述未知程序的特征;根據(jù)所提取的特征對所述未知程序進行分類;根據(jù)所述分類的結果,將所述未知程序輸入已生成的訓練模型及相應的決策機中進行判斷;輸出所述未知程序的識別結果,所述識別結果為惡意程序或非惡意程序。本申請采用機器學習技術,通過對大量程序樣本進行分析,得到識別惡意程序的模型,通過該模型的使用可以節(jié)省大量的人力,提高對惡意程序的識別效率;并且,在基于對海量程序進行數(shù)據(jù)挖掘的基礎上,可以發(fā)現(xiàn)程序的內在規(guī)律,對未發(fā)生的惡意程序進行預防,使得惡意程序難以被免殺。
文檔編號G06N5/02GK102479298SQ20101056551
公開日2012年5月30日 申請日期2010年11月29日 優(yōu)先權日2010年11月29日
發(fā)明者周輝, 周鴻祎, 董毅 申請人:北京奇虎科技有限公司