一種基于調用行為的惡意代碼自動化同源判定方法及系統(tǒng)的制作方法
【技術領域】
[0001] 本發(fā)明涉及惡意代碼分析領域,具體涉及一種基于調用行為的惡意代碼自動化同 源判定方法及系統(tǒng)。
【背景技術】
[0002] 本發(fā)明中惡意代碼同源指不同惡意代碼源自同一組織或同一作者,這些惡意代碼 可能屬于不同家族,甚至具有很大的功能差異。隨著攻擊方式向高級、持續(xù)(如APT,Advan ced Persistent Threat)等方向發(fā)展,通常一個攻擊由多種惡意代碼完成或不同的攻擊所 用的惡意代碼均出自同一組織,發(fā)現其中的同源關系對作者溯源、攻擊場景還原、APT攻擊 防范等具有重要作用。目前,同源判定主要依賴人工分析,CrySyS實驗室的Bencsdth等人 依賴特殊關鍵詞,注入機制、注入目標、導出函數、導入函數所用的特殊手法、負載與配置、 通信模塊等判定Stuxnet與Duqu同源;Gostev等人發(fā)現Stuxnet與Duqu在編譯平臺、時 間、代碼等方面具有相似性;Kaspersky實驗室的專家通過人工分析發(fā)現2009版Stuxnet 中的一個模塊是Flame中的插件,判定Stuxnet與Flame與同源;FireEye實驗室的專家深 入分析11個高級持續(xù)攻擊(APT),發(fā)現攻擊所用惡意代碼具有相同的代碼段、時間戳,甚至 相同的證書,認為這些攻擊均由一個組織操縱,具有同源關系。各個實驗室、反病毒廠商的 專家給出的分析報告詳細全面,有力地證明了不同惡意代碼的同源關系,但受專家經驗影 響較大,因此效率較低。
[0003] 同源判定主要依賴人工分析,主要原因是同源判定的原則是分析兩樣本間是否擁 有獨特的相似性證據,現實中即使不同源的惡意代碼間也會有大量相似項,如圖標、字符 串、代碼段等,因此需要有經驗的分析人員判斷哪些相似項是特殊的、個性的,可做為同源 判定的證據,以進行同源判定。
【發(fā)明內容】
[0004] 基于此,為了實現惡意代碼同源判定的自動化,本發(fā)明公開了一種基于調用行為 的惡意代碼自動化同源判定方法及系統(tǒng)。
[0005] 為了實現上述目的,本發(fā)明采用以下技術方案:
[0006] 一種基于調用行為的惡意代碼自動化同源判定方法,包括以下步驟:
[0007] (1)提取每個惡意代碼樣本的WinAPI調用行為集合與樣本中調用的WinAPI集 合;
[0008] (2)提取兩樣本調用的WinAPI集合的WinAPI交集;
[0009] (3)從兩樣本WinAPI調用行為集合中篩選出由WinAPI交集構成的調用行為集 合;
[0010] (4)依據步驟(3)中提取的調用行為集合計算兩樣本間的同源度,依據設定的同 源度閾值判定惡意代碼樣本是否同源。
[0011] 進一步地,步驟(1)中,惡意代碼樣本的WinAPI調用行為集合與樣本中調用的 WinAPI集合通過以下方法進行提?。?br>[0012] 1)檢測樣本是否加殼;
[0013] 2)若加殼判斷是否能脫殼;
[0014] 3)對未加殼與成功脫殼的樣本做反匯編處理,獲取反匯編代碼,同時獲取導入表 中的WinAPI集合;
[0015] 4)提取反匯編代碼中的WinAPI調用行為集合。
[0016] 進一步地,所述WinAPI調用行為包括:
[0017] ①Proc級2-WinAPI組合調用行為:惡意代碼作者在編寫函數中同時調用的兩個 WinAPI,表征在函數設計中的WinAPI組合調用行為;
[0018] ②Proc級2-WinAPI分離調用行為:惡意代碼作者在不同函數中使用的兩個 WinAPI,表征在函數設計中的不同WinAPI分開使用的調用行為;
[0019] ③Loc級2-WinAPI組合調用行為:惡意代碼作者在Loc代碼段中同時調用的兩個 WinAPI,表征Loc代碼段中的WinAPI組合調用行為;
[0020] ④Loc級WinAPI單獨調用行為:惡意代碼作者在Loc代碼段中只調用了一個 WinAPI,表征作者在Loc代碼段中的WinAPI調用行為;
[0021] ⑤Loc級WinAPI序列調用行為:惡意代碼作者在Loc代碼段中調用的WinAPI序 列,表征作者在Loc代碼段中的WinAPI調用序列調用行為;
[0022] ⑥Loc級WinAPI調用先后次序組合調用行為:惡意代碼作者在Loc代碼段中調用 WinAPI的先后關系,表征作者在Loc代碼段中調用WinAPI的順序調用行為。
[0023] 進一步地,步驟(3)中通過以下方法進行篩選:
[0024] 1)從WinAPI調用行為集合中依次取出每個行為,每個行為均由1個到多個 WinAPI構成;
[0025] 2)對每個行為,若其中的WinAPI均屬于WinAPI交集,則將其加入新的WinAPI調 用行為集合中;
[0026] 3)否則,回到步驟1);
[0027] 4)直到WinAPI調用行為集合中再無行為為止,最終得到的新的WinAPI調用行為 集合為由WinAPI交集構成的調用行為集合。
[0028] 進一步地,若WinAPI交集中的WinAPI數目少于10個,貝丨」不進行同源判定。
[0029] 否則,依據WinAPI調用行為集合S' 4與WinAPI調用行為集合S'b計算樣本A 與B每一類行為的相似度,第i類行為的相似度計算公式為:
[0031] 其中S為S' A中第i類行為的集合,&為S'B中第i類行為的集合。
[0032] 依據【公式1】計算6類行為的相似度,最后計算6類行為相似度的平均值,做為樣 本A與B的同源度,計算公式如下:
[0034] 本發(fā)明中設定同源度閾值為0. 5,即當sim > 0. 5時,判定兩樣本同源。
[0035] 本發(fā)明同時公開了一種基于調用行為的惡意代碼自動化同源判定系統(tǒng),主要由調 用行為提取模塊、WinAPI提取模塊、調用行為比對模塊與同源判定模塊4個模塊組成,其 中:
[0036] 所述調用行為提取模塊用于自動提取樣本中的WinAPI調用行為集合;
[0037] 所述WinAPI提取模塊用于提取樣本調用的WinAPI集合;
[0038] 所述調用行為比對模塊用于比對樣本間的WinAPI調用行為集合,得到樣本中由 共同調用的WinAPI集合構成的WinAPI調用行為集合;
[0039] 所述同源判定模塊用于依據WinAPI調用行為集合判定樣本間的同源關系。
[0040] 進一步地,所述調用行為提取模塊通過檢測樣本是否加殼,并對加殼樣本脫殼,對 未加殼或成功脫殼后的樣本進行反匯編并解析導入表,基于匯編代碼提取樣本中的WinAPI 調用行為。
[0041] 進一步地,所述WinAPI提取模炔基于編譯規(guī)則提取樣本調用的WinAPI。
[0042] 本發(fā)明公開了一種基于調用行為的惡意代碼自動化同源判定方法,該方法具有實 時性和準確性。首先提取兩樣本調用WinAPI的交集,基于WinAPI交集提取6類WinAPI調 用行為,通過比較WinAPI的調用行為判定兩樣本是否同源,利用上述方法可以從海量樣本 中判定與已知樣本同源的其他樣本,每次判定為兩兩樣本之間的判定。與手工同源判定相 比,在保持高準確率的前提下大大提高了同源判定的效率,適合基于某特定樣本在少量樣 本集中或在線實時捕獲與該樣本同源的其他惡意代碼的場景,以快速發(fā)現不同攻擊事件間 的關聯(lián)關系。
[0043] 本發(fā)明公開的基于調用行為的惡意代碼自動化同源判定系統(tǒng)可部署在惡意代碼 實時檢測系統(tǒng),用于快速檢測與特定惡意代碼同源的其他惡意代碼樣本,以有效防范新型 惡意代碼的傳播,減輕危害降低損失。
【附圖說明】
[0044] 圖1本發(fā)明基于調用行為的惡意代碼自動化同源判定方法流程圖;
[0045] 圖2本發(fā)明特征提取流程圖;
[0046] 圖3本發(fā)明基于調用行為的惡意代碼自動化同源判定系統(tǒng)架構圖;
[0047] 圖4本發(fā)明實施例1中變種判定結果;
[0048] 圖5本發(fā)明實施例1中同源判定結果。
【具體實施方式】
[0049] 下面,結合具體的實施實例對本發(fā)明進行詳細說明。
[0050] 本發(fā)明提供的惡意代碼自動化同源判定方法的流程如圖1所示,結合樣本A與樣 本B,具體實施步驟如下:
[0051] (1)提取樣本A的WinAPI調用行為集合34與WinAPI調用集合WinAPI A,提取樣本 A的WinAPI調用行為集合$8與WinAPI調用集合WinAPI B。
[0052] 圖2給出了該步驟具體的流程,對于一個樣本:
[0053] 1)檢測樣本是否加殼;
[0054] 2)若有殼判斷是否能脫殼;
[0055] 3)對未加殼與脫殼樣本做反匯編處理,獲取反匯編代碼,同時獲取導入表中的 WinAPI 集合;
[0056] 4)依據以下定義提取反匯編代碼中的6類WinAPI調用行為集合。
[0057] 定義1 Proc級2-WinAPI組合調用行為:惡意代碼作者在編寫函數中同時調用的 兩個WinAPI,表征在函數設計中的WinAPI組合調用行為;
[0058] 定義2 Proc級2-WinAPI分離調用行為:惡意代碼作者在不同函數中使用的兩個 WinAPI,表征在函數設計中的不同WinAPI分開使用的調用行為;
[0059] 定義3 Loc級2-WinAPI組合調用行為:惡意代碼作者在Loc代碼段中同時調用 的兩個WinAPI,表征Loc代碼段中的WinAPI組合調用行為;
[0060] 定義4 Loc級WinAPI單獨調用行為:惡意代碼作者在Loc代碼段中只調用了一 個WinAPI,表征作者在Loc代碼段中的WinAPI調用行為;
[0061] 定義5Loc級WinAPI序列調用行為:惡意代碼作者在Loc代碼段中調用的 WinAPI序列,表征作者在Loc代碼段中的WinAPI調用序列調用行為;
[0062] 定義6 Loc級WinAPI調用先后次序組合調用行為:惡意代碼作者在Loc代碼段 中調用WinAPI的先后關系,表征作者在Loc代碼段中調用WinAPI的順序調用行為。
[0063] 最終,提取樣本A的WinAPI調用行為集合34與WinAPI調用集合WinAPI A,提取樣 本B的WinAPI調用