喬延臣,云曉春,張永錚,李書豪
(1.中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190; 2.中國(guó)科學(xué)院大學(xué),北京100049;3.中國(guó)科學(xué)院信息工程研究所,北京 100093)
?
基于調(diào)用習(xí)慣的惡意代碼自動(dòng)化同源判定方法
喬延臣1,2,3,云曉春1,3,張永錚3,李書豪3
(1.中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190; 2.中國(guó)科學(xué)院大學(xué),北京100049;3.中國(guó)科學(xué)院信息工程研究所,北京 100093)
惡意代碼同源判定對(duì)作者溯源、攻擊事件責(zé)任判定、攻擊場(chǎng)景還原等研究工作具有重要作用.目前惡意代碼同源判定方法往往依賴人工分析,效率低下,為此,提出一種基于調(diào)用習(xí)慣的惡意代碼自動(dòng)化同源判定方法.該方法基于7類調(diào)用行為,使用數(shù)據(jù)挖掘算法構(gòu)建作者編程習(xí)慣模型,基于頻繁項(xiàng)離群檢測(cè)算法計(jì)算同源度,利用K均值聚類算法選擇同源判定閾值,進(jìn)而實(shí)現(xiàn)惡意代碼同源判定.實(shí)驗(yàn)結(jié)果表明,該方法具有99%以上的準(zhǔn)確率和可接受的召回率.
網(wǎng)絡(luò)安全;惡意代碼;同源判定;調(diào)用習(xí)慣;自動(dòng)化
本文中,若兩個(gè)惡意代碼由同一作者或同一組織所研發(fā)則稱它們同源,它們可能屬于不同的家族,甚至具有很大的功能差異.隨著攻擊方式向高級(jí)、持續(xù)(如APT,Advanced Persistent Threat)等方向發(fā)展,通常一個(gè)攻擊由多種惡意代碼完成或不同的攻擊所用的惡意代碼均出自同一作者或組織,發(fā)現(xiàn)其中的同源關(guān)系對(duì)作者溯源、攻擊場(chǎng)景還原、APT攻擊防范等具有重要作用.現(xiàn)階段,同源判定主要依賴人工分析,如Sasser與Netsky[1]、Duqu與Stuxnet[2~4]、Flame與Gauss[5]等的同源判定工作均由領(lǐng)域?qū)<胰斯し治鐾瓿?,雖然分析結(jié)果詳細(xì)全面,可信度高,但受專家經(jīng)驗(yàn)影響較大,因此效率較低.針對(duì)上述問(wèn)題,亟需高效地惡意代碼同源判定方法.
習(xí)慣一般指在不知不覺(jué)中有規(guī)律重復(fù)的行為[6],代碼易變但編程習(xí)慣不易改變,因此可以根據(jù)編程習(xí)慣進(jìn)行同源判定.在源代碼作者溯源[7]中,編程習(xí)慣主要包括編程布局、編程風(fēng)格、編程結(jié)構(gòu)等,然而在編譯過(guò)程中排版、布局、命名等均丟失,生成的二進(jìn)制程序僅保留了WinAPI(Windows Application Programming Interface)調(diào)用習(xí)慣等.同時(shí)惡意代碼為達(dá)到目的往往調(diào)用大量WinAPI,在此前提下提出了利用惡意代碼蘊(yùn)含的WinAPI調(diào)用習(xí)慣構(gòu)建作者編程習(xí)慣模型以檢測(cè)同源惡意代碼的方法.該方法以同源的惡意代碼樣本集為輸入,根據(jù)樣本集提取作者的7類WinAPI調(diào)用習(xí)慣,之后為每個(gè)樣本計(jì)算同源度并選擇同源度閾值,根據(jù)閾值判定待測(cè)樣本是否同源.
目前,惡意代碼同源判定結(jié)論均依賴人工分析.CrySyS實(shí)驗(yàn)室的Bencsáth[4]等人發(fā)現(xiàn)Stuxnet與Duqu存在很多相同的特殊關(guān)鍵詞,注入機(jī)制、注入目標(biāo)、導(dǎo)出函數(shù)、導(dǎo)入函數(shù)所用的特殊手法、負(fù)載與配置、通信模塊等也具有相似性,基于這些證據(jù),認(rèn)為二者同源.Gostev[3]花費(fèi)2個(gè)月分析Duqu木馬,發(fā)現(xiàn)Stuxnet與Duqu所用驅(qū)動(dòng)文件在編譯平臺(tái)、時(shí)間、代碼等方面具有相似性.Symantec的Eric Chien[2]等人深入分析發(fā)現(xiàn)Duqu具有收集信息的功能,結(jié)合Duqu與Stuxnet在開(kāi)發(fā)平臺(tái)、代碼等方面的相似性,總結(jié)出Duqu是Stuxnet先驅(qū)的結(jié)論,更進(jìn)一步地分析出二者之間的關(guān)系.Kaspersky實(shí)驗(yàn)室[8]的專家深入分析Stuxnet與Flame,發(fā)現(xiàn)2009版Stuxnet中的一個(gè)模塊是Flame中的插件,得出Flame與Stuxnet的開(kāi)發(fā)人員有過(guò)早期合作等結(jié)論.CrySyS實(shí)驗(yàn)室的Bencsáth[5]在2012年基于詳細(xì)的分析報(bào)告得出Stuxnet與Duqu同源,F(xiàn)lame與Gauss同源.FireEye[9]實(shí)驗(yàn)室2013年深入分析11個(gè)高級(jí)持續(xù)攻擊(APT),在攻擊所用惡意代碼中發(fā)現(xiàn)了相同的代碼段、時(shí)間戳、數(shù)字證書等,基于這些發(fā)現(xiàn)認(rèn)為這些攻擊均由一個(gè)組織操縱.各個(gè)實(shí)驗(yàn)室、反病毒廠商的專家給出的分析報(bào)告詳細(xì)全面,有力地證明了不同惡意代碼的同源關(guān)系,但受專家經(jīng)驗(yàn)影響較大,花費(fèi)時(shí)間較長(zhǎng),效率較低.
源代碼作者溯源主要基于作者的編程習(xí)慣.Krsul等人[10]將編程習(xí)慣定義為編程布局、編程風(fēng)格、編程結(jié)構(gòu)等三類,經(jīng)實(shí)驗(yàn)驗(yàn)證分類準(zhǔn)確率為73%.MacDonell等人[11]基于Krsul等[10]定義的三類編程習(xí)慣,自動(dòng)化提取C++語(yǔ)言蘊(yùn)含的作者編程習(xí)慣用于作者溯源,分類準(zhǔn)確率為81.1%.Ding等人[12]仍然基于三類編程習(xí)慣,對(duì)Java語(yǔ)言構(gòu)建不同作者的編程習(xí)慣模型用于作者溯源,分類準(zhǔn)確率為67.2%.基于作者編程習(xí)慣能有效地將源代碼溯源至所屬作者,然而編譯之后的二進(jìn)制代碼無(wú)排版、布局、命名等特征,無(wú)法直接利用現(xiàn)有方法解決惡意代碼同源判定問(wèn)題,但具有重要的借鑒意義.
由于人工同源判定效率低,不適應(yīng)海量惡意代碼樣本的同源判定需求.結(jié)合源代碼作者溯源工作中基于編程習(xí)慣的思想,本文提出了基于調(diào)用習(xí)慣的惡意代碼自動(dòng)化同源判定方法.
本文提出了基于WinAPI調(diào)用習(xí)慣的惡意代碼自動(dòng)化同源判定方法.如圖1所示,該方法包括兩個(gè)階段:同源學(xué)習(xí)階段與同源判定階段.在學(xué)習(xí)階段,基于同源樣本集構(gòu)建WinAPI調(diào)用習(xí)慣模型,依據(jù)頻繁模式離群因子[13](Frequent Pattern Outlier Factor,F(xiàn)POF)計(jì)算樣本同源度,使用K均值聚類算法選擇同源判定閾值.判定階段,提取待測(cè)樣本的WinAPI調(diào)用行為,再結(jié)合第一步中構(gòu)建的WinAPI調(diào)用習(xí)慣模型與同源判定閾值,判斷待測(cè)樣本是否同源.
3.1 調(diào)用行為定義
以習(xí)慣定義[6]類推,在長(zhǎng)期編程過(guò)程中不知不覺(jué)有規(guī)律重復(fù)的WinAPI調(diào)用行為,即WinAPI調(diào)用習(xí)慣.基于編程經(jīng)驗(yàn)與惡意代碼分析經(jīng)驗(yàn),共總結(jié)出7類WinAPI調(diào)用行為.樣本(Sample)經(jīng)逆向反匯編后獲得匯編代碼,依據(jù)調(diào)用指令call索引到函數(shù),表示為Proc;依據(jù)跳轉(zhuǎn)指令je、jne、jbe等將Proc切分成多個(gè)代碼段,表示為L(zhǎng)oc.根據(jù)調(diào)用指令與跳轉(zhuǎn)指令,每個(gè)Sample被劃分為多個(gè)Proc,每個(gè)Proc包含多個(gè)Loc,結(jié)構(gòu)如圖2所示.
7類WinAPI調(diào)用行為定義如下:
BS2C:Sample級(jí)2-WinAPI組合調(diào)用行為,對(duì)2個(gè)WinAPI,在同一樣本中調(diào)用的行為;
BP2C:Proc級(jí)2-WinAPI組合調(diào)用行為,對(duì)2個(gè)WinAPI,在同一函數(shù)中調(diào)用的行為;
BP2S:Proc級(jí)2-WinAPI分離調(diào)用行為,對(duì)2個(gè)WinAPI,分別在不同函數(shù)中調(diào)用的行為;
BL2C:Loc級(jí)2-WinAPI組合調(diào)用行為,對(duì)2個(gè)WinAPI,在同一代碼塊中調(diào)用的行為;
BLS:Loc級(jí)WinAPI單獨(dú)調(diào)用行為,對(duì)某個(gè)WinAPI,在代碼塊中僅調(diào)用該WinAPI而不調(diào)用其他WinAPI的行為;
BLSeq:Loc級(jí)WinAPI序列調(diào)用行為,對(duì)某些WinAPI,在代碼塊中依特定序列調(diào)用這些WinAPI的行為;
BL2O:Loc級(jí)2-WinAPI先后次序調(diào)用行為,對(duì)2個(gè)WinAPI,在代碼塊中依特定次序調(diào)用的行為.
3.2 同源學(xué)習(xí)階段
該階段,針對(duì)訓(xùn)練集樣本提取的7類行為,統(tǒng)計(jì)其發(fā)生規(guī)律進(jìn)而提取其中的頻繁調(diào)用行為以構(gòu)建作者的WinAPI調(diào)用習(xí)慣模型,基于習(xí)慣模型利用頻繁模式離群因子[13]計(jì)算樣本同源度,之后利用K均值聚類算法將訓(xùn)練集樣本聚為兩類或合并為一類,以選擇同源度閾值.該階段結(jié)束時(shí)完成WinAPI調(diào)用習(xí)慣模型的構(gòu)建,同時(shí)生成樣本同源度計(jì)算公式、同源度閾值,以在同源判定階段對(duì)待測(cè)樣本進(jìn)行同源判定.
3.2.1 習(xí)慣模型構(gòu)建
3.2.2 同源度計(jì)算
He[13]定義了頻繁模式離群因子,用于檢測(cè)單類數(shù)據(jù)集中的離群點(diǎn).本文借鑒頻繁項(xiàng)離群因子,將其定義為同源度.每個(gè)樣本提取7類調(diào)用行為,在每類行為上依據(jù)挖掘的WinAPI調(diào)用習(xí)慣計(jì)算同源度,樣本S在第k類行為上的同源度計(jì)算公式如下:
(1)
3.2.3 閾值選擇
3.3 同源判定階段
如圖3所示,對(duì)每個(gè)待測(cè)樣本,首先從樣本中提取7類行為集合;其次,依據(jù)學(xué)習(xí)階段獲得的WinAPI調(diào)用習(xí)慣模型構(gòu)造同源度計(jì)算公式,計(jì)算待測(cè)樣本的7類同源度;最后,若其中有t類不小于學(xué)習(xí)階段選取的閾值,則認(rèn)為同源支持度為Sup=t/7.同源支持度越高表明同源關(guān)系越強(qiáng),根據(jù)實(shí)踐經(jīng)驗(yàn),同源支持度的閾值一般在[0.5,0.8]效果比較好,本文以0.5為例,當(dāng)同源支持度Sup>0.5時(shí),認(rèn)為待測(cè)樣本與訓(xùn)練集同源.同源判定的過(guò)程如圖3所示.
4.1 實(shí)驗(yàn)數(shù)據(jù)集
惡意代碼作者一般不留作者的信息,因此明確作者的樣本非常少,經(jīng)詳盡調(diào)研,VXHeaven[16]網(wǎng)站上有少量作者標(biāo)注的樣本.去除調(diào)用WinAPI少于10個(gè)等無(wú)法提取有效行為的樣本,經(jīng)整理去重后收集43個(gè)具有作者標(biāo)注的樣本,如表1所示.
表1 數(shù)據(jù)列表
4.2 roy g biv同源判定實(shí)驗(yàn)
如圖4所示,在126次實(shí)驗(yàn)中,判定準(zhǔn)確率為100%的實(shí)驗(yàn)有107次,未檢出同源樣本的實(shí)驗(yàn)有16次,平均準(zhǔn)確率為99.10%.
如圖5所示,在126次實(shí)驗(yàn)中,判定召回率為100%的有8次,判定召回率為0%的有16次,平均召回率為43.64%.
該同源判定實(shí)驗(yàn)中,平均準(zhǔn)確率高達(dá)99.10%,誤報(bào)率低.但是召回率僅為43.64%,漏報(bào)率比較高.
4.3 Vorgon同源判定實(shí)驗(yàn)
圖6中概率值-100%表示該次實(shí)驗(yàn)未檢出任何同源樣本.如圖6所示,在15次實(shí)驗(yàn)中,未檢出同源樣本的實(shí)驗(yàn)有5次,占比33.33%,其余10次實(shí)驗(yàn)中準(zhǔn)確率均為100%.Vorgon同源判定實(shí)驗(yàn)的平均準(zhǔn)確率為100%,平均召回率為60%.
Shankarapani等人[17]提出利用序列比對(duì)方法,通過(guò)計(jì)算靜態(tài)WinAPI調(diào)用序列間的序列相似度,進(jìn)行惡意代碼變種識(shí)別.本文與Shankarapani[17]的工作進(jìn)行比較,以此說(shuō)明本文同源判定方法與變種識(shí)別等方法的差異,本文方法能有效判定源自同組織、作者的不同惡意代碼間的同源關(guān)系.
5.1 同源判定比較
Shankarapani[17]的工作中設(shè)定的閾值為0.5,以作者roy g biv的9個(gè)樣本做對(duì)比實(shí)驗(yàn).Shankarapani[17]的方法將2對(duì)樣本boundary與impute、efishnc與junkmail識(shí)別為同源樣本,但未發(fā)現(xiàn)這4個(gè)樣本與其余5個(gè)樣本間的同源關(guān)系.依據(jù)該判定結(jié)果,將9個(gè)樣本劃分為兩類,以boundary、impute、efishnc、junkmail等4個(gè)樣本為集合A,其余5個(gè)樣本為集合B,基于Shankarapani[17]的方法,集合A與B無(wú)同源關(guān)系.
以集合A做訓(xùn)練集,集合B中5個(gè)樣本與其他作者樣本為測(cè)試集,做同源判定實(shí)驗(yàn);以集合B做訓(xùn)練集,集合A中4個(gè)樣本與其他作者樣本為測(cè)試集,做同源判定實(shí)驗(yàn).兩個(gè)實(shí)驗(yàn)的結(jié)果如圖7所示,當(dāng)以A中4個(gè)樣本為訓(xùn)練集時(shí),判定B中的gemini為同源樣本;當(dāng)以B中5個(gè)樣本做為訓(xùn)練集時(shí),判定A中的impute與efishnc為同源樣本.
5.2 復(fù)雜度分析
Shankarapani[17]的方法與本文方法均需對(duì)惡意代碼樣本做逆向等處理,該階段耗費(fèi)時(shí)間相同.Shankarapani[17]的方法時(shí)間復(fù)雜度主要取決于最長(zhǎng)公共子序列(LCS,Longest Common Subsequence)算法,其時(shí)間復(fù)雜度為O(mn),其中m與n分別為2個(gè)樣本W(wǎng)inAPI序列的長(zhǎng)度.本文方法時(shí)間復(fù)雜度主要取決于行為提取,行為提取的時(shí)間復(fù)雜度依賴于組合行為的提取,其復(fù)雜度為O(k2),其中k為樣本中調(diào)用的WinAPI個(gè)數(shù),經(jīng)統(tǒng)計(jì),樣本中WinAPI數(shù)不大于樣本的WinAPI調(diào)用序列長(zhǎng)度,即k≤m,n.因此,本文方法的時(shí)間復(fù)雜度較低,尤其適合在海量樣本尋找同源樣本.
5.3 討論
通過(guò)對(duì)比實(shí)驗(yàn)不難發(fā)現(xiàn),用于變種識(shí)別的方法,并不適用于同源判定工作,主要是因?yàn)橥磁卸üぷ魍瑫r(shí)包含了不同變種、不同家族間惡意代碼的同源判定,而不同家族惡意代碼的功能、行為等差別較大,導(dǎo)致WinAPI調(diào)用序列間的最長(zhǎng)公共子序列較小.但本文方法基于不易變的編程習(xí)慣,能有效判定功能、行為差別較大的惡意代碼間的同源關(guān)系.
本文方法尚有局限性:一是需要同源的多個(gè)樣本做訓(xùn)練集以構(gòu)建作者的習(xí)慣模型進(jìn)而實(shí)現(xiàn)同源判定,Shankarapani[17]的方法僅需1個(gè)樣本即可進(jìn)行變種判定;二是本文方法需要依據(jù)多類行為,Shankarapani的方法僅需依據(jù)樣本的完整WinAPI調(diào)用序列即可完成變種判定.此外,兩個(gè)方法均具有很高的準(zhǔn)確率.
針對(duì)現(xiàn)有惡意代碼人工同源判定方法效率低下的問(wèn)題,本文提出了基于WinAPI調(diào)用習(xí)慣的惡意代碼自動(dòng)化同源判定方法.實(shí)驗(yàn)結(jié)果表明,同一作者編寫的不同惡意代碼蘊(yùn)含相同的WinAPI調(diào)用習(xí)慣,利用WinAPI調(diào)用習(xí)慣進(jìn)行同源判定是可行的.基于頻繁項(xiàng)離群點(diǎn)檢測(cè)算法能很好地識(shí)別訓(xùn)練集中的離群點(diǎn)并統(tǒng)計(jì)出判定閾值,以99%以上的準(zhǔn)確率與可接受的召回率識(shí)別出同源樣本,為海量惡意代碼同源判定提供技術(shù)支撐.
[1]董志強(qiáng),肖新光,張栗偉.編碼心理學(xué)分析病毒同源性[J].信息安全與通信保密,2005,2005(8):55-59.
[2]Chien E,Omurchu L,Falliere N.W32 Duqu:the precursor to the next stuxnet[A].Proceedings of the 5th USENIX Workshop on Large-Scale Exploits and Emergent Threats (LEET)[C].Berkeley,CA:USENIX Association,2012.5-5.
[3]Gostev A,Soumenkov I.Stuxnet/Duqu:The evolution of drivers[OL].http://www.securelist.com/en/analysis/204792208/Stuxnet Duqu The Evolution of Drivers,2011.
[4]Bencs TH B,P K G,Butty N L,et al.Duqu:A Stuxnet-like malware found in the wild[R].CrySyS Lab Technical Report,2011.
[5]Bencs TH B,et al.The cousins of stuxnet:Duqu,flame,and gauss[J].Future Internet,2012,4(4):971-1003.
[6]Butler G,Hope R A.Manage Your Mind:The Mental Fitness Guide[M].Oxford University Press,2007.
[7]Burrows S,Uitdenbogerd A L,Turrin A.Comparing techniques for authorship attribution of source code[J].Software:Practice and Experience,2014,44(1):1-32.
[8]Lab K.Resource 207:Kaspersky Lab Research Proves that Stuxnet and Flame Developers are Connected[OL].http://www.kaspersky.com/about/news/virus/2012/Resource_207_Kaspersky_Lab_Research_Proves_that_Stuxnet_and_Flame_Developers_are_Connected,2012.
[9]Moran N,Bennett J.Supply chain analysis:From quartermaster to sunshop[J].FireEye Labs,2013,11:1-39.
[10]Krsul I,Spafford E H.Authorship analysis:Identifying the author of a program[J].Computers & Security,1997,16(3):233-257.
[11]Macdonell S G,Gray A R,Maclennan G,et al.Software forensics for discriminating between program authors using case-based reasoning,feedforward neural networks and multiple discriminant analysis[A].Proceedings of the 6th International Conference on Neural Information Processing (ICONIP′99)[C].Perth,WA:IEEE,1999.66-71.
[12]Ding H,Samadzaden M H.Extraction of Java program fingerprints for software authorship identification[J].Journal of Systems and Software,2004,72(1):49-57.
[13]He Z,Xu X,Huang Z J,et al.Fp-outlier:frequent pattern based outlier detection[J].Computer Science and Information Systems/ComSIS,2005,2(1):103-118.
[14]He Z,Xu X,Huang J Z,et al.A frequent pattern discovery method for outlier detection[A].Advances in Web-Age Information Management[M].Springer,2004.726-732.
[15]Krishna K,Murty M N.Genetic K-means algorithm[J].IEEE Transactions on Systems,Man,and Cybernetics,Part B:Cybernetics,1999,29(3):433-439.
[16]Heaven V.Computer virus collection[OL].http://vxheaven.org/vl php,2014.
[17]Shankarapani M K,Ramamoorthy S,et al.Malware detection using assembly and API call sequences[J].Journal in Computer Virology,2011,7(2):107-119.
喬延臣 男,1988年9月出生,山東聊城人.2010年畢業(yè)于山東大學(xué)數(shù)學(xué)學(xué)院,獲學(xué)士學(xué)位.現(xiàn)為在讀博士生.主要從事網(wǎng)絡(luò)信息安全、惡意代碼等方面的研究工作.
E-mail:qiaoyanchen@iie.ac.cn
云曉春 男,1971年2月出生,黑龍江哈爾濱人.1999年獲哈爾濱工業(yè)大學(xué)獲工學(xué)博士學(xué)位.現(xiàn)為中國(guó)科學(xué)院計(jì)算技術(shù)研究所研究員、博士生導(dǎo)師,主要從事信息安全、計(jì)算機(jī)網(wǎng)絡(luò)等方面的研究工作.
E-mail:yunxiaochun@cert.org.cn
An Automatic Malware Homology Identification Method Based on Calling Habits
QIAO Yan-chen1,2,3,YUN Xiao-chun1,3,ZHANG Yong-zheng3,LI Shu-hao3
(1.InstituteofComputingTechnology,ChineseAcademyofSciences,Beijing100190,China;2.UniversityofChineseAcademyofSciences,Beijing100049,China;3.InstituteofInformationEngineering,ChineseAcademyofSciences,Beijing100093,China)
Malware homology identification is useful for malware authorship attribution,attack scenario restoration,and so on.Current malware homology identification methods still rely on manual analysis,which is inefficient and time-consuming.In order to improve the effectiveness and efficiency,an automatic malware homology identification method is proposed.Based on 7-class calling behaviors,this method constructs a model of calling habits using data mining algorithms.Then it calculates the degree of homology based on Frequent Pattern Outlier Factor.Finally,it chooses the threshold values using k-means clustering algorithm to identify homology.The experimental evaluations on real-world malwares show our method achieves high accuracy (over 99%) and acceptable recall rate.
network security;malware;homology identification;calling habits;automatic
2015-04-05;
2015-08-24;責(zé)任編輯:李勇鋒
國(guó)家自然科學(xué)基金(No.61303261);國(guó)家863高技術(shù)研究發(fā)展計(jì)劃(No.2013AA014703,No.2012AA012803);國(guó)家242信息安全計(jì)劃(No.2014A094);中國(guó)科學(xué)院戰(zhàn)略性科技先導(dǎo)專項(xiàng)(No.XDA06030200)
TP393.08
A
0372-2112 (2016)10-2410-05
??學(xué)報(bào)URL:http://www.ejournal.org.cn
10.3969/j.issn.0372-2112.2016.10.019