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

?

基于動靜態(tài)結(jié)合分析的Android惡意應(yīng)用多重檢測模型

2018-03-01 10:26:16陳明翔解夢飛張欽堯劉俊
無線互聯(lián)科技 2018年22期
關(guān)鍵詞:動態(tài)監(jiān)測機器學(xué)習(xí)

陳明翔 解夢飛 張欽堯 劉俊

摘 要:文章通過對大量Android惡意軟件的研究,提出并設(shè)計一種Android惡意應(yīng)用綜合檢測模型。模型中包含動態(tài)監(jiān)測和靜態(tài)分析兩種惡意應(yīng)用識別技術(shù),并結(jié)合機器學(xué)習(xí)算法,對Android應(yīng)用中可能存在的惡意代碼攻擊、漏洞利用、隱私泄露3種問題進(jìn)行了研究并設(shè)計出解決方案。

關(guān)鍵詞:Android;惡意軟件;動態(tài)監(jiān)測;靜態(tài)分析;機器學(xué)習(xí);漏洞掃描;隱私泄露

近年來,Android智能設(shè)備在全球市場的占有率越來越高,但Android系統(tǒng)的安全問題卻層出不窮。一方面各大應(yīng)用市場寬松的審查機制導(dǎo)致Android惡意軟件泛濫,另一方面開發(fā)者的水平不一也導(dǎo)致Android應(yīng)用自身的安全性良莠不齊。隨著時間的推移,各大廠商的手機大多都已安裝了自家的安全軟件,并配套了具有審查機制的應(yīng)用市場。但是,由于Android系統(tǒng)的開源性,許多智能手機愛好者會為系統(tǒng)進(jìn)行root提權(quán),從而對手機進(jìn)行高度定制。然而,各大廠商原生的安全機制對root手機不再適用。用戶在沒有對Android應(yīng)用安全性進(jìn)行確認(rèn)的情況下,經(jīng)過root提權(quán)的手機(以下簡稱root手機)更容易被惡意軟件以高權(quán)限入侵。

與此同時,目前常見的Android應(yīng)用安全性檢測方案主要使用動態(tài)和靜態(tài)兩種檢測技術(shù),但大多數(shù)設(shè)計方案只針對其中一項技術(shù)進(jìn)行應(yīng)用或改進(jìn),少有對這些技術(shù)檢測效果的相關(guān)性與互補性進(jìn)行研究。這明顯無法對root手機進(jìn)行全面、高效的安全防護(hù)。

在此背景下,本文提出一種綜合多種檢測技術(shù)的Android應(yīng)用安全性檢測模型。此模型基于現(xiàn)有的檢測技術(shù)進(jìn)行改進(jìn),并通過不同檢測方案間的互補性來設(shè)計檢測流程,一方面可以提高檢測的精度,另一方面則可以擴展應(yīng)用安全性的評估面。此外,本系統(tǒng)針對root手機的特點,在應(yīng)用安全性評估模型中還著重實現(xiàn)了動態(tài)的風(fēng)險評估和危險行為攔截,具有全面性、精確性、高效性。

1 基于動靜態(tài)結(jié)合分析的Android惡意應(yīng)用多重檢測模型的總體設(shè)計

本系統(tǒng)包括:動態(tài)監(jiān)測部分和靜態(tài)檢測部分(見圖1),分別運行在Android客戶端和服務(wù)器端。

動態(tài)監(jiān)測部分包括敏感行為監(jiān)測模塊和流量監(jiān)控模塊,靜態(tài)檢測部分包括惡意軟件鑒別模塊、漏洞檢測模塊和隱私泄露檢測模塊。

2 基于API Hook的敏感行為監(jiān)測模塊

Android操作系統(tǒng)維護(hù)著自己的一套事件分發(fā)機制,Android應(yīng)用程序、觸發(fā)事件和后臺邏輯處理,都是根據(jù)該機制一步步向下執(zhí)行,惡意軟件的敏感行為也不例外。若能在事件傳送到終點前將事件截獲并對其操作進(jìn)行一定修改,就可以有效地抑制惡意行為的效果,這就是Hook機制。

本模塊設(shè)計一種基于Xposed框架的Hook模塊,運行于Android客戶端上,利用Xposed框架對Zygote進(jìn)程及其創(chuàng)建的Dalvik虛擬機的劫持[1],在開機時完成對所有的Hook方法的重定義或改寫,實現(xiàn)對于應(yīng)用中調(diào)用的系統(tǒng)敏感API的鉤取、分析、預(yù)警。

2.1 確定敏感行為

通常,移動平臺的惡意行為包含:惡意控制設(shè)備、強行推送廣告、偷跑流量、竊取用戶隱私、獲取用戶實時動態(tài)等[2],根據(jù)以上惡意行為,Hook模塊預(yù)設(shè)80多項行為作為敏感行為。

2.2 模塊工作流程

模塊工作流程包含API Hook模塊、風(fēng)險評估模塊、風(fēng)險預(yù)警模塊。

2.2.1 API Hook

Hook模塊隨Android客戶端安裝后托管于Xposed模塊,運行于后臺。API Hook模塊每鉤取到一個API,就會記錄其調(diào)用時間、重要參數(shù),加入相應(yīng)Android應(yīng)用程序的API調(diào)用鏈中。API Hook模塊只記錄固定時間內(nèi)的API調(diào)用,若超過該固定時間,API調(diào)用鏈中過早調(diào)用的API會被刪去。若該應(yīng)用在固定時間內(nèi)程序調(diào)用鏈長度達(dá)到閾值或者API調(diào)用鏈中出現(xiàn)了固定的惡意API組合,模塊就會啟動惡意風(fēng)險評估流程。

2.2.2 風(fēng)險評估

本文提出并設(shè)計一種風(fēng)險評估模型,首先提出以下前提和概念。

a) 本文預(yù)設(shè)敏感API集為。

b) 定義為APP調(diào)用的敏感API集,包含于{API}。

c)對APP中的敏感API調(diào)用鏈進(jìn)行分析、評估,分以下兩種情況執(zhí)行:

(1)若無匹配惡意行為特征API集的調(diào)用出現(xiàn)。

Hook模塊設(shè)計前期,對大量惡意軟件的反編譯提取其中敏感API調(diào)用代碼。本文通過大量的動態(tài)監(jiān)測分析其惡意程度,定義了各敏感API的惡意權(quán)重。

Hook模塊提出一種風(fēng)險評估算法:

定義為ai執(zhí)行過程中調(diào)用的敏感API集。

定義為ai的調(diào)用權(quán)重,特別地若,則。

定義為該APP的帶權(quán)惡意系數(shù)。通過機器學(xué)習(xí)分類算法計算,若V>0.61,則判定該應(yīng)用為惡意軟件。

(2)若匹配到惡意行為特征API集。

為該惡意API組合調(diào)用的組合時間惡意系數(shù),若T<0,則將該APP評估為惡意APP。

使用現(xiàn)有的APP自動化檢測系統(tǒng)得出在100款惡意軟件上,該風(fēng)險評估算法成功率為87%。

2.3 風(fēng)險預(yù)警

對于判定為惡意APP的應(yīng)用,API Hook模塊提醒用戶卸載,并將其包名、簽名添加到黑名單中。Hook模塊監(jiān)聽系統(tǒng)安裝程序,對于黑名單中的應(yīng)用直接予以卸載處理。對于未判定為惡意但進(jìn)入風(fēng)險評估流程的APP,本系統(tǒng)會在用戶允許下將其上傳到服務(wù)器,啟動靜態(tài)檢測流程。

3 Android流量監(jiān)控、分析、攔截模型

多數(shù)Android惡意應(yīng)用通過聯(lián)網(wǎng)下載APP、展示廣告等方式盈利,這不僅導(dǎo)致用戶消耗大量流量,還可能威脅到用戶隱私和Android系統(tǒng)安全?;趷阂鈶?yīng)用依賴互聯(lián)網(wǎng)盈利這個特點,本文在Android設(shè)備上搭建一個流量監(jiān)控、分析、攔截平臺,建立惡意流量規(guī)則庫,對惡意應(yīng)用的請求報文進(jìn)行攔截,從而阻止惡意應(yīng)用的惡意行為,保護(hù)用戶的流量和隱私。

3.1 模型設(shè)計

Android流量監(jiān)控、分析、攔截平臺架構(gòu)如圖2所示。

Android流量監(jiān)控、分析、攔截平臺采用C-S模式,客戶端實現(xiàn)監(jiān)控和攔截功能,服務(wù)器實現(xiàn)惡意流量規(guī)則的匯總、判優(yōu)和同步。

客戶端流量攔截模塊長期在后臺運行,核心是請求報文惡意特征匹配機制。該機制根據(jù)本地惡意URL模式庫和URL黑名單庫檢查每一個請求報文,命中規(guī)則即進(jìn)行攔截,否則放行。流量監(jiān)控模塊由用戶啟動,抓取用戶指定應(yīng)用的流量包,輔助用戶編寫自定義攔截規(guī)則,添加到本地惡意流量數(shù)據(jù)庫中。用戶可選擇上傳分享自定義規(guī)則,同時也可對其他人編寫的規(guī)則進(jìn)行評價。此外,客戶端還接受Hook模塊判定的惡意應(yīng)用的流量清單,根據(jù)用戶選擇將流量清單加入惡意流量黑名單庫中。

服務(wù)器端接收用戶分享的自定義規(guī)則,暫時存放在共享惡意流量規(guī)則庫中。用戶可以試用共享規(guī)則庫中的規(guī)則并對其評價打分。服務(wù)器定期將高評分規(guī)則加入公共惡意流量規(guī)則庫中,向所有客戶端同步。隨著用戶的分享和數(shù)據(jù)庫的不斷更新,逐步加強對惡意流量攔截的廣度和準(zhǔn)確度。

3.2 模型實現(xiàn)

客戶端流量攔截功能基于browsermob-proxy代理實現(xiàn)。代理工具browsermob-proxy開放源代碼,本文除了使用API接口提供的功能外,還改動源碼適配Android系統(tǒng)。代理需要長期運行,為了保證代理不被系統(tǒng)回收,將代理寫入Android前臺服務(wù)中并在通知欄顯示運行狀態(tài)。

客戶端流量監(jiān)控功能基于VPNService實現(xiàn)。在VPNService框架中,開發(fā)者可以獲取和控制所有網(wǎng)絡(luò)層流量。此外,網(wǎng)絡(luò)層中包含的傳輸層端口信息用來區(qū)分出不同應(yīng)用的流量。

4 基于權(quán)限與敏感API的機器學(xué)習(xí)分類算法靜態(tài)檢測模型

本模塊針對Android應(yīng)用程序的權(quán)限機制與敏感API的調(diào)用情況,分別建立基于權(quán)限與敏感API的特征向量,然后使用樸素貝葉斯與隨機森林兩種機器學(xué)習(xí)算法建立分類模型。通過對兩種分類模型的性能評估,提出了基于敏感API調(diào)用的隨機森林算法分類模型,從而完成對惡意軟件與正常應(yīng)用的基本鑒別,并反饋用戶鑒別結(jié)果。

4.1 特征選取

4.1.1 權(quán)限信息

Android應(yīng)用程序的一系列行為都需要它所申請的權(quán)限作為支撐,所以權(quán)限在一定程度上反映了應(yīng)用程序的行為模式。通過對Android應(yīng)用程序的配置文件AndroidManifest.xml的分析,提取了關(guān)于應(yīng)用注冊的權(quán)限信息。

4.1.2 敏感API調(diào)用

敏感API包括涉及竊取用戶隱私行為的高危函數(shù)接口,通過這些函數(shù)的調(diào)用,程序可以直接或間接地獲取一些敏感數(shù)據(jù)。本文通過對應(yīng)用程序反編譯之后的中間代碼進(jìn)行提取,整理出53個調(diào)用次數(shù)較多的敏感API,其中部分API如表1所示。

將敏感API的調(diào)用次數(shù)作為特征值構(gòu)建特征向量,由于不同大小的應(yīng)用程序相對調(diào)用API的次數(shù)不同,所以本文將應(yīng)用程序的大小與API調(diào)用次數(shù)做了加權(quán)平均,來降低應(yīng)用程序大小帶來的影響。

4.2 模型分析與評估

本文取正常應(yīng)用與惡意應(yīng)用各1 500個作為訓(xùn)練集,另取250個作為測試集,其中惡意應(yīng)用來自公開的惡意軟件庫VirusShare,正常應(yīng)用爬取自GooglePlay商店,基本涵蓋了所有應(yīng)用類別。

采用精確率(pre)與召回率(recall)[3]作為衡量分類性能的指標(biāo),實驗結(jié)果如表2所示。

不同于權(quán)限,敏感API信息包含每個API的平均調(diào)用次數(shù),所以惡意特征的表現(xiàn)方式會更加明顯,通過反編譯得到每個應(yīng)用的API調(diào)用情況,結(jié)合調(diào)用次數(shù)建立基于敏感API的特征向量,并輸入分類器中。實驗結(jié)果如表3所示。

可以看出,隨機森林算法的分類性能依然優(yōu)于樸素貝葉斯算法,無論準(zhǔn)確率(ACC)還是召回率(recall)都接近95%,精確率(pre)也接近97%,說明利用敏感API作為鑒別特征,基于隨機森林分類算法能達(dá)到很好的分類效果。

5 Android應(yīng)用漏洞檢測模塊

漏洞檢測模塊為靜態(tài)檢測中的第二部分,基于Soot[4]對應(yīng)用進(jìn)行反編譯以檢測出其中可能存在的漏洞。另一方面,為了提高漏洞檢測精度,本文提出了一種基于過程內(nèi)數(shù)據(jù)流分析技術(shù)的變量行為記錄算法,在漏洞檢測中可以用于實現(xiàn)函數(shù)內(nèi)變量到相關(guān)常量的追溯,提高檢測準(zhǔn)確率。

5.1 Android應(yīng)用漏洞檢測模塊的工作流程

首先使用Soot對APK進(jìn)行初始化工作,輸出的兩個結(jié)果一個是Jimple中間代碼,另一個則是控制流圖,其中控制流圖使用5.2小節(jié)中介紹的追溯算法為函數(shù)內(nèi)的變量生成行為記錄。初始化工作結(jié)束后,則開始進(jìn)行漏洞特征匹配,最后輸出檢測結(jié)果。

5.2 基于數(shù)據(jù)流分析的變量行為記錄算法

在對漏洞特征進(jìn)行匹配時,經(jīng)常將特定的常量參數(shù)作為漏洞特征。然而應(yīng)用開發(fā)中有很多情況是先將常量賦值到一個變量對象里,進(jìn)行處理之后再作為參數(shù)傳值到漏洞特征函數(shù)中。一個最簡單的例子就是使用StringBuilder連接字符串,最后調(diào)用toString()方法將生成的字符串作為參數(shù)傳給函數(shù)。對于這種情況,傳統(tǒng)基于字符匹配的檢測方案是無法匹配到特征的。本小節(jié)提出的算法則用于解決這種問題,算法基于過程內(nèi)數(shù)據(jù)流分析生成變量的行為記錄,之后基于此記錄追溯變量的常量特征。具體算法流程如圖3所示。

在利用Soot生成控制流圖后,使用Soot提供的過程內(nèi)數(shù)據(jù)流分析框架來模擬完整控制結(jié)構(gòu)下的語句遍歷分析,并在此過程中基于傳入的記錄規(guī)則,詳細(xì)記錄所有變量的初始化、變量的方法和成員變量調(diào)用、變量賦值、變量值傳遞等所有變量相關(guān)的行為。在最終生成的變量行為記錄中,即可清楚地獲得變量的常量特征。

6 隱私泄露檢測模塊

在智能設(shè)備大量普及的當(dāng)下,手機比電腦中存放著更多用戶的隱私信息,這些信息一旦被應(yīng)用惡意獲取,就可能給用戶帶來無法挽回的損失。因此,用戶隱私安全性與Android應(yīng)用的安全性是緊密相關(guān)的,隱私泄露檢測模塊便從隱私泄露的角度入手,進(jìn)行Android應(yīng)用安全性的評估。

6.1 對Sources點及Sinks點的分析歸類

Android系統(tǒng)中含有很多涉及獲取用戶隱私的API(Sources點)以及隱秘的數(shù)據(jù)發(fā)送途徑(Sinks點),通過歸類整理并使用基于過程間數(shù)據(jù)流分析技術(shù)[5]的污點傳播算法,尋找從Sources點到Sinks點的傳播路徑,從而發(fā)現(xiàn)這些隱私泄露問題。

6.2 使用污點分析算法尋找傳播路徑

Android應(yīng)用中每一個組件都有自己完整的生命周期,組件在運行過程中隨時可能被觸發(fā)調(diào)用。因此,要對Android應(yīng)用程序進(jìn)行過程間數(shù)據(jù)流分析,就需要先為Android應(yīng)用程序的生命周期建模,并構(gòu)造一個虛擬的main方法,在方法內(nèi)模擬觸發(fā)所有組件,然后再對這個虛擬的main方法進(jìn)行數(shù)據(jù)流分析,尋找Sources到Sinks間的路徑。

模型使用FlowDroid[6]進(jìn)行實現(xiàn)污點傳播路徑的尋找。FlowDroid是基于流分析技術(shù)的隱私泄露分析工具,它對Android應(yīng)用程序的生命周期做了完整建模,并構(gòu)建了一個虛擬dummyMainMethod方法來模擬生命周期,在對應(yīng)用內(nèi)的Sources點及Sinks點做了標(biāo)記后,使用過程間數(shù)據(jù)流分析技術(shù)尋找這些點間的傳播路徑。

本模型即基于FlowDroid所提供的分析接口以及6.1歸類的Sources點與Sinks點進(jìn)行Android應(yīng)用中的隱私泄露分析。

[參考文獻(xiàn)]

[1]于航,劉麗敏,高能,等.基于模擬器的沙箱系統(tǒng)研究[J].信息網(wǎng)絡(luò)安全,2015(9):139-143.

[2]任偉,柳坤,周金.An Da:惡意代碼動態(tài)分析系統(tǒng)[J].信息網(wǎng)絡(luò)安全,2014(8):28-33.

[3]邵舒迪,虞慧群,范貴生.基于權(quán)限和API特征結(jié)合的Android惡意軟件檢測方法[J].計算機科學(xué),2017(4):135-139.

[4]EINARSSON A,NIELSEN J D.A survivors guide to java program analysis with soot[EB/OL].(2008-07-17)[2018-09-28].https://www.researchgate.net/publication/241734740_A_Survivors_Guide_to_Java_Program_Analysis_with_Soot.

[5]BODDEN E.Inter-procedural data-flow analysis with IFDS/IDE and soot[C].Beijing:Acm Sigplan International Workshop on the State of the Art in Java Program Analysis,2012.

[6]ARZT S,RASTHOFER S,F(xiàn)RITZ C,et al.FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps[C].Edinburgh:Acm Sigplan Conference on Programming Language Design & Implementation,2014.

猜你喜歡
動態(tài)監(jiān)測機器學(xué)習(xí)
動脈血乳酸動態(tài)監(jiān)測在心臟外科重癥患者圍手術(shù)期的臨床應(yīng)用
淺談實現(xiàn)電網(wǎng)經(jīng)濟(jì)調(diào)度運行的可行性措施探究
動態(tài)監(jiān)測C反應(yīng)蛋白評估重癥社區(qū)獲得性肺炎療效和預(yù)后的臨床研究
基于機器學(xué)習(xí)的圖像特征提取技術(shù)在圖像版權(quán)保護(hù)中的應(yīng)用
經(jīng)顱多普勒超聲動態(tài)監(jiān)測對多發(fā)性腦梗塞認(rèn)知障礙的應(yīng)用
基于網(wǎng)絡(luò)搜索數(shù)據(jù)的平遙旅游客流量預(yù)測分析
時代金融(2016年27期)2016-11-25 17:51:36
前綴字母為特征在維吾爾語文本情感分類中的研究
基于支持向量機的金融數(shù)據(jù)分析研究
城市| 保定市| 绥化市| 舒城县| 元氏县| 西和县| 舟曲县| 响水县| 张家口市| 会同县| 兰溪市| 仁化县| 治多县| 桦川县| 绥化市| 唐山市| 齐齐哈尔市| 慈利县| 富源县| 凤庆县| 弥渡县| 武城县| 中牟县| 视频| 安乡县| 乌兰浩特市| 隆化县| 甘孜县| 绵阳市| 吕梁市| 海原县| 文登市| 澳门| 深泽县| 阿瓦提县| 聂拉木县| 通许县| 堆龙德庆县| 丰原市| 略阳县| 宾川县|