• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于機(jī)器學(xué)習(xí)的Android應(yīng)用組件暴露漏洞分析

      2019-10-21 08:38:58邵帥王眉林陳冬青王婷姜鑫
      關(guān)鍵詞:調(diào)用漏洞應(yīng)用程序

      邵帥, 王眉林, 陳冬青, 王婷, 姜鑫

      (1. 中國(guó)信息安全測(cè)評(píng)中心,北京 100085; 2. 北京郵電大學(xué) 計(jì)算機(jī)學(xué)院,北京 100876)

      隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,Android應(yīng)用數(shù)目快速增長(zhǎng),Android應(yīng)用軟件的漏洞問(wèn)題日益突出,其數(shù)量越來(lái)越多,造成的危害也越來(lái)越大. 根據(jù)通付盾發(fā)布的《2017年度移動(dòng)安全報(bào)告》,2017年移動(dòng)應(yīng)用安全漏洞數(shù)量規(guī)模累計(jì)超過(guò)2.8 億,由于高危漏洞導(dǎo)致經(jīng)濟(jì)損失達(dá)到數(shù)千億美元[1].

      Android應(yīng)用程序由應(yīng)用組件構(gòu)成,組件是Android系統(tǒng)中較為獨(dú)特的程序塊,組件相關(guān)的漏洞一直是Android漏洞分析的研究熱點(diǎn). 一般來(lái)說(shuō),組件暴露漏洞包括組件權(quán)限提升漏洞和組件敏感信息泄露漏洞. 數(shù)據(jù)流分析(污點(diǎn)傳播、可達(dá)路徑分析)是目前普遍采用的組件暴露漏洞分析方法. Chex[2]可以通過(guò)在組件對(duì)外開(kāi)放的接口和內(nèi)部敏感數(shù)據(jù)泄露點(diǎn)之間進(jìn)行污點(diǎn)傳播分析來(lái)挖掘組件敏感信息泄露漏洞,該工具能夠檢測(cè)應(yīng)用的所有入口點(diǎn),然后對(duì)應(yīng)用全局進(jìn)行數(shù)據(jù)流分析,分析每一個(gè)入口點(diǎn)的執(zhí)行過(guò)程,檢測(cè)是否存在從開(kāi)放接口到敏感數(shù)據(jù)之間的路徑. Amandroid[3]是Android組件間數(shù)據(jù)流分析框架,在數(shù)據(jù)流分析的過(guò)程中對(duì)所有對(duì)象的指向關(guān)系,以及intent的目標(biāo)和所攜帶的數(shù)據(jù)流都進(jìn)行了分析. IccTA[4]則通過(guò)靜態(tài)污點(diǎn)分析實(shí)現(xiàn)了Android應(yīng)用程序中組件間隱私泄漏的檢測(cè). Woodpecker[5]能夠檢測(cè)應(yīng)用中存在的顯式和隱式功能泄露,該工具對(duì)APP進(jìn)行可達(dá)路徑分析,如果能夠提取出從程序進(jìn)入點(diǎn)到敏感API的可達(dá)路徑,則認(rèn)為存在顯式的功能泄露,而隱式功能泄露檢測(cè)則還要分析初始化代碼. 楊天長(zhǎng)等[6]針對(duì)Android應(yīng)用Intent通信可能導(dǎo)致的安全風(fēng)險(xiǎn),設(shè)計(jì)了基于動(dòng)靜結(jié)合的安全威脅檢測(cè)方法. Zhang等[7]針對(duì)組件劫持漏洞提出了AppSealer框架,不但可以通過(guò)可達(dá)路徑分析發(fā)現(xiàn)漏洞,還能自動(dòng)化打補(bǔ)丁.

      Maiorca等[8]提出了一種名為R-PackDroid的Android惡意軟件檢測(cè)系統(tǒng),使用字節(jié)碼和API包作為特征集. StormDroid[9]結(jié)合Android應(yīng)用的靜態(tài)和動(dòng)態(tài)特征,并基于機(jī)器學(xué)習(xí)檢測(cè)Android惡意軟件. Marko等[10]評(píng)估了一些自動(dòng)檢測(cè)遠(yuǎn)程存儲(chǔ)庫(kù)中Android惡意軟件的技術(shù). 這些技術(shù)跟蹤沙箱中應(yīng)用的系統(tǒng)調(diào)用,并使用機(jī)器學(xué)習(xí)基于系統(tǒng)調(diào)用對(duì)應(yīng)用程序進(jìn)行分類.

      機(jī)器學(xué)習(xí)技術(shù)已普遍用于源代碼或二進(jìn)制代碼的漏洞分析中. Grieco等[11]提出了一種利用機(jī)器學(xué)習(xí)進(jìn)行二進(jìn)制程序漏洞預(yù)測(cè)的方法,但是該方法只能預(yù)測(cè)漏洞存在的可能,不能定位漏洞. 文獻(xiàn)[12]提出了一種新的缺陷搜索方案,將CFG轉(zhuǎn)換為高級(jí)數(shù)字特征向量,能夠在跨平臺(tái)的固件中搜索定位已知漏洞. VulDeePecker[13]通過(guò)向量表示程序中語(yǔ)義相關(guān)的多個(gè)(不一定是連續(xù)的)代碼行,并實(shí)現(xiàn)了基于深度學(xué)習(xí)的漏洞檢測(cè)系統(tǒng)及對(duì)應(yīng)的漏洞數(shù)據(jù)集.

      本文提出了一種基于機(jī)器學(xué)習(xí)檢測(cè)組件類Android應(yīng)用漏洞的方法:根據(jù)組件暴露漏洞原理總結(jié)了漏洞模型. 提取Android應(yīng)用程序特征,并基于漏洞模型進(jìn)行特征選擇和量化,然后設(shè)計(jì)并實(shí)現(xiàn)了對(duì)應(yīng)的機(jī)器學(xué)習(xí)系統(tǒng),將樣本特征集輸入到機(jī)器學(xué)習(xí)算法中,得到漏洞分類模型,最后對(duì)漏洞分析效果進(jìn)行了評(píng)估.

      1 漏洞特征提取與處理

      1.1 Android組件暴露漏洞模型

      Android組件暴露漏洞包括組件劫持漏洞和組件拒絕服務(wù)漏洞. 組件劫持漏洞是指應(yīng)用程序的組件權(quán)限配置不當(dāng),導(dǎo)出的組件可能被第三方APP惡意利用導(dǎo)致權(quán)限提升或者敏感信息泄露;組件拒絕服務(wù)漏洞指應(yīng)用程序組件在處理其他組件傳入的數(shù)據(jù)時(shí),沒(méi)有對(duì)異常參數(shù)進(jìn)行處理,若第三方惡意APP傳入精心構(gòu)造的數(shù)據(jù),可能導(dǎo)致目標(biāo)程序崩潰.

      應(yīng)用程序權(quán)限控制是Android系統(tǒng)中的安全機(jī)制之一,它管理用戶授予每個(gè)應(yīng)用程序的權(quán)限,并防止應(yīng)用程序超出權(quán)限. 但是,如果某個(gè)組件使用了某種敏感權(quán)限,卻又對(duì)外部開(kāi)放,那么第三方APP可能調(diào)用該組件實(shí)現(xiàn)權(quán)限提升或者獲得敏感數(shù)據(jù). 組件劫持漏洞的攻擊場(chǎng)景如圖1所示. 惡意應(yīng)用程序沒(méi)有獲得調(diào)用系統(tǒng)API進(jìn)行敏感操作(如調(diào)用getLocation()撥打電話)所需的權(quán)限P(如調(diào)用getLocation()需要權(quán)限“android.permission.ACCESS_FINE_LOCATION”). 但是M通過(guò)在應(yīng)用程序A的組件A1中調(diào)用涉及權(quán)限P的方法來(lái)執(zhí)行其敏感操作,M將A1作為跳板,在沒(méi)有獲得授權(quán)的情況下執(zhí)行敏感操作,實(shí)現(xiàn)權(quán)限提升.

      圖1 組件劫持漏洞的攻擊場(chǎng)景Fig.1 The attack scenario of component hijacking vulnerability

      同理,組件拒絕服務(wù)漏洞的攻擊場(chǎng)景為:惡意應(yīng)用向存在漏洞的目標(biāo)應(yīng)用發(fā)送一個(gè)精心構(gòu)造的Intent,目標(biāo)應(yīng)用在處理該Intent時(shí)崩潰.

      通過(guò)分析漏洞原理和攻擊場(chǎng)景,可以得出組件暴露漏洞的4個(gè)基本要素:組件,敏感API、調(diào)用路徑和敏感權(quán)限. 組件是指在應(yīng)用程序中包含敏感操作的應(yīng)用程序組件;敏感API是指涉及敏感權(quán)限的系統(tǒng)API,攻擊者可以通過(guò)開(kāi)放的組件調(diào)用該API;調(diào)用路徑是指從組件入口點(diǎn)到敏感API的調(diào)用路徑,權(quán)限是指用戶授予應(yīng)用程序的系統(tǒng)權(quán)限. 對(duì)于組件劫持漏洞,攻擊者是否可以利用漏洞取決于應(yīng)用程序開(kāi)發(fā)人員是否對(duì)應(yīng)用程序采取安全保護(hù)措施. 當(dāng)開(kāi)發(fā)人員為該組件設(shè)置了訪問(wèn)權(quán)限時(shí),即使代碼中形成漏洞結(jié)構(gòu),攻擊者也無(wú)法利用此漏洞來(lái)實(shí)現(xiàn)攻擊目的.

      基于以上因素,定義了組件暴露漏洞的表達(dá)向量. 其中組件包括組件名稱、導(dǎo)出屬性、組件訪問(wèn)權(quán)限等;敏感API包括敏感API的名稱、參數(shù)、返回值等;調(diào)用路徑包括從組件入口到敏感API的一系列函數(shù)的名稱、參數(shù)、返回值等;權(quán)限包括敏感權(quán)限名稱和級(jí)別.

      1.2 特征選擇

      Android應(yīng)用的特征集合主要包含Android應(yīng)用程序的基本特征和代碼特征. 其中基本Android應(yīng)用程序是指AndroidManifest.xml文件中的配置信息和權(quán)限信息. 代碼特征是指從應(yīng)用程序APK包中的class.dex文件中分析得到的類、方法等信息.

      首先通過(guò)逆向,還原出每個(gè)組件的smali代碼,并方法、參數(shù)等作為其代碼特征;然后從根據(jù)組件暴露漏洞的特征向量從應(yīng)用程序特征和代碼特征中選擇對(duì)應(yīng)特征子集. 組件和敏感權(quán)限從基本特征中提取,敏感API和調(diào)用路徑從代碼特征中提取.

      2 機(jī)器學(xué)習(xí)系統(tǒng)的構(gòu)建

      2.1 特征提取模塊

      本模塊的主要功能是解壓縮、反編譯、解析和提取Android APK文件信息,以供后續(xù)功能選擇. 模塊集成了開(kāi)源框架“Androguard”和“FlowDroid”實(shí)現(xiàn)APK信息提取. 主要通過(guò)Androguard等實(shí)現(xiàn)基本特征的提取,通過(guò)FlowDroid實(shí)現(xiàn)代碼特征的提取.

      圖2 特征提取模塊Fig.2 The feature extraction module

      2.2 特征處理模塊

      該模塊的主要功能是完成從APK元信息到機(jī)器學(xué)習(xí)訓(xùn)練數(shù)據(jù)的轉(zhuǎn)換,模塊包括兩個(gè)子模塊,特征選擇和特征處理. 通過(guò)之前的特征提取模塊,獲得了包含完整Android應(yīng)用信息的特征集,在特征選擇子模塊中將Android應(yīng)用特征集與前面建立的組件暴露漏洞模型相結(jié)合,選取與組件暴露模型相關(guān)的特征,接下來(lái),將特征向量輸入特征處理子模塊,特征處理子模塊將相關(guān)特征集中的特征轉(zhuǎn)換成可量化的形式,并進(jìn)行數(shù)據(jù)清理和特征向量化. 具體為:借鑒詞袋法,將特征所有可能取值放入集合中,并統(tǒng)計(jì)樣本中某項(xiàng)特征的出現(xiàn)次數(shù)作為該特征維度的值. 組件、系統(tǒng)權(quán)限都直接作為特征取值集合,而由于系統(tǒng)API數(shù)量過(guò)多,在將敏感API轉(zhuǎn)換成可用于特征量化的形式之前,首先將敏感API按照其歸屬的功能類進(jìn)行聚類,再將聚類結(jié)果作為API特征取值集合;敏感API聚類完成后,統(tǒng)計(jì)代碼特征中屬于某一類的敏感API的出現(xiàn)次數(shù),作為API的特征維度值. 調(diào)用路徑則由敏感API的調(diào)用步數(shù)表示. 對(duì)于訓(xùn)練樣本APK中的每一個(gè)組件,都將組件特征數(shù)據(jù)拼接為一組信息,再將所有組件信息組建為樣本特征矩陣,寫(xiě)入文件中作為訓(xùn)練數(shù)據(jù). 在構(gòu)建特征矩陣之后,進(jìn)行數(shù)據(jù)清理,即缺失值處理,最后將數(shù)據(jù)矢量化為機(jī)器學(xué)習(xí)算法的輸入形式.

      2.3 漏洞分類模塊

      實(shí)驗(yàn)中將樣本集劃分為訓(xùn)練集和測(cè)試集,分別用于訓(xùn)練分類模型,以及測(cè)試分類器的性能. 在完成模型訓(xùn)練后,需根據(jù)模型在驗(yàn)證集上的表現(xiàn)調(diào)整算法中的參數(shù),比較不同參數(shù)下的評(píng)估結(jié)果,選擇評(píng)估結(jié)果最優(yōu)的模型作為分類模型.

      圖3 漏洞分類模塊Fig.3 The vulnerability classification module

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

      根據(jù)已有的自動(dòng)化Android應(yīng)用漏洞檢測(cè)工具,結(jié)合人工分析與驗(yàn)證,建立了1 000個(gè)Android APK樣本集,其中存在組件暴露漏洞的APK 500個(gè),不存在組件暴露漏洞的APK 500個(gè). 在實(shí)驗(yàn)系統(tǒng)中采用了卷積神經(jīng)網(wǎng)絡(luò)算法,共進(jìn)行了5次測(cè)試. 測(cè)試時(shí)采用5折交叉驗(yàn)證,每次選擇800個(gè)APK進(jìn)行訓(xùn)練,200個(gè)進(jìn)行測(cè)試(其中100個(gè)存在漏洞,100個(gè)不存在漏洞). 測(cè)試結(jié)果如表1所示,可以看到,平均精度在90%以上.

      表1 實(shí)驗(yàn)數(shù)據(jù)Tab.1 Experimental result

      4 結(jié) 論

      提出了Android組件暴露漏洞模型,定義了組件暴露漏洞的表達(dá)向量. 結(jié)合Android應(yīng)用程序特征與該模型,提取了組件暴露漏洞特征,并轉(zhuǎn)化為特征向量,通過(guò)機(jī)器學(xué)習(xí)技術(shù)對(duì)每個(gè)組件進(jìn)行分類,判斷是否存在漏洞. 實(shí)驗(yàn)結(jié)果表明,所選擇的特征和算法可以產(chǎn)生較高的檢測(cè)精度,這表明本文方法是可行的.

      但本文仍存在一些不足之處,首先,在漏洞分析的粒度上,VDiscover分析的粒度為一個(gè)二進(jìn)制文件,本文分析的粒度為組件,雖然本文的方法適用于組件類漏洞,但是對(duì)于某些其它類型的Android應(yīng)用漏洞,如SSL證書(shū)校驗(yàn)漏洞,無(wú)法實(shí)現(xiàn)漏洞定位,下一階段將增加支持的漏洞類型.

      猜你喜歡
      調(diào)用漏洞應(yīng)用程序
      漏洞
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      刪除Win10中自帶的應(yīng)用程序
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      张家界市| 当阳市| 汶上县| 房产| 吕梁市| 西充县| 上林县| 师宗县| 饶河县| 获嘉县| 东海县| 济南市| 会理县| 雅江县| 台前县| 洪雅县| 丁青县| 北票市| 老河口市| 仲巴县| 临湘市| 武宁县| 北京市| 高州市| 屯留县| 濮阳市| 化隆| 大荔县| 钦州市| 特克斯县| 车致| 稻城县| 鲁甸县| 长丰县| 陇南市| 吴忠市| 农安县| 安顺市| 兴化市| 龙井市| 平陆县|