国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android本地惡意應(yīng)用鑒別系統(tǒng)的實(shí)現(xiàn)

2016-05-14 22:34廖元之
網(wǎng)絡(luò)空間安全 2016年4期
關(guān)鍵詞:安卓

【 摘 要 】 近年來(lái),Android手機(jī)由于其出色的用戶(hù)體驗(yàn),吸引了大量的用戶(hù),同時(shí)也因?yàn)樗拈_(kāi)源特性,也極易受到惡意軟件的攻擊,其中本地惡意軟件尤為惡劣。論文針對(duì)Android平臺(tái)上本地惡意應(yīng)用軟件,提出了基于代碼基本塊控制流比較的鑒別方法。通過(guò)代碼中基本塊的分離,控制流圖的構(gòu)造及其信息的抽象比較,設(shè)計(jì)實(shí)現(xiàn)了一套Android平臺(tái)上本地代碼惡意應(yīng)用鑒別系統(tǒng)。

【 關(guān)鍵詞 】 安卓;本地代碼;控制流圖

【 Abstract 】 In recent years, Android smart phone attracts many users owing to its brilliant user experience. Meanwhile, its vulnerable to malware because of its open-source characteristic, especially native code. A method was proposed to detect native malware based on the comparison of control flow graph of basic blocks. By the separation of basic blockscode, the construction of control flow graph and the comparison of the abstract of it, a detection system is designed and implemented that can identify native malware on Android platform.

【 Keywords 】 android; native code; control flow graph

1 引言

近年來(lái),移動(dòng)終端發(fā)展迅速,2011年,全球移動(dòng)掌上設(shè)備數(shù)量達(dá)到了16億,單單蘋(píng)果系統(tǒng)和Android系統(tǒng)的用戶(hù)在2011年到2012年間就從3800萬(wàn)漲到了8400萬(wàn)。2013年初,Android系統(tǒng)的用戶(hù)的數(shù)量超越了包括蘋(píng)果、塞班和黑莓在內(nèi)的多種系統(tǒng)的用戶(hù)數(shù)量。NetMarketShare網(wǎng)站2016年2月統(tǒng)計(jì)結(jié)果,Android系統(tǒng)占市場(chǎng)份額第一,為58.75%,iOS第二位為32.93%,而第三位的Windows Phone只有2.86%。

隨著智能手機(jī)的普及,手機(jī)病毒也隨之得到快速發(fā)展。McAfee的一份調(diào)查報(bào)告顯示,其實(shí)驗(yàn)室2015年第一季度收集的手機(jī)病毒比2014年第四季度增長(zhǎng)了13%,總共已經(jīng)包含了4億個(gè)病毒樣本。而2015年第一季度出現(xiàn)的新型手機(jī)病毒比2014年第四季度增長(zhǎng)了49%。 G DATA發(fā)布的《移動(dòng)惡意軟件報(bào)告-2015年3季度》顯示,2015年第三季度發(fā)現(xiàn)惡意軟件574,706例,與2014年同期相比,發(fā)現(xiàn)的新型Android系統(tǒng)惡意軟件增長(zhǎng)了50%。

而在各式各樣的惡意軟件之中,將惡意功能隱藏在本地代碼中的惡意軟件尤為惡劣。它的惡意功能由C/C++代碼實(shí)現(xiàn)并編譯成.so鏈接庫(kù),無(wú)法像Java源碼一樣被還原分析,給識(shí)別帶來(lái)較大困難,所以某些不法人士對(duì)它青睞有加。目前惡意本地代碼這一領(lǐng)域是Android平臺(tái)應(yīng)用安全一個(gè)不可忽視的環(huán)節(jié),對(duì)其的研究分析具有極大的挑戰(zhàn)性,有利于全面提高Android平臺(tái)應(yīng)用的安全性。

2 研究現(xiàn)狀

目前主流的惡意軟件分析主要還是對(duì)Java代碼的研究分析,少有人真正去關(guān)注本地代碼級(jí)別的惡意軟件。而相對(duì)可行的鑒別本地代碼惡意軟件的方法是利用沙盒軟件,將目標(biāo)APP放入其中運(yùn)行,觀測(cè)其輸入輸出流有無(wú)可疑信息。但是這樣的方法對(duì)于計(jì)算機(jī)資源的消耗量比較大。文獻(xiàn)[5]提出了另外兩種試行方法,本地代碼隔離(Native Code Separation)和本地代碼權(quán)限管理(Managing Native Code Permissions),并且制作出了原型,但是并未公開(kāi),并且這種方法難度比較大。文獻(xiàn)[6]制作了將機(jī)器學(xué)習(xí)(Machine Learning)與傳統(tǒng)手段相結(jié)合的病毒檢測(cè)系統(tǒng),在面對(duì)大量樣本時(shí),系統(tǒng)可以通過(guò)機(jī)器學(xué)習(xí)一定程度上自動(dòng)識(shí)別新的病毒。實(shí)驗(yàn)表明其病毒檢測(cè)成功率超過(guò)90%,但需要大量后臺(tái)資源的支持。

另一類(lèi)有效的方法是利用基本塊控制流之間的異同進(jìn)行檢測(cè),對(duì)控制流分析的分析研究已經(jīng)有較長(zhǎng)的一段時(shí)間,其在計(jì)算機(jī)的各個(gè)領(lǐng)域內(nèi)都有重要作用。但是,對(duì)高級(jí)語(yǔ)言的控制流分析已趨近成熟,而對(duì)于匯編語(yǔ)言的控制流分析尚在摸索之中。文獻(xiàn)[7]對(duì)不同類(lèi)型的處理器的匯編指令進(jìn)行了統(tǒng)一歸類(lèi),創(chuàng)造性地提出了一種能夠繪制匯編代碼子程序流程圖的通用算法,但其算法只能適用于單個(gè)基本塊的控制流構(gòu)造,未涉及基本塊之間的控制流構(gòu)造。文獻(xiàn)[8]彌補(bǔ)了文獻(xiàn)[7]的缺陷,為基本塊之間的控制流構(gòu)造提供了有效的思路和方法,但是并未屏蔽匯編代碼中的數(shù)據(jù)部分,且控制流的構(gòu)造過(guò)于繁瑣復(fù)雜,對(duì)于本項(xiàng)目目標(biāo)來(lái)說(shuō)不完全適用。文獻(xiàn)[9]利用其制作的gSpan系統(tǒng)進(jìn)行代碼惡意行為的控制流圖形挖掘,然后通過(guò)比較其圖形來(lái)計(jì)算其相似性,不足之處是其系統(tǒng)是針對(duì)JavaScript,且并未給出具體實(shí)現(xiàn)方式。Cyber Security實(shí)驗(yàn)中心的研究人員提出一種利用控制流圖優(yōu)化比較的方式來(lái)檢測(cè)惡意軟件,對(duì)于相同而多余的步驟合并之后生成控制流圖,收集惡意代碼控制流圖并與目標(biāo)比較從而判斷其是否為惡意軟件,雖然其方法依然是針對(duì)Windows平臺(tái)的病毒,但對(duì)本系統(tǒng)來(lái)說(shuō)有很相當(dāng)大的借鑒意義。

本文結(jié)合以上方法,提出一種基本塊控制流散列函數(shù)用于安卓本地惡意代碼之間的比較,方便可用,高效便捷,并能有效的抵抗病毒的混淆攻擊。

3 鑒別系統(tǒng)流程

目前對(duì)于原生惡意代碼的研究很少,沒(méi)有開(kāi)發(fā)出高效率的能有效針對(duì)原生惡意軟件的系統(tǒng)。盡管有些散落在各個(gè)角落里的走在行業(yè)前端的工程師已經(jīng)在著手分析原生惡意代碼,但大多只是基于ARM匯編語(yǔ)言的對(duì)匯編代碼的靜態(tài)分析,效率較低,不具普適性。一旦出現(xiàn)新的惡意軟件,又要重新進(jìn)行代碼分析?,F(xiàn)在常用的監(jiān)測(cè)方式是基于沙盒(Sandbox)的動(dòng)態(tài)監(jiān)測(cè)方式,將目標(biāo)APP置于沙盒之中模擬其運(yùn)行環(huán)境,同時(shí)觀測(cè)記錄其輸入輸出信息,配合一定的靜態(tài)分析,得到目標(biāo)的函數(shù)調(diào)用列表,數(shù)據(jù)流向和行為信息。這是一種有效而廣泛的監(jiān)測(cè)方式。但是唯一的缺點(diǎn)是需要消耗大量的計(jì)算機(jī)資源,還需要對(duì)相關(guān)的知識(shí)有相當(dāng)?shù)睦斫庖约耙欢ǖ木幊趟?。相較于以上兩種檢測(cè)手段,本文提出基于基本塊控制流比較的本地惡意代碼鑒別系統(tǒng)的實(shí)現(xiàn)方法,如圖1所示。

鑒別體系首先將目標(biāo)APK反編譯,得到其中本地代碼鏈接庫(kù),再利用此鏈接庫(kù)反編譯之后得到的.gdl文件提取基本塊控制流信息,之后將提取出的信息與病毒庫(kù)中已存的病毒控制流信息相對(duì)比來(lái)判斷其是否是一個(gè)惡意軟件。

3.1 本地代碼鏈接庫(kù)

Android NDK全稱(chēng)是Android Native Development Kit,Android程序是運(yùn)行在Dalvik虛擬機(jī)中的,而NDK則使得用戶(hù)能夠使用C/C++原生代碼執(zhí)行部分程序功能。隨著Android行業(yè)的發(fā)展,對(duì)Android程序安全性的要求越來(lái)越高,而Android中的Java層代碼很容易被反編譯并破解分析,NDK中提供的C/C++代碼則相反,極難反編譯。目前大部分的開(kāi)源庫(kù)也是使用C/C++代碼編寫(xiě),使用NDK調(diào)用這些第三方庫(kù)能夠較少程序員自身的負(fù)擔(dān)并且方便移植共享。

由C/C++編寫(xiě)的程序在Android NDK提供的交叉編譯工具鏈中的gcc編譯器編譯之后,就變成了.so文件。.so文件是Linux下的共享函數(shù)庫(kù),對(duì)應(yīng)于Windows下的.dll文件,它存在于APK反編譯文件夾下的LIB文件夾中,根據(jù)處理器型號(hào)的不同又會(huì)存放在不同的子文件夾下。本病毒檢測(cè)系統(tǒng)重點(diǎn)關(guān)注的就是此.so文件。

3.2 控制流圖

本系統(tǒng)的病毒檢測(cè)主要是依靠基本塊以及由基本塊生成的控制流圖。

基本塊(Basic Block)是一段線性代碼序列,除了入口和出口以外不含任何的分支。控制流從基本塊的開(kāi)始處進(jìn)入,從其出口離開(kāi),控制流在其內(nèi)不會(huì)停滯亦不會(huì)出現(xiàn)分支,直到離開(kāi)本基本塊?;緣K的劃分規(guī)則為:2條相鄰的指令若在同一基本塊中,當(dāng)期僅當(dāng)前一條指令被執(zhí)行后,后一條指令才會(huì)被執(zhí)行。

控制流圖(Control Flow Graph,CFG)是基于基本塊而畫(huà)出的表示程序流動(dòng)向的有向圖,每個(gè)函數(shù)的控制流圖只有一個(gè)入口,但可以有多個(gè)出口。如圖2所示,圖中每個(gè)圓圈代表一個(gè)基本塊,箭頭則表示控制流的變化方向。

下一個(gè)任務(wù)就是將.so文件中所包含的各個(gè)函數(shù)的CFG信息抽象出來(lái)成為一個(gè)集合,作為其基本塊信息,并進(jìn)一步連接操作碼序列以實(shí)現(xiàn)基本塊信息的壓縮存儲(chǔ)。收集多種病毒的基本塊信息之后存儲(chǔ)在本地作為病毒庫(kù),在面對(duì)未知APK時(shí)則將其中的.so文件進(jìn)行同樣的操作,然后與病毒庫(kù)中包含惡意功能的樣本進(jìn)行對(duì)比,在相似率達(dá)到預(yù)設(shè)閾值時(shí)即可認(rèn)為其也包含惡意功能。

3.3 構(gòu)建塊控制流圖并生成塊信息

整個(gè)流程的關(guān)鍵是如何生成函數(shù)的CFG以及如何抽象其中的結(jié)點(diǎn)信息。ida pro這個(gè)工具直接提供了函數(shù)CFG生成的方法。圖3是ida中的匯編源碼及其生成的CFG。

利用IDA自帶的IDC腳本語(yǔ)言將函數(shù)CFG保存在本地,再用文本格式打開(kāi)發(fā)現(xiàn)其中包含了此圖中所有的結(jié)點(diǎn)構(gòu)造信息和匯編級(jí)代碼:

將基本塊中每條操作碼的前三位提取出來(lái)集合作為這個(gè)基本塊的抽象信息。ARM匯編語(yǔ)言中大多出操作碼為三位,少部分操作條件復(fù)雜的為五位,以及幾個(gè)跳轉(zhuǎn)操作為一位或者兩位。若單純的提取操作碼會(huì)冗余出許多不必要的信息,而將截取的位數(shù)降低過(guò)多,操作碼的區(qū)分度將大幅度降低。取三位也能很好的將需要特別關(guān)注的跳轉(zhuǎn)指令與數(shù)據(jù)操作指令區(qū)分開(kāi)。

3.4 判別檢測(cè)

對(duì)于一個(gè)未知APK,使用Apktool工具對(duì)其進(jìn)行反編譯,在LIB文件下可以找到對(duì)應(yīng)的目標(biāo).so文件。將IDAPro打開(kāi),導(dǎo)入libnative.so。在這里使用自己編寫(xiě)的IDC小腳本導(dǎo)出此實(shí)例內(nèi)所有函數(shù)的CFG,之后會(huì)在so文件同一目錄下生成所有函數(shù)的.gdl文件。

接下使用基本塊信息提取程序?qū)@些CFG文件進(jìn)行操作。得到一個(gè)sample.txt,其中內(nèi)容如圖5所示。每一行都是一個(gè)基本塊的抽象信息。接著使用基本塊信息比較程序比較目標(biāo)樣本和病毒庫(kù)中樣本。比較算法采用的是字符串匹配算法,對(duì)于每一條基本塊信息,遍歷病毒比較樣本中所有基本塊信息,直到找到相同的為止。記錄下有相同基本塊信息的基本塊數(shù),最后與基本塊總數(shù)相除得到該樣本與病毒庫(kù)中特定樣本的相似度。

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

實(shí)驗(yàn)采用AndroidMalShare官網(wǎng)49個(gè)家族共1260個(gè)惡意病毒樣本,其中8個(gè)家族大范圍使用了本地代碼作為惡意功能的載體。統(tǒng)計(jì)結(jié)果如表1:

在這8個(gè)家族之中,DroidDream是AnserverBot和BaseBridge的升級(jí)版,他們使用的本地代碼完全一致。同樣,KungFu家族4個(gè)版本的本地代碼也幾乎完全一樣。于是,基于本地代碼惡意功能即可簡(jiǎn)單分為三類(lèi):DroidDream、KungFu和zHash。表2是幾個(gè)樣本的對(duì)比結(jié)果。

對(duì)于相似值(Similarity-a, Similarity-b),定義如下:

Similarity-a = 目標(biāo)樣本與病毒基本塊控制流信息相似條數(shù)/目標(biāo)樣本基本塊控制流信息條數(shù)*100%;

Similarity-b = 目標(biāo)樣本與病毒基本塊控制流信息相似條數(shù)/病毒基本塊控制流信息條數(shù)*100%;

因此每個(gè)樣本與每個(gè)病毒相互之間有一對(duì)數(shù)據(jù)。

假設(shè)病毒中的代碼功能為集合v,目標(biāo)樣本功能為集合t:

(1)若t=v,那么Similarity-a=Similarity-b=100%;

(2)若v∈t,那么Similarity-a

(3)若t∈v,那么Similarity-b

綜上所述,?。⊿imilarity-a,Similarity-b)中的Similarity-b作為判斷目標(biāo)樣本是否為病毒的數(shù)值依據(jù)。由此,表2可以簡(jiǎn)化為表3。

可以看到,Sample1與KungFu家族病毒樣本有極高的相似性,顯然是KungFu病毒家族的一員。而余下樣本與三種家族的病毒相似率均不高,并不是病毒。事實(shí)是,Sample1正是在AndroidMalShare官網(wǎng)所下載的KungFu病毒的一種,而余下病毒則是在Android應(yīng)用官網(wǎng)首頁(yè)上下載的幾個(gè)普通APP。實(shí)驗(yàn)證明病毒檢測(cè)系統(tǒng)運(yùn)行良好。

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

本文提出的Android本地惡意代碼檢測(cè)系統(tǒng),基于匯編級(jí)代碼基本塊控制流的抽象散列函數(shù)的比較。抽取了基本塊控制流的基本特征,忽略了函數(shù)內(nèi)部數(shù)據(jù)定義運(yùn)算細(xì)節(jié),能夠有效對(duì)抗病毒代碼的混淆等一系列抗檢測(cè)手段。作為輕量型病毒檢測(cè)系統(tǒng),可提高企業(yè)或組織內(nèi)的病毒檢測(cè)的效率。

參考文獻(xiàn)

[1] Market Share Statistics for Internet Technologies.http://www.netmarketshare.com/.

[2] McAfee Labs Threats Report,May 2015.http://www.mcafee.com/us/resources/reports/rp-quarterly-threat-q1-2015.pdf.

[3] G DATA移動(dòng)惡意軟件報(bào)告-2015年3季度.https://www.gdata-china.com/news/article/article/mobile20160219.

[4] 豐生強(qiáng).Android軟件安全與逆向分析[M].北京:人民郵電出版社,2015.

[5] Mengtao Sun,Gang Tan.NativeGuard: protecting android applications from third-party native libraries.WiSec '14: Proceedings of the 2014 ACM conference on Security and privacy in wireless & mobile networks.July,2014.165-176.

[6] Zhenlong Yuan,Yongqiang Lu,Yibo Xue.Droiddetector: android malware characterization and detection using deep learning.Tsinghua Science and Technology,2016,21(1):114-123.

[7] 周博,蔣烈輝,費(fèi)勤福.匯編子程序流程圖繪制算法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(1):160-171.

[8] 竇增杰,王震宇,陳楠,王瑞敏,田佳.基于可執(zhí)行代碼中間表示的控制流分析[J].軟件技術(shù)與數(shù)據(jù)庫(kù),2010,36(21):31-36.

[9] Chang Choi,Xuefeng Piao,Junho Choi,Mungyu Lee,Pankoo Kim,Malicious behavior pattern mining using control flow graph.RACS Proceedings of the 2015 Conference on research in adaptive and convergent systems.October,2015.119-122.

[10] S. S. Anju,P. Harmya,Noopa Jagadeesh,R. Darsana.Malware detection using assembly code and control flow graph optimization.A2CWiC '10: Proceedings of the 1st Amrita ACM-W Celebration on Women in Computing in India.September 2010.Article No.65.

[11] AndroidMalShare, http://andromalshare.androidmalware.org:8080/#home.

[12] Rafael Fedler,Marcel Kulicke,Julian Schütte.Natice Code Execution Control for Attack Mitigation on Android.SPSM '13: Proceedings of the Third ACM workshop on Security and privacy in smartphones & mobile devices.November,2013,15-20.

基金項(xiàng)目:

江蘇省大學(xué)生科技創(chuàng)新訓(xùn)練計(jì)劃(stitp)資助(項(xiàng)目編號(hào):SZD2015008)。

作者簡(jiǎn)介:

廖元之(1995-),男,江蘇南京人,南京郵電大學(xué),本科在讀生;主要研究方向和關(guān)注領(lǐng)域:Android平臺(tái)病毒防治。

猜你喜歡
安卓
四大重要升級(jí)安卓13正式定檔
安卓應(yīng)用64位的問(wèn)題
安卓?jī)?nèi)存巨大為何還要?dú)⒑笈_(tái)
安卓12預(yù)覽版體驗(yàn)
在Windows 11中玩轉(zhuǎn)《安卓》App
安卓11正式發(fā)布
讓iPhone變安卓,這是真的野
文物表情包
安卓系統(tǒng)的更新?lián)Q代
封閉的安卓沒(méi)有未來(lái)
万盛区| 乌海市| 宜都市| 射阳县| 同德县| 惠东县| 武功县| 肥乡县| 乌审旗| 兴宁市| 子洲县| 东乌| 固原市| 江都市| 丽水市| 黑山县| 滦南县| 区。| 五家渠市| 镶黄旗| 台南市| 塘沽区| 报价| 井冈山市| 长子县| 大渡口区| 黑河市| 贞丰县| 海伦市| 台江县| 梅河口市| 名山县| 土默特左旗| 阳泉市| 浙江省| 上杭县| 舞钢市| 彭州市| 遂溪县| 富阳市| 怀仁县|