亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于API依賴關(guān)系的代碼相似度分析

        2013-08-21 09:28:02姚新磊龐建民
        計(jì)算機(jī)工程 2013年1期
        關(guān)鍵詞:污點(diǎn)重排子圖

        姚新磊,龐建民,岳 峰,余 勇

        (信息工程大學(xué)信息工程學(xué)院,鄭州 450002)

        1 概述

        代碼相似度分析是檢測(cè)源代碼竊取和惡意代碼變種的主要方式,其本質(zhì)上依賴于對(duì)代碼的描述和理解?,F(xiàn)有對(duì)代碼特征的描述有很多種,如特征碼、指令序列、控制流圖、API序列[1]、API依賴圖[2-4]等,不同的描述方式代表著對(duì)代碼實(shí)際邏輯的不同理解方式。但程序理解本身就是 NP問(wèn)題[5],各種理解在實(shí)現(xiàn)上只能更大程度地接近代碼的實(shí)際邏輯,為此一般要在描述上采取一定的精簡(jiǎn)策略。

        正如多態(tài)引擎[6]在指令級(jí)采用垃圾指令插入、等價(jià)指令替換、指令順序重排、寄存器隨機(jī)等方式實(shí)現(xiàn)指令級(jí)特征的混淆,針對(duì)目前較為流行的API級(jí)行為分析,一些API級(jí)特征的混淆方式開(kāi)始大量使用,如API噪聲[7]、API順序重排和等價(jià)API替換等。

        針對(duì)此類混淆,文獻(xiàn)[8]提出一種基于行為依賴的惡意代碼相似度比較方法,首先在依賴圖的構(gòu)建階段采用虛擬節(jié)點(diǎn)消除API序列重排混淆;然后在依賴圖的預(yù)處理階段手工構(gòu)建等價(jià)API序列集合,在分析中若發(fā)現(xiàn)其中一個(gè)序列則,在等價(jià)序列集合中尋找統(tǒng)一表示的序列將其替換;最后在污點(diǎn)傳播中對(duì)產(chǎn)生了污點(diǎn)但沒(méi)有進(jìn)行傳播,或進(jìn)行了傳播但在傳播過(guò)程中沒(méi)有引起系統(tǒng)狀態(tài)改變的噪聲API進(jìn)行消除。該方法有效解決一些 API級(jí)特征的混淆方式對(duì)相似度分析的影響,但也存在如下改進(jìn)空間:

        (1)對(duì) API噪聲的處理依賴于改變系統(tǒng)狀態(tài)的函數(shù)集合,若一個(gè)API調(diào)用使用了污點(diǎn)數(shù)據(jù)而且改變了系統(tǒng)狀態(tài),則不被認(rèn)為是噪聲API,就不會(huì)從依賴圖中刪除。然而,這樣的 API調(diào)用也可能是噪聲 API調(diào)用。

        (2)對(duì)API重排問(wèn)題的處理有待商榷:1)只處理了2個(gè)API的重排問(wèn)題,沒(méi)有考慮2個(gè)API序列之間的重排問(wèn)題;2)對(duì)API重排的定義欠妥,其中的“有數(shù)據(jù)依賴但沒(méi)有發(fā)生修改”定義擴(kuò)大了API重排范圍,實(shí)際上2個(gè)API之間在有數(shù)據(jù)依賴關(guān)系但沒(méi)有修改污點(diǎn)數(shù)據(jù)的情況下并不能交換位置。

        鑒于此,本文在分析這2類問(wèn)題的基礎(chǔ)上,提出基于API依賴關(guān)系的代碼相似度分析方式,通過(guò)動(dòng)態(tài)分析形成程序的SCDG,然后對(duì)SCDG進(jìn)行預(yù)處理消除API噪聲、API重排,最后采用子圖同構(gòu)算法計(jì)算可疑代碼與原有代碼的相似度。

        2 問(wèn)題的提出

        2.1 污點(diǎn)源復(fù)用式噪聲API

        動(dòng)態(tài)污點(diǎn)分析是獲取API依賴關(guān)系的主要方式,污點(diǎn)源是污點(diǎn)追蹤過(guò)程的開(kāi)始,污點(diǎn)源的變化是必然引起追蹤過(guò)程的變化,進(jìn)而引起 API依賴關(guān)系的變化。污點(diǎn)源復(fù)用攻擊就是一種將原有污點(diǎn)源復(fù)用到新污點(diǎn)源從而導(dǎo)致污點(diǎn)源變化的攻擊方式。

        在常見(jiàn)的遠(yuǎn)程線程注入代碼中添加了 Create File和 SetFilePointer 2個(gè)噪聲 API,根據(jù)本文對(duì)SetFilePointer參數(shù)的設(shè)置,F(xiàn)ILE_BEGIN代表調(diào)整時(shí)起始參考點(diǎn)是文件的開(kāi)頭,hProcess作為參數(shù)是調(diào)整的字節(jié)數(shù),當(dāng)SetFilePointer調(diào)用成功后,其返回值就是一個(gè)與hProcess相等的DWORD值,將其賦給 hProcess2后就完成了污點(diǎn)源復(fù)用,后面的CreateRemoteThread函數(shù)的第 1個(gè)參數(shù)就是hProcess2,同樣實(shí)現(xiàn)了向explorer進(jìn)程注入一個(gè)線程的功能。

        混淆后遠(yuǎn)程線程注入類C代碼如下:

        從圖1中可以看出,混淆后的遠(yuǎn)程線程注入代碼的函數(shù)依賴圖發(fā)生了巨大變化,新增加的函數(shù)⑧與函數(shù)③產(chǎn)生輸入依賴關(guān)系,與函數(shù)⑥產(chǎn)生流依賴關(guān)系;而且 SetFilePointer函數(shù)將“1.tmp”文件的讀寫(xiě)頭移動(dòng)到hProcess值處,導(dǎo)致系統(tǒng)的完整性發(fā)生變化即系統(tǒng)狀態(tài)發(fā)生變化,這是原有方法所不能消除的噪聲API。

        圖1 混淆后的遠(yuǎn)程線程注入函數(shù)依賴圖

        2.2 API重排

        將圖1中的部分函數(shù)分為3組,分別是第1組函數(shù)①~函數(shù)③、第2組函數(shù)④、函數(shù)⑤、第3組函數(shù)⑥。通過(guò)對(duì)函數(shù)⑥的功能實(shí)現(xiàn)過(guò)程分析發(fā)現(xiàn):

        (1)前2組函數(shù)的調(diào)用順序是可以互換的,即只要在函數(shù)⑥執(zhí)行前完成前2組函數(shù)的功能即可,而不需關(guān)心這2組函數(shù)的調(diào)用順序。

        (2)在第 1組和第 2組函數(shù)內(nèi)部,只要保持函數(shù)①~函數(shù)③和函數(shù)④、函數(shù)⑤的相對(duì)順序即可,而不用關(guān)心它們之間是否有其他 API調(diào)用,因此,將2組函數(shù)混合放置也可以實(shí)現(xiàn)相同功能。

        基于以上2點(diǎn)對(duì)前2組API的順序進(jìn)行重排,將有如圖2所示的10種實(shí)現(xiàn),也就是有10個(gè)不同的依賴圖。在基于SCDG的代碼相似性分析中必須先處理這類情況,將不同的依賴圖歸一化為同一個(gè)模型,才能進(jìn)行后續(xù)的比較過(guò)程。

        圖2 遠(yuǎn)程線程注入API重排的10種情況

        3 代碼相似度分析

        3.1 API依賴關(guān)系的構(gòu)建

        定義 1(依賴圖) 依賴圖是一個(gè)四元組(V, E, α,β),其中,V是頂點(diǎn)集合,代表系統(tǒng)調(diào)用集合,每個(gè)頂點(diǎn)中包含2項(xiàng):系統(tǒng)調(diào)用號(hào)和污點(diǎn)數(shù)據(jù)信息;E:V×V是邊集合,說(shuō)明2個(gè)系統(tǒng)調(diào)用之間存在依賴關(guān)系;α:V→S是系統(tǒng)調(diào)用號(hào)與系統(tǒng)調(diào)用名稱之間的映射;β:E→D是邊和依賴關(guān)系之間的映射,由于2個(gè)系統(tǒng)調(diào)用的依賴關(guān)系可能多于一個(gè),該映射是一個(gè)邊到所有依賴關(guān)系的映射。

        污點(diǎn)數(shù)據(jù)信息是五元組<Address, Length, Type,ParamType, Value>,其中,Address是污點(diǎn)數(shù)據(jù)的地址;Length為污點(diǎn)數(shù)據(jù)的長(zhǎng)度;Type表示污點(diǎn)數(shù)據(jù)的類型,分內(nèi)存數(shù)據(jù) Mem和寄存器 Reg 2類;ParamType表示污點(diǎn)數(shù)據(jù)作為系統(tǒng)調(diào)用的參數(shù)信息,分入?yún)n、出參out、出入?yún)n-out 3類。借鑒文獻(xiàn)[9]中的方法設(shè)計(jì)一個(gè)雙向鏈表記錄污點(diǎn)信息,用于回溯污點(diǎn)數(shù)據(jù)的傳播過(guò)程。

        對(duì)于數(shù)據(jù)依賴關(guān)系,在執(zhí)行過(guò)程中將系統(tǒng)調(diào)用的出參、出入?yún)⒑头祷刂翟O(shè)置為污點(diǎn)源,然后跟蹤數(shù)據(jù)操作指令和內(nèi)存操作指令進(jìn)行污點(diǎn)傳播,當(dāng)執(zhí)行到新的系統(tǒng)調(diào)用時(shí)分析其入?yún)⑹欠駷槲埸c(diǎn)數(shù)據(jù),若是則回溯分析該系統(tǒng)與前一個(gè)系統(tǒng)調(diào)用存在的數(shù)據(jù)依賴關(guān)系,若存在流依賴、反依賴、輸入依賴和輸出依賴中的任何一種,則記錄兩者之間的數(shù)據(jù)依賴關(guān)系然,并將該系統(tǒng)調(diào)用的出參、出入?yún)⒑头祷刂翟O(shè)置為新的污點(diǎn)源。

        對(duì)于控制依賴關(guān)系,借鑒文獻(xiàn)[8]中的方法進(jìn)行構(gòu)建。以參數(shù)hProcess和hProcess2的污點(diǎn)傳播過(guò)程為例,最終形成的SCDG的具體信息如圖3所示。

        圖3 混淆后的SCDG部分具體信息

        3.2 SCDG預(yù)處理

        3.2.1 噪聲API的識(shí)別消除

        本文主要解決污點(diǎn)源復(fù)用式噪聲API問(wèn)題,通過(guò)對(duì)比分析發(fā)現(xiàn),污點(diǎn)源復(fù)用式噪聲 API有 3個(gè)主要特征:

        (1)該類API的出參或返回值是新的污點(diǎn)源。

        (2)為了保證后續(xù)調(diào)用的正確性,新污點(diǎn)源的值與原污點(diǎn)源的值必須是相等的。

        (3)新污點(diǎn)源的值是接受原污點(diǎn)源為輸入,并經(jīng)過(guò)計(jì)算而形成的,所以,該API與產(chǎn)生或使用原污點(diǎn)源的API存在流依賴或輸入依賴關(guān)系。

        依據(jù)上述3個(gè)特征,可以設(shè)計(jì)出噪聲API識(shí)別與消除過(guò)程:

        (1)遍歷 SCDG圖,將 ParamType為out或 in-out類型的污點(diǎn)數(shù)據(jù)加入污點(diǎn)源信息集合。

        (2)在污點(diǎn)源信息集合中找出Value相等的污點(diǎn)源對(duì)偶。

        (3)對(duì)于每一對(duì)污點(diǎn)源對(duì)偶<A, B>,若 B對(duì)應(yīng)的API與A對(duì)應(yīng)的API或A所在污點(diǎn)信息雙向鏈表的任一污點(diǎn)信息對(duì)應(yīng)的API存在輸入依賴或流依賴,則標(biāo)記B對(duì)應(yīng)的API調(diào)用為噪聲API。

        (4)對(duì)于噪聲API,在SCDG中找出與其具有數(shù)據(jù)依賴關(guān)系和控制依賴關(guān)系的前驅(qū)節(jié)點(diǎn) F和后繼節(jié)點(diǎn)B,根據(jù)F和B的污點(diǎn)數(shù)據(jù)信息,建立相應(yīng)的依賴關(guān)系,并去除噪聲API與F、B節(jié)點(diǎn)之間的依賴關(guān)系。

        3.2.2 噪聲API的判定與消除

        通過(guò)對(duì)API之間的4種數(shù)據(jù)依賴關(guān)系發(fā)現(xiàn):流依賴和反依賴直接決定了兩者的執(zhí)行順序不可改變,存在輸出依賴關(guān)系的2個(gè)API順序重排后,輸出的值有可能不一樣,所以也不能重排。只有輸入依賴關(guān)系的2個(gè)API,兩者的順序重排后執(zhí)行結(jié)果是一樣的。

        為了表示API重排消除后的控制依賴關(guān)系,本文設(shè)計(jì)了統(tǒng)一的控制依賴圖。在該圖中,控制依賴關(guān)系表示一個(gè)API的執(zhí)行依賴于其他API的預(yù)先執(zhí)行,如圖4所示,A、B是可以重排的,前2種控制依賴圖可以統(tǒng)一成后面的控制依賴圖。

        圖4 統(tǒng)一的控制依賴圖

        根據(jù)上述分析可以設(shè)計(jì)出 API重排的判定和消除過(guò)程:

        (1)按照控制依賴關(guān)系遍歷 SCDG圖,對(duì)于每一個(gè)節(jié)點(diǎn)與其他節(jié)點(diǎn)的控制依賴關(guān)系,檢查相應(yīng)的數(shù)據(jù)依賴關(guān)系,若兩者不存在數(shù)據(jù)依賴或只存在輸入依賴,則兩者的順序是可以重排的。

        (2)對(duì)于可重排的2個(gè)節(jié)點(diǎn),消除兩者原有的控制依賴關(guān)系。然后根據(jù)前一個(gè)節(jié)點(diǎn)的數(shù)據(jù)依賴關(guān)系,建立該節(jié)點(diǎn)與其數(shù)據(jù)依賴關(guān)系上的后繼節(jié)點(diǎn)的控制依賴關(guān)系。然后處理下一個(gè)節(jié)點(diǎn)。圖5是圖1經(jīng)過(guò)預(yù)處理的效果。

        圖5 SCDG預(yù)處理后的函數(shù)依賴圖

        3.3 SCDG相似度分析

        定義 2(公共子圖) 給定圖 G1、G2,C是 G1的子圖,如果C子圖同構(gòu)于G2,則C是G1和G2的一個(gè)公共子圖。

        由于2個(gè)圖的公共子圖并不一定是連通的,此處稱兩者的公共子圖并集為公共部分。實(shí)際中 2個(gè)SCDG的公共部分在各自 SCDG中所占比例是不同的,為了更加精確地描述2個(gè)SCDG的相似性,本文使用Jaccard系數(shù)表示2個(gè)SCDG的相似度。對(duì)于A、B 2個(gè)SCDG:

        其中,A∩B是兩者的公共子圖并集;A∪B是兩者合并圖;|A∪B|表示圖中節(jié)點(diǎn)的數(shù)量,也就是系統(tǒng)調(diào)用的個(gè)數(shù),因此Jaccard系數(shù)就表示2個(gè)SCDG中相同功能部分占兩者所有功能的比例。

        計(jì)算J(A, B)的關(guān)鍵點(diǎn)就是獲取|A∩B|,也就是獲取公共子圖并集。本文采用 VF2算法[10]計(jì)算2個(gè)圖的公共子圖,進(jìn)而獲取公共子圖并集,由此設(shè)計(jì)如下的SCDG相似度分析算法:

        算法 SCDG相似度分析算法

        輸入 惡意代碼SCDG:A,可疑代碼SCDG:B

        輸出 A、B的相似度

        (1)對(duì) A、B進(jìn)行預(yù)處理,并對(duì) A中的每一個(gè)子圖設(shè)置Visited標(biāo)志為False。

        (2)若所有子圖的 Visited標(biāo)志為 True,則轉(zhuǎn)步驟(3),否則選擇A中一個(gè)Visited標(biāo)志為False的子圖S,調(diào)用VF2算法檢查它是否子圖同構(gòu)于 B,若是則將 S加入公共子圖集合中。設(shè)置S的Visited標(biāo)志為True,轉(zhuǎn)步驟(2)。

        (3)根據(jù)獲取的公共子圖集合,計(jì)算A、B的Jaccard系數(shù)并返回。

        4 實(shí)驗(yàn)結(jié)果

        本文選取常見(jiàn)的木馬Downloader,它主要功能是向 IE進(jìn)程注入一個(gè)線程,實(shí)現(xiàn)下載,并運(yùn)行下載的程序;然后對(duì)源代碼進(jìn)行修改形成4個(gè)變種A、B、C和D。

        在測(cè)試中,采用依賴相似度分析方法分別對(duì)Downloader和它的4個(gè)變種的相似度進(jìn)行分析,同時(shí)采用序列相似度分析進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。

        表1 Downloader變種相似度分析比較

        從表1可以發(fā)現(xiàn),API噪聲和API重排使得原有惡意代碼的API序列發(fā)生巨大變化,對(duì)基于序列相似度的分析有較大影響,而基于依賴關(guān)系的相似度分析則很好地解決了這個(gè)問(wèn)題,分析結(jié)果顯示兩者的相似度達(dá)到90%以上。但是對(duì)于添加或刪除部分功能的變種,公共功能部分的API序列是沒(méi)有發(fā)生變化的,所以兩者的分析效果基本相似的。

        從該對(duì)比中可以發(fā)現(xiàn),基于依賴關(guān)系的相似度分析更能有效解決API噪聲、API重排等API級(jí)行為混淆的問(wèn)題。

        5 結(jié)束語(yǔ)

        本文提出一種基于 API依賴關(guān)系的代碼相似度分析方法對(duì)API噪聲、API重排等混淆方式具有較好的抗干擾效果,但其分析過(guò)程與動(dòng)態(tài)分析平臺(tái)的效率息息相關(guān),所以針對(duì)代碼多路徑分析的抗分析技術(shù)必然成為對(duì)抗動(dòng)態(tài)分析的重要方向,這也是下一步研究的重點(diǎn)。

        [1]Wang Xinran, Jhi Yoon-Chan, Zhu Sencun, et al.Detecting Software Theft via System Call Based Birthmarks[C]//Proc.of the 25th Annual Computer Security Applications Conference.Honolulu, USA∶ [s.n.], 2009∶ 149-158.

        [2]Christodorescu M, Jha S, Kruegel C.Mining Specifications of Malicious Behavior[C]//Proc.of the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering.New York, USA∶ACM Press, 2007∶ 5-14.

        [3]Bayer U, Comparetti P M, Hlauscheck C, et al.Scalable,Behavior-based Malware Clustering[C]//Proc.of NDSS’09.San Diego, USA∶ [s.n.], 2009.

        [4]Wang Xinran, Jhi Yoon-Chan, Zhu Sencun, et al.Behavior Based Software Theft Detection[C]//Proc.of the 16th ACM Conference on Computer and Communications Security.New York, USA∶ ACM Press, 2009.

        [5]Woods S, Yang Qiang.The Program Understand Problem∶Analysis of Heuristic Approach[C]//Proc.of the 18th Int’l Conference on Software Engineering.Berlin, Germany∶[s.n.], 1996∶ 25-29.

        [6]The Symantec Enterprise.Understanding and Managing Polymorphic Virus[EB/OL].(2012-03-20).http∶//www.symantec.com/avcenter/reference/striker.pdf.

        [7]Kaze A.Stealth API-based Decryptor[EB/OL].(2012-03-20).http∶//vxheavens.com/lib/vkz00.html.

        [8]楊 軼, 蘇璞睿, 應(yīng)凌云, 等.基于行為依賴特征的惡意代碼相似性比較方法[J].軟件學(xué)報(bào), 2011, 22(10)∶2438-2453.

        [9]Newsome J, Song D.Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software[C]//Proc.of the 12th Annual Network and Distributed System Security Symposium.[S.1.]∶ IEEE Press, 2005.

        [10]Cordella L P, Foggia P, Sansone C, et al.A (Sub) Graph Isomorphism Algorithm for Matching Large Graphs[J].IEEE Trans.on Pattern Analysis and Machine Intelligence,2004, 26(10)∶ 1367-1372.

        猜你喜歡
        污點(diǎn)重排子圖
        基于代碼重寫(xiě)的動(dòng)態(tài)污點(diǎn)分析
        大學(xué)有機(jī)化學(xué)中的重排反應(yīng)及其歸納教學(xué)實(shí)踐
        重排濾波器的實(shí)現(xiàn)結(jié)構(gòu)*
        臨界完全圖Ramsey數(shù)
        EGFR突變和EML4-ALK重排雙陽(yáng)性非小細(xì)胞肺癌研究進(jìn)展
        使用Lightroom污點(diǎn)去除工具清理照片中的瑕疵
        基于頻繁子圖挖掘的數(shù)據(jù)服務(wù)Mashup推薦
        我國(guó)“污點(diǎn)證人”刑事責(zé)任豁免制度的構(gòu)建
        基于像素重排比對(duì)的灰度圖彩色化算法研究
        不含2K1+K2和C4作為導(dǎo)出子圖的圖的色數(shù)
        亚洲av熟女中文字幕| 精品一区二区三区蜜桃麻豆| 国产老熟女精品一区二区| 国产成人av一区二区三区不卡| 乱人伦中文视频在线| 日日噜噜夜夜狠狠视频| 2019最新中文字幕在线观看| 免费无码毛片一区二区app| 一区二区三区av波多野结衣| 精品免费久久久久久久| 含紧一点h边做边走动免费视频| 欧美日韩精品一区二区视频| 亚洲伊人色欲综合网| 中国国语毛片免费观看视频| 国产人碰人摸人爱视频| 国产成+人+综合+亚洲专| 国产高清无码在线| 亚洲三区二区一区视频| 在线a人片免费观看高清| 国产av色| 91羞射短视频在线观看| 日本在线一区二区三区视频观看| 亚洲精品在线视频一区二区| 亚洲一区二区三区内裤视| 亚洲免费观看视频| 麻豆精品久久久久久久99蜜桃 | 激情乱码一区二区三区| 亚洲av粉嫩性色av| 蜜桃色av一区二区三区麻豆 | 偷拍韩国美女洗澡一区二区三区| 中文字幕一区二区av| 一区二区三区激情免费视频| 精品乱人伦一区二区三区| 99香蕉国产精品偷在线观看| 亚洲av无码成人黄网站在线观看| 国产av一区二区三区日韩| 国产精品高潮av有码久久| av资源吧首页在线观看| 深夜一区二区三区视频在线观看| 性欧美丰满熟妇xxxx性久久久| 领导边摸边吃奶边做爽在线观看 |