楊宏宇,王在明
(中國民航大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300300)
隨著移動智能終端的普及,Android系統(tǒng)所面臨的安全威脅越來越多。Android共謀攻擊是近年來新出現(xiàn)的一種安全威脅,具有攻擊形式多樣、隱蔽性強(qiáng)和攻擊范圍廣等特點,已成為Android安全的研究熱點課題[1]。
共謀攻擊主要通過繞過Android安全機(jī)制(簽名、沙盒等)的檢查實施攻擊[2-3],相比其他類型的攻擊,Android共謀攻擊隱蔽性更好、檢測難度更高[4-6]。與檢測惡意應(yīng)用不同,檢測共謀攻擊不僅需要檢測安全威脅的特征屬性,還需檢測應(yīng)用間是否存在通信行為。由于現(xiàn)有大多數(shù)惡意應(yīng)用檢測技術(shù)未檢測應(yīng)用間的通信,因此不適用于檢測共謀攻擊[7]。為此,有研究提出如 FlowDroid[6]和Amandroid[8]等基于污點分析技術(shù)的共謀攻擊檢測方法,通過設(shè)置污點追蹤敏感信息流的泄露路徑,達(dá)到檢測共謀攻擊的目的,但在效率方面表現(xiàn)不佳。為改善上述檢測方法的效率,APKCombiner通過分析應(yīng)用間的信息流提高檢測共謀攻擊的準(zhǔn)確率,但該工具僅能檢測出2個應(yīng)用間的共謀攻擊行為[9]。Schlegel等[10]通過提取應(yīng)用的公開和隱蔽信道信息來檢測隱私數(shù)據(jù)泄露,但該方法單一且檢測數(shù)據(jù)有限。Bartel等[11]提出一種基于權(quán)限的共謀攻擊檢測方法,通過提取應(yīng)用權(quán)限特征并靜態(tài)分析函數(shù)調(diào)用檢測共謀攻擊,但檢測準(zhǔn)確率和效率不高。Sadeghi[12]提出一種檢測應(yīng)用間共謀攻擊的COVERT工具,該工具雖然能夠檢測并顯示組件間的通信,但在檢測隱式組件方面誤差大,導(dǎo)致檢測攻擊準(zhǔn)確率低。
針對以上研究中檢測共謀攻擊效率差和準(zhǔn)確率低的問題,本文提出基于組件通信的Android共謀攻擊檢測模型,目的是有效提高檢測共謀攻擊的效率和準(zhǔn)確率。
本文提出的Android共謀攻擊檢測模型結(jié)構(gòu)如圖1所示,該模型由訓(xùn)練階段和檢測階段組成。
1) 訓(xùn)練階段。提取已知樣本所需的特征,生成特征向量集合;分析統(tǒng)計已知樣本的特征關(guān)系圖,保存組件通信與權(quán)限組合特征。
2) 檢測階段。提取未知樣本指定的特征,生成特征向量集合;分析統(tǒng)計并生成未知樣本的特征關(guān)系圖,保存組件通信與權(quán)限組合特征;根據(jù)訓(xùn)練階段的特征序列,在特征庫中與檢測階段特征序列進(jìn)行匹配;根據(jù)匹配結(jié)果輸出未知樣本的類型。
訓(xùn)練階段負(fù)責(zé)對已知樣本的訓(xùn)練和分類,并將樣本的各種特征序列保存到數(shù)據(jù)庫中;檢測階段則對未知樣本進(jìn)行檢測,訓(xùn)練先于檢測執(zhí)行,并在數(shù)據(jù)庫中將特征序列與檢測階段的特征序列進(jìn)行匹配,輸出匹配后的分類結(jié)果。
該模型的檢測流程設(shè)計如下。
步驟1 首先,使用Androguard[13]反編譯APK,得到AndroidManifest.xml文件,再使用python編程,通過xml.dom模塊和I/O模塊對此文件解析,解析后將權(quán)限屬性集、組件屬性集、通信屬性集保存到相應(yīng)的文件中。然后,分別計算這3類屬性集的數(shù)量并按使用頻率從高到低排序后保存,得到新特征向量屬性集。最后,將新特征向量屬性集分成權(quán)限特征向量集、組件特征向量集及通信方式特征向量集并保存。
步驟 2 訓(xùn)練階段。首先,使用改進(jìn)貝葉斯的分類方法處理2類應(yīng)用的權(quán)限特征向量集,對樣本進(jìn)行訓(xùn)練和分類后,將分類后的共謀應(yīng)用權(quán)限組合集作為安全策略規(guī)則集保存到數(shù)據(jù)庫中。然后,使用基于有限狀態(tài)機(jī)的組件通信檢測方法處理組件和通信方式特征向量集,生成應(yīng)用間組件狀態(tài)圖。隨后,編程實現(xiàn)狀態(tài)機(jī),檢測應(yīng)用通信狀況,刪除不存在通信行為的安全策略規(guī)則集。最后,將規(guī)則集與組件通信狀態(tài)機(jī)保存到數(shù)據(jù)庫中。
步驟 3 檢測階段。首先,使用改進(jìn)貝葉斯的分類方法處理待測應(yīng)用的權(quán)限特征向量集,提取出權(quán)限組合集并保存。然后,使用基于有限狀態(tài)機(jī)的組件通信檢測方法處理組件和通信方式特征向量集,提取組件通信狀態(tài)機(jī)數(shù)據(jù)。最后,將權(quán)限組合集作為有限狀態(tài)機(jī)的輸入字符集生成新權(quán)限狀態(tài)機(jī),再與檢測階段保存的安全策略規(guī)則集進(jìn)行匹配,輸出匹配結(jié)果作為檢測結(jié)果集。該階段如算法1所示。
圖1 Android共謀攻擊檢測模型結(jié)構(gòu)
算法1 檢測階段
輸入 應(yīng)用數(shù)據(jù)集Λ={app1,app2, app3,…,appn}
輸出 共謀應(yīng)用對集合?={pair1, pair2, pair3,…,pairm}
if|Λ| ≥ 2 then
讓Θ = Λ中所有可能的app組合;
for each pairjin Θ do
改進(jìn)貝葉斯的分類方法并計算Lτ;
if Lτ≥ threshold then
基于有限狀態(tài)機(jī)的組件通信檢測方法并計算Lcom;
if Lcom== 1 then
return (pairj)
計算Lc
end if
end if
end for
end if
在該模型中,設(shè)計了一種改進(jìn)貝葉斯的分類方法和一種基于有限狀態(tài)機(jī)的組件通信檢測方法,上述2種方法為模型的核心方法,下面分別對2種方法進(jìn)行說明。
本文中的符號說明如表1所示。
針對貝葉斯易出現(xiàn)無法比較、下溢出和分類差錯率較高的問題,本文在貝葉斯算法的基礎(chǔ)上對其進(jìn)行了改進(jìn),以提高分類性能,改進(jìn)過程如下。
首先,假設(shè)應(yīng)用的權(quán)限為Wi,共謀應(yīng)用為C,非共謀應(yīng)用為H。判斷應(yīng)用共謀與否,即判斷權(quán)限集中是否包含權(quán)限Wi,記為P(C|Wi),根據(jù)貝葉斯理論可得
其中,P(C|Wi)為出現(xiàn)權(quán)限 Wi的應(yīng)用是共謀應(yīng)用的條件概率;P(C)為訓(xùn)練階段應(yīng)用中存在共謀應(yīng)用的概率;P(Wi|C)為共謀應(yīng)用中權(quán)限 Wi出現(xiàn)的概率;P(H)為訓(xùn)練階段應(yīng)用中非共謀應(yīng)用的概率;P(Wi|H)為非共謀應(yīng)用中權(quán)限Wi出現(xiàn)的概率。
考慮到每個權(quán)限出現(xiàn)的獨立性,計算 P(C|Wi)的聯(lián)合概率P(C|W),W={W1, W2, W3,…,Wn},如式(2)所示。
表1 符號說明
其中,P=P(C|W)為出現(xiàn)權(quán)限 W={W1,W2,W3,…,Wn}的應(yīng)用為共謀應(yīng)用的條件概率;Pi=P(C|Wi)為出現(xiàn)權(quán)限Wi的應(yīng)用是共謀應(yīng)用的條件概率。
其次,鑒于貝葉斯計算概率時存在無法比較和下溢出的問題[14],當(dāng)權(quán)限不存在,即Wi=0時,Pi=0,P=0,則無法比較;當(dāng)Pi較小時,計算P會造成下溢出問題。針對上述2個問題,本文分別提出2種解決方案。
判斷樣本中權(quán)限特征向量W={W1,W2,W3,…,Wn}中的權(quán)限Wi=0是否為0,如果為0,則計算P(Wi|C)和 P(Wi|H)時,將所有權(quán)限初始化出現(xiàn)的次數(shù)均記為1,再進(jìn)行計算得到Pi。
當(dāng) Pi<0.000 1 時,若要計算 P(Wi|C)和 P(Wi|H),取P(C|Wi)的對數(shù)ln{(P(C|Wi))?1},將最終結(jié)果變?yōu)橛?算 P(W1|C)P(W2|C)...P(Wn|C)P(C)和 P(W1|H)P(W2|H)...P(Wn|H)P(H)的大小。
最后,為降低分類差錯率,在計算聯(lián)合概率P(C|W)時引入一個變量調(diào)整因子 θ,其作用是調(diào)整權(quán)限列表中某一權(quán)限組合共謀的聯(lián)合概率。θ值越小表示分類越準(zhǔn)確,θ的選取范圍為[0.01, 0.1]。通過 Adaboost算法[15]對調(diào)整因子 θ迭代多次后取最佳值。改進(jìn)貝葉斯的分類方法如算法2所示。
算法2 改進(jìn)貝葉斯的分類方法輸入 權(quán)限特征向量集
輸出 權(quán)限組合集和P(C|W)等
1) count =n /*設(shè)定 Adaboost循環(huán)次數(shù)count*/
2) sample=2 000 /*選擇2 000個樣本*/
3) |θ|=|S| /*θ 初始化為和權(quán)限列表大小相等的向量*/
4) for t =0 to count /*迭代*/
5) inf =0.5 % /*設(shè)定最小分類差錯率為inf*/
6) value=classfy(sample) /*對于每一個樣分類*/
7) if(value == error) /*如果分類出錯*/
8) if(alpha(pc)>alpha(ph) )/*計算出錯的程度即比較P(C)和P(H)的相差alpha*/
10) else /*若樣本原
12) inf=compute(S) /*計算差錯率*/
13) Save(inf,P(Wi|C),P(Wi|H) /*保存差錯率和此時的權(quán)限集、P(Wi|C)和P(Wi|H)、θ等信息*/
通過執(zhí)行改進(jìn)貝葉斯的分類方法,得到權(quán)限組合集和聯(lián)合概率P(C|W)等信息。為方便計算,設(shè)定Lτ(S)=ln{(P(C|W))–1},取值為[0,1],當(dāng) Lτ(S)>0.5 時,將權(quán)限組合集保存為安全策略規(guī)則集。
為檢測應(yīng)用間的通信情況,本文設(shè)計一種基于有限狀態(tài)機(jī)的組件通信檢測方法,用G=<Q, Σ, δ, q0,F>表示有限狀態(tài)機(jī)[16],其中,Q表示應(yīng)用所有組件狀態(tài)的非空有限集合;Σ表示輸入字符表(符號的非空有限集合);q0是組件的某一初始狀態(tài),它是Q的元素;δ是狀態(tài)轉(zhuǎn)移函數(shù),即δ:Q×Σ→Q;F是接受(最終)狀態(tài)的集合。
以此為基礎(chǔ),基于有限狀態(tài)機(jī)的組件通信檢測方法的設(shè)計步驟如下。
步驟1 將應(yīng)用轉(zhuǎn)化為圖。
若用A表示一個應(yīng)用,α表示A中Activities組件的集合,β表示A中Services組件的集合,γ表示A中Broadcast Receivers組件的集合,ξ表示A 中與Intent相關(guān)的 API調(diào)用,ζ(ξ)表示 ξ中所有操作字符串的集合。
定義點集合V為本是H,錯分成C*/
其中,V代表應(yīng)用的點集合。
用S(ξ)表示ξ中發(fā)送Intent傳遞信息的組件集,S(ξ) ={(x,i)|x{∈α∪β∪γ}, x發(fā)送Intent i∈ξ},T(ξ)表示接收 Intent處理信息的組件集,T(ξ)={(x,i)|x{∈α∪β∪γ}, x接收Intent i∈ξ}。
定義邊集E為
用圖G(V, E)表示應(yīng)用A,圖2為4個Android典型應(yīng)用的狀態(tài)圖。
步驟2 圖的融合。
為處理應(yīng)用間的隱式Intent調(diào)用問題,將應(yīng)用圖G(V,E)融合。設(shè)有n個應(yīng)用,由步驟1將應(yīng)用轉(zhuǎn)化為對應(yīng)的狀態(tài)圖,所有圖的融合表示為Gu
圖2 4個典型應(yīng)用的狀態(tài)圖
Gu=(V, E),其中,V=V1∪V2∪V3··∪Vn,E=E1∪E2∪E3··∪En∪E′,E′表示應(yīng)用間發(fā)送和接收隱式Intent信息的邊。任意Ai和Aj(i≠j∈{1,··,n}),都有對應(yīng)的圖 Gi和 Gj,用 ξi或 ξj表示 Ai或 Aj中與Intent有關(guān)的API調(diào)用。令k=i,j (i≠j∈{1,··,n}),則S(ξk)和 T(ξk)分別表示 ξk中發(fā)送和接收 Intent的組件集。因此,E′可表示為:E′={(x, y)| ? i, j∈{ 1 , ··,n}s.t. x∈S(ξk), y∈T(ξk), i≠j}。
將4個Android典型應(yīng)用的狀態(tài)圖融合后的結(jié)果如圖3所示。
圖3 經(jīng)融合后的4個典型應(yīng)用的狀態(tài)圖
步驟3 融合圖的優(yōu)化。
為保證融合圖的計算效率和算法的執(zhí)行速度,需刪除動作字符串的節(jié)點(即在 Gu中刪除 ζ(ξ))。刪除融合圖節(jié)點的規(guī)則設(shè)計如下。
1) 若某個組件(圖節(jié)點)沒有進(jìn)來的邊,只有出去的邊,則刪掉此節(jié)點。
2) 若某個組件(圖節(jié)點)有來自其他組件的邊,則保留組件(圖節(jié)點)的邊并刪掉對應(yīng)的動作字符串節(jié)點。
融合圖優(yōu)化后,Gu記為 Gd=(Vd, Ed),邊記為Ed=E∪{S(ξ)→T(ξ)|S(ξ)→x→T(ξ), x∈ζ}{{(x, y) | x∈S(ξ), y ∈ζ(ξ)}{(∪x, y) | x ∈T(ξ) , y ∈ζ(ξ)}},點記為Vd=V-ζ(ξ)。4個典型應(yīng)用的融合圖優(yōu)化后的結(jié)果如圖4所示。
圖4 4個典型應(yīng)用融合圖優(yōu)化后的結(jié)果
步驟4 優(yōu)化圖的狀態(tài)機(jī)設(shè)計。
將優(yōu)化圖Gd設(shè)計成狀態(tài)機(jī)M中對應(yīng)的元素,Gd節(jié)點作為狀態(tài)機(jī)中接受狀態(tài)集F。初始狀態(tài)為q0,權(quán)限集Q=F{∪q0},狀態(tài)轉(zhuǎn)移函數(shù)δ包含從q0→F的轉(zhuǎn)換,且能夠訪問F中的元素和Gd中的所有邊。4個典型應(yīng)用的狀態(tài)機(jī)如圖5所示。
圖5 4個典型應(yīng)用的狀態(tài)機(jī)
圖 5中,Main()是狀態(tài)機(jī)的初始狀態(tài),根據(jù)組件間的關(guān)系便可定義狀態(tài)轉(zhuǎn)換函數(shù)δ,最終狀態(tài)為 ReadMessage.ReadActivity、AddressBoost.ReadAcitvty、SeedMessage.sendService、Online Music.seadService。算法3為計算δ的算法,算法4為計算基于有限狀態(tài)機(jī)的組件通信檢測的算法。
算法 3 計算 δ(Q,Σ)
1) m = length[Q]
2) for q=0 to m
3) for each character a ∈Σ /*Σ 為訓(xùn)練得到的輸入字符*/
4) k=min(m+1,q+2) /*危險權(quán)限狀態(tài)值取最小*/
5) repeat
6) k=k–1
7) until Pk>Pqa
8) δ (q,a) = k /*加進(jìn)權(quán)限a后的狀態(tài)值為k*/
9) return δ
算法 4 計算基于有限狀態(tài)機(jī)的組件通信檢測(Q,δ,F)
1) n = length[Q]
2) q0=0 /初始狀態(tài)q0/
3) for j=1 to n
4) do q0=δ(q0,Q[j]) /*δ函數(shù)是一張圖表*/
5) if q0=F /*F為接受狀態(tài)*/
6) then print “組件間存在通信狀態(tài)轉(zhuǎn)換”j~F
7) Lcom(S)=1
8) else
9) then print “不存在通信狀態(tài)轉(zhuǎn)換”j~F
10) Lcom(S)=0
經(jīng)過基于有限狀態(tài)機(jī)的組件通信檢測方法處理,若應(yīng)用間存在通信,則Lcom(S)=1,保存應(yīng)用組件通信相關(guān)的數(shù)據(jù),以便將優(yōu)化安全策略規(guī)則集和將權(quán)限特征向量集作為輸入字符集生成新權(quán)限狀態(tài)機(jī)。
分別對本文提出的檢測模型進(jìn)行可行性驗證、分類效果驗證、共謀攻擊與權(quán)限的關(guān)聯(lián)性驗證、不同方法的對比檢測等實驗,實驗環(huán)境和樣本設(shè)置如下。
實驗環(huán)境:Dell PC機(jī);處理器Interl(R) Core(TM)i7-3210 CPU;內(nèi)存4 GB;Pycharm2016編譯器;Matlab R2014a;
樣本:訓(xùn)練樣本為1 000個非共謀應(yīng)用[17]和1 000個共謀應(yīng)用[18],非共謀應(yīng)用從Google Play以及國內(nèi)應(yīng)用市場中下載,共謀應(yīng)用從VirusShare[18]中獲得。檢測樣本為300個共謀應(yīng)用和200個非共謀應(yīng)用。為保證樣本的純度,所有樣本均在VirusTotal[19]中檢測后使用。
為衡量分類器的分類效果,定義了以下檢測指標(biāo)。
指標(biāo)1 真正(TP):實際為共謀應(yīng)用,被檢測為共謀應(yīng)用。
指標(biāo)2 誤報(FP):實際為非共謀應(yīng)用,被檢測為共謀應(yīng)用。
指標(biāo)3 真負(fù)(TN):實際為非共謀應(yīng)用,被檢測為非共謀應(yīng)用;
指標(biāo)4 漏報(FN):實際為共謀應(yīng)用,被檢測為非共謀應(yīng)用。
進(jìn)一步定義以下指標(biāo)。
實驗中采用分層 10折交叉法來提高模型的泛化能力,選取2 000個訓(xùn)練樣本作為訓(xùn)練集,選取500個檢測樣本作為測試集。迭代10次,每次隨機(jī)選取測試集計算分類器的TPR、FPR、ACC、ERR,然后取平均值。
首先,使用Stateflow[20]工具對有限狀態(tài)機(jī)進(jìn)行仿真,仿真的設(shè)計如下。
1) 根據(jù)應(yīng)用所求狀態(tài)的數(shù)量、狀態(tài)轉(zhuǎn)移的條件(權(quán)限組合形式)和各狀態(tài)輸出信號的賦值,畫出狀態(tài)轉(zhuǎn)移圖。
2) 按照狀態(tài)轉(zhuǎn)移圖編寫狀態(tài)機(jī)的設(shè)計程序。
3) 利用Stateflow工具對狀態(tài)機(jī)的功能進(jìn)行仿真驗證。
4) 匹配成功則將權(quán)限所屬應(yīng)用標(biāo)為共謀應(yīng)用,否則為非共謀應(yīng)用。
以4個共謀應(yīng)用生成的狀態(tài)轉(zhuǎn)移圖(如圖6所示)為例。由圖6可知,應(yīng)用的組件間存在共謀攻擊,此時安全策略規(guī)則集為權(quán)限WRITE_EXTERNAL_STORAGE、SEND_SMS、INTERNET和READ_CONTACT的組合,仿真結(jié)果輸出這些應(yīng)用為共謀應(yīng)用。仿真結(jié)果輸出為共謀應(yīng)用的標(biāo)記為1,否則為0。
然后,在Pycharm和Matlab中編程實現(xiàn)模型檢測流程,對樣本進(jìn)行處理和檢測分類。通過將 500個檢測樣本導(dǎo)入檢測模型,計算標(biāo)記為1的應(yīng)用數(shù)量,再通過python編寫腳本對檢測過程可視化,將檢測的過程轉(zhuǎn)換為標(biāo)記0或1的過程,觀察檢測過程的變化,以驗證模型的可行性。以1 800 s為間隔按時序截取8張檢測過程圖并記錄下當(dāng)時對樣本的檢測結(jié)果。圖7為檢測過程,黑色標(biāo)記表示為1的樣本,初始值根據(jù)樣本總量全標(biāo)為 1,最終檢測結(jié)果為發(fā)現(xiàn)286個共謀應(yīng)用。
圖6 4個共謀應(yīng)用生成的新狀態(tài)轉(zhuǎn)移圖
圖7 檢測過程
由圖7可知,從時序a到h標(biāo)記為1的樣本由481個最終穩(wěn)定為286個,說明檢測完成且共謀應(yīng)用為 286個,此時得到各個指標(biāo)分別為TPR=93.33%,F(xiàn)PR=14.66%,ACC=92.45%,ERR=12.37%。實驗表明本文模型檢測共謀應(yīng)用的真正率和準(zhǔn)確率較高,且誤報率較低。
為驗證模型的分類檢測效果,將檢測樣本輸入檢測模型,經(jīng)處理得到分類效果,如圖8所示。由圖8可知,樣本中共謀應(yīng)用與非共謀應(yīng)用在Lτ約為0.5處(圖8中黑色線)分離,此值上方樣本均為共謀應(yīng)用,下方樣本均為非公謀應(yīng)用,這一結(jié)果表明本文模型的分類效果較好且分類的閾值穩(wěn)定。
圖8 模型的分類效果
為驗證共謀攻擊與權(quán)限之間的關(guān)聯(lián)性,統(tǒng)計出2類樣本中10個最常用權(quán)限占各自樣本使用權(quán)限總量的概率,并進(jìn)行排名,結(jié)果如表2所示。由表2可知,在權(quán)限相同的情況下,共謀應(yīng)用概率大于非共謀應(yīng)用概率,說明共謀應(yīng)用申請的權(quán)限數(shù)量更多,表明應(yīng)用申請的權(quán)限數(shù)量越多,其存在共謀風(fēng)險的可能性就越大。
為進(jìn)一步驗證應(yīng)用申請權(quán)限數(shù)量與共謀攻擊之間存在的關(guān)聯(lián)性,對共謀樣本的每個應(yīng)用中 10個最常用權(quán)限的數(shù)量與共謀攻擊之間的關(guān)系進(jìn)行統(tǒng)計,統(tǒng)計結(jié)果如圖9所示。由圖9可知,10個權(quán)限中隨著申請數(shù)量的增加,產(chǎn)生共謀風(fēng)險的可能性增大。依據(jù)是權(quán)限數(shù)量越多,可能的共謀權(quán)限組合也就越多。
表2 共謀與非共謀應(yīng)用權(quán)限概率排名對比
圖9 共謀風(fēng)險與權(quán)限數(shù)量的關(guān)系
為驗證本文模型的檢測準(zhǔn)確率和檢測效率,使用本文模型、當(dāng)前的檢測模型和工具,在相同條件下對樣本進(jìn)行檢測并對比。
首先,編程實現(xiàn)IC3工具[21]和本文模型,然后對共謀測試套件DroidBench[22]和共謀樣本APP進(jìn)行檢測,其中,DroidBench包含29個共謀測試應(yīng)用,共謀樣本 APP是從樣本中隨機(jī)選取的100個APP,分別獲取檢測失敗的APP數(shù)、Intent傳遞個數(shù)、耗時,并對上述檢測數(shù)據(jù)進(jìn)行統(tǒng)計,統(tǒng)計結(jié)果如表3所示。由表3可知,本文模型與IC3相比,在檢測的準(zhǔn)確率、Intent傳遞數(shù)目、耗時方面均具有一定優(yōu)勢。
為進(jìn)一步比較本文模型的檢測性能,從共謀樣本中隨機(jī)抽取20個應(yīng)用,分別使用DroidBench和共謀測試套件ICC-Bench[23],對Amandroid工具[8]、COVERT工具[13]、DroidSafe模型[24]和本文模型進(jìn)行共謀攻擊檢測實驗。使用上述工具和模型分別測試10次,測試結(jié)果如表4所示。由表4可知,在DroidBench和 ICC-Bench測試環(huán)境下,與Amandroid、COVERT和DroidSafe相比,本文模型在檢測共謀攻擊方面的準(zhǔn)確率更高。
表3 IC3工具和本文模型的對比分析
表4 不同工具不同平臺下相同樣本檢測效果對比
針對Android共謀攻擊隱蔽性好、檢測效率差、檢測準(zhǔn)確率低的問題,提出基于組件通信的Android共謀攻擊檢測模型。模型分為訓(xùn)練階段和檢測階段。訓(xùn)練階段負(fù)責(zé)對訓(xùn)練樣本的權(quán)限特征向量集學(xué)習(xí)和分類生成安全策略規(guī)則集,使用組件和通信方式特征向量集設(shè)計基于有限狀態(tài)機(jī)的組件通信檢測方法優(yōu)化安全策略規(guī)則集;檢測階段負(fù)責(zé)將待測應(yīng)用的特征向量集生成新權(quán)限狀態(tài)機(jī),通過匹配訓(xùn)練階段的安全策略規(guī)則集完成共謀攻擊的檢測。實驗結(jié)果表明所提模型具有較高的準(zhǔn)確率和較好的檢測效率。
未來考慮通過 Xposed框架將本文所提模型整合到Android系統(tǒng)中,在真實環(huán)境下驗證模型對共謀攻擊的檢測效果并對模型和方法進(jìn)行持續(xù)改進(jìn)。