999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于API和Permission的Android惡意軟件靜態檢測方法研究

2020-04-19 07:26:02楊鳴坤羅錦光歐躍發慕德俊
計算機應用與軟件 2020年4期
關鍵詞:分類數據庫特征

楊鳴坤 羅錦光 歐躍發 慕德俊

1(桂林航天工業學院計算機科學與工程學院 廣西 桂林 541004)2(廣西電力職業技術學院電子與信息工程系 廣西 南寧 530007)3(北部灣大學機械與船舶海洋工程學院 廣西 欽州 535011)4(西北工業大學自動化學院 陜西 西安 710072)

0 引 言

360互聯網安全中心發布的《2018中國手機安全生態報告》[1]中指出,僅2018年上半年該中心截獲安卓平臺新增惡意程序樣本283.1萬個。其中,截獲新增手機勒索軟件127 455個,1月-7月截獲新增手機挖礦木馬4 806個。挖礦木馬的新增是2017年全年截獲量的近20倍。當前APP權限越界行為整體呈增長趨勢,尤其是在一些隱私相關的權限使用上。其中,寫入通話記錄權限被濫用的情況最為嚴重。

目前,Android軟件檢測方法主要有基于特征簽名(signature-based,又名特征碼)的檢測方法和基于行為(behavior-based)的檢測方法[2-3]。該種檢測方法應用廣泛,但無法檢測未知惡意軟件。并且,由于必須要保存每一個病毒新變種的特征簽名,會直接導致特征庫不斷膨脹,進而影響檢索特征的復雜度,最終帶來能耗的增加。而能耗對智能手機等移動設備來說是非常重要的指標。文獻[4-8]分別提出了基于行為的檢測方法、結合了靜態分析和動態分析的ANDRUBIS系統、一種挖掘權限頻繁項集的算法、基于統計學特征的Android惡意應用檢測方法以及采用多核模糊支持向量機算法對惡意軟件進行檢測分類。這些方法中都是通過人工智能算法或數據挖掘算法對Android APK的惡意軟件進行分類預測,而沒有很好地利用APK文件中的靜態信息和Permission在軟件的使用率對分類算法的影響。因此本文提出了一種以Android API和Permission作為Android APK特征的檢測方案,此方案將一個APK轉化為可以量化和參與計算的基于API或Permission的特征向量,實現了以API或Permission為特征的基于改進的k-NN算法靜態檢測方法。

1 傳統k-NN分類算法

k近鄰(k-Nearest Neighbour,k-NN)分類算法[9],是成熟的機器學習算法。該方法的工作原理是存在一個訓練樣本集,該樣本集中的每個數據都存在類別標簽,即每一個數據與所屬分類的對應關系,當輸入沒有標簽的新數據后,將新數據的每個特征與樣本集中數據對應的特征進行比較,算法提取樣本集中特征最相似數據(最近鄰)的分類標簽。一般來說,只選擇樣本數據集中前k個最相似的數據,通常k是不大于20的整數。

k-NN算法的核心思想是:當無法判定當前待分類點是從屬于已經分類的哪一類時,可以依據統計學的理論看它所處的位置特征,衡量它周圍鄰居的權重,進而把它歸到權重更大的那一類。該算法是基于實例的學習,使用算法時必須有接近實際數據的訓練樣本數據。在k-NN分類方法中,當數據量達到一定規模時,大概率會出現測試集中的數據(實際上此數據與被標記樣本是相鄰的)與相似樣本的距離過大,導致分類準確率降低,無法有效執行。

2 APK靜態信息過濾算法

要想對APK進行靜態分析,首先要從APK中獲取特征,被定義為惡意的APK都是完成了一定惡意行為的APK,而這些惡意行為最終都是靠程序開發者開發的功能函數來實現的。由于Android的機制,用戶自己開發的函數要想實現一定的功能,必然要利用Android的API,所以對于出現APK中的所有函數調用,只將其中的Android API納入到特征集合中,作為一組檢測APK的特征。考慮到Android的安全機制和APK的運行特點,要想使用Android提供的系統功能和系統資源來施行軟件的惡意行為,必然還要使用到Android提供的各種權限(Permission),因此將APK中使用到的權限信息作為另一組檢測APK的特征[10]。而本文APK的特征定義就是從反編譯之后的代碼和Manifest文件中抽取的Android API或Permission信息[11],詳細實現過程如下。

假設一個特征(API或者Permission)在訓練集樣本的m個惡意APK中都有出現,在n個正常APK中都有出現,訓練集樣本的惡意APK的總數為M,正常APK的總數為N。那么,該特征在惡意APK中的使用率為:

(1)

該特征在正常APK中的使用率為:

(2)

則同一個特征在不同APK中的使用率之差為:

t=|fn-fp|

(3)

準備分類器數據在對算法進行訓練之前,要對提取出來的APK靜態信息進行過濾,即去掉冗余信息,減少冗余信息的干擾[12-13]。它包括兩個方面的內容:一是通過統計學的計算找出一些高危、高使用率的API和Permission作為基準特征;二是對已經提取過的APK進行更進一步的特征向量的構造[14]。要想找出這樣的基準API和Permission就要對訓練集樣本中的APK進行統計,從數據庫中取出每個APK中使用的API和Permission,計算每一個API和Permission在多少個訓練樣本APK中出現過。其算法具體實現如下:

輸入:從數據庫中取出(M+N)個APK中使用的API和Permission。

Step1FindAPI();FindPermission();找基準API和Permission集合。其中基準API集合選擇fn、fp、t值大于等于0.2的特征;而基準Permission的集合是僅選擇fn和fp都大于等于0.2的。

Step2TranslateAPIVM();TranslatePermissionVM();將每一個APK轉換成一個向量。其中,提取出的每個APK向量中的每一維的值表示0或1,值為0表示APK沒有使用其基準集合中對應的API或Permission,值為1表示APK中使用了其基準集合中對應的API或Permission。

Step3重復(M+N)次Step2。

輸出:使用分類算法的訓練集,即所有APK的特征向量組成的矩陣。

3 改進的k-NN算法分類器

為了能夠使k-NN算法中惡意APK的特征向量與正常APK的特征向量距離更遠,使兩個惡意APK的特征向量的距離更近,本文對k-NN算法進行了改動。在確定APK的基準特征(API和Permission)之后,如果給惡意APK中使用率高、正常APK中使用率低的API以小的權值,或給惡意APK中使用率低,正常APK中使用率高的API以大的權值,那么會使兩個惡意APK的距離比惡意與正常APK的距離更近,這樣會使算法的精確度更高。經過實驗驗證,式(3)正好滿足上述規則,即該值為改進的k-NN算法中特征的權值。對未知類別屬性的數據集中的每個點一次執行以下操作:

(1) 計算已知類別數據集中的點與當前點之間的距離;

(2) 按照距離遞增次序排序;

(3) 選取與當前點距離最小的k個點;

(4) 確定前k個點所在類別的出現頻率;

(5) 返回前k個點出現頻率最高的類別作為當前點的預測分類。

第(1)步采用歐式距離公式計算兩個向量點之間的距離。

點1:w1=(w11,w12,…,w1i,…,w1n)

點2:w2=(w21,w22,…,w2i,…,w2n)

距離:

計算完所有點之間的距離后,可以對數據按照從小到大的次序排列。然后確定前k個距離最小元素所代表的APK的類別,并且k總是正整數,最后輸出k個類別中占多數的類別,即為當前測試的APK的類別。為了測試分類器的效果,可以使用已知類別的數據,檢驗分類器測出的結果是否符合預期結果。通過大量的測試數據,得到分類器的錯誤率為分類器給出錯誤結果的次數除以測試執行的總數。

在獲得了樣本訓練集的數據矩陣和樣本訓練集的類別向量的基礎上,設定算法中的k值為10。對于每個樣本測試集中的APK,從數據庫中分別提取出它關于API和Permission的特征向量,再從對應的數據表中提取出API和Permission的權值向量。然后用待檢測APK的特征向量和樣本訓練集數據矩陣、類別向量,以及API和Permission的權值向量和k值作為改進的k-NN分類器的輸入,算法的輸出即為待檢測的APK的屬性類別。

4 靜態檢測方案的設計與實現

簡單地說,機器學習就是把無序的數據轉換成有用的信息[15]。本文基于Android APK中包含的各種靜態信息利用機器學習方法來判別一個APK是否是惡意程序。

本文首先對已收集到的兩類APK樣本(惡意APK和正常APK)進行靜態特征的提取,然后將提取到的各種靜態信息(包括:權限、API、VersionName、Package、MainActivity、ShareUserID、Feature、Activity、Service、Received、Intent)存入數據庫中。再利用這些信息從中提取描述一個APK的各種特征,作為描述APK的特征集合,將這些集合存入到數據庫中,以提高后續算法的執行效率。從數據庫中取出每一個APK的信息,根據特征集合合成每個APK的特征向量,并將每個APK的特征向量作為中間結果存入數據庫中。最后將數據庫描述APK的中間結果作為分類算法的訓練集,執行分類算法,將算法執行的結果存入數據庫。測試階段是從數據庫取出測試APK的特征向量,測試算法的精確度。

根據上述方案執行過程設計出的方案系統結構如圖1所示。

微功能模塊主要實現對文件的讀寫功能,從官方文件中提取Android API和權限,獲取目錄內的文件名和子目錄名列表,獲取一個文件的大小、MD5值等。具體主要是指該功能模塊是對其他模塊提供支持的一個共用模塊,在其他模塊中,會頻繁用到一些共有的功能,比如:按行讀取一個文件的內容;將Python中一個列表的內容按行寫入一個dat文件中;獲取一個字符串的MD5值,文件的大小、MD5值,當前時間,路徑信息等。

靜態信息提取模塊是完成對APK中靜態信息的提取。本模塊采用ApkTool反編譯工具,對Android APK進行反編譯,在輸出目錄中會看到一個smali目錄和AndroidManifest.xml文件,smali目錄中按照Java源代碼的目錄結構存放了生成的所有smali文件。從這些smali文件和AndroidManifest.xml文件中抽取APK的靜態信息,存儲到數據庫中,為最后生成APK的特征向量做準備工作。

分類器模塊的設計構造了基于改進的k-NN算法的分類器。其主要實現過程是準備好執行算法所需要的數據,包括確定準API和Permission集合,每個基準特征的條件概率[16-17]、訓練集和測試集的樣本矩陣、訓練集和測試集的樣本類別向量、改進的k-NN算法需要的特征權值,最終構造分類器完成對測試集APK的測試。

數據庫模塊的設計和所有其他模塊進行交互,負責將所有模塊的計算結果存入數據庫,還負責從數據庫中取出數據,目的是減少計算量的重復,提升算法執行效率。本文實驗所用到的數據表如表1所示。

續表1

5 實 驗

本文在Ubuntu操作系統下進行仿真實驗,Ubuntu安裝在Vmware Workstation虛擬機上,主機采用Windows 7。編程實現語言為Python,采用APKTool工具對APK文件進行反編譯,其命令格式為:apktool d[OPTS][apk文件路徑][反編譯輸出目錄]。

5.1 數據準備

使用機器學習的方法來對APK進行分類,在算法訓練時,需要有足夠多的樣本集合才能確保分類器的檢出性能。本文從網上收集了1 251個惡意APK,1 000個正常APK作為樣本的訓練集;收集了1 197個惡意APK,1 000個正常APK作為樣本的測試集。采用Python語言編寫程序,先反編譯APK,然后根據已有的Android API和Permission從smali文件和AndroidManifest.xml文件中提取靜態信息,并存入數據庫,其中API一共18 646條,Permission一共151條。在對訓練集APK靜態信息進行統計的基礎上,可以得出基準API和Permission及它們的權值。取出了120個基準API及其權值,部分數據如表2所示;25個基準Permission及其權值,詳細如表3所示。

表2 基準API及其權值(部分數據)

續表2

表3 Permission的條件概率

續表3

根據基準API和Permission將APK轉換成特征向量。APK關于API的特征向量是一個120維,關于Permission的特征向量是一個25維,每一維值為0或1的向量,0代表此維對應的API或Permission沒有出現在對應的APK中,1代表此維對應的API或Permission出現在了對應的APK中。

5.2 測試指標

為了對實驗結果進行分析,從而對算法的檢測效率給出量化的結果,定義了一組測試指標:

TP(true positive):正常APK被正確分類為正常APK的概率,TP=Rp/Np,Rp為被正確分類的正常APK個數,Np為正常APK的個數。

TN(true negative):惡意APK被正確分類為惡意APK的概率,TN=Rn/Nn,Rn為被正確分類的惡意APK個數,Nn惡意APK的個數。

FP(false positive):正常APK被錯誤分類為惡意APK的概率,FP=Wp/Np,Wp為正常APK被錯誤分類為惡意APK的個數。

FN(false negaitive):惡意APK被錯誤分類為正常APK的概率,FN=Wn/Nn,Wn為惡意APK被錯誤分類為正常APK的個數。

Accuracy:APK被正確分類的概率,Accuracy=(Rp+Rn)/(Np+Nn)。

5.3 實驗結果與分析

表4和表5分別列出了使用基于API的特征向量和基于Permission的特征向量的傳統k-NN算法和改進的k-NN算法的檢測效果。對比兩表可以看出,本文方案的檢測效果達到了一定的水平。

表4 基于傳統的k-NN算法的檢測效果

續表4

表5 基于改進的k-NN算法的檢測效果

在同樣的測試集中,改進的k-NN算法檢測方案比傳統的k-NN算法檢測方案更好,其準確率提升11%左右。原因是實施算法之前提出的特征權值兩者有所不同,改進的算法中實現了惡意APK的特征向量與正常的APK的特征向量相似度更低,兩個惡意或正常APK的特征向量相似度更高。

從改進k-NN檢測方案來具體分析,以API為特征向量,正常APK和惡意APK的檢出率分別達到了85%和83%以上。其中,正常APK的檢出率與惡意APK的檢出率差別不大,因為作為基準特征的API是從訓練集的惡意樣本和正常樣本的共有API中提取出來的。對于沒有被正確分類的APK,一是因為沒有將敏感惡意API完全覆蓋,一些惡意行為不能檢測出來;二是因為正常APK中存在著一些跟惡意APK中相似的惡意行為(例如訪問網絡、訪問位置信息、發送短信等)。以Permission為特征向量,正常APK和惡意APK的檢出率分別達到了87%和85%以上。檢出率整體上比以API為特征的檢出率高,這是因為Android API數量相對于Permission來說要高很多,找出的作為基準的API可能存在冗余沒有去除,所以檢測效率沒有以Permission為特征的方案高。

綜上可見,本文提出的基于API的特征向量和Permission的特征向量的改進k-NN算法的檢測方法是從Android APK中提取信息,再進行統計分析,最終確定了作為基準特征的API有120條,作為基準特征的Permission有25條,它們在惡意APK和正常APK中使用率都高于20%。實驗結果表明,本文方法惡意APK和正常APK的檢出率都在82%以上。

6 結 語

雖然本文方案達到了預期的實驗效果,具備了一定的檢測Android惡意軟件的能力,但是仍有許多值得研究和改進的地方。如作為基準特征的API或Permission的選取有待改進,在對訓練集APK中的API或Permission進行統計分析時,由于只采用了有或無的0/1方式,不能夠真實地反映出某個API或Permission在APK中的真實使用率。一個API或Permission的調用序列,能夠更真實地反映出惡意行為執行過程,在對惡意APK中的API或Permission進行統計分析時,如果能找出一些惡意行為固有的API或Permission調用序列,那么對于檢測惡意APK將具有重大意義,基于API或Permission的惡意軟件的檢出率將會有很大提高。

猜你喜歡
分類數據庫特征
分類算一算
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
分類討論求坐標
數據分析中的分類討論
教你一招:數的分類
抓住特征巧觀察
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 亚洲久悠悠色悠在线播放| 亚洲色图欧美在线| 亚洲无码91视频| 怡红院美国分院一区二区| 亚洲成人www| 国产精品极品美女自在线看免费一区二区| 精品一区二区久久久久网站| 日韩无码精品人妻| 91亚洲国产视频| 午夜福利视频一区| 国产欧美精品专区一区二区| 色吊丝av中文字幕| 亚洲中文字幕av无码区| 狠狠综合久久久久综| 毛片在线区| 视频国产精品丝袜第一页| 中文字幕在线一区二区在线| 欧美国产三级| 久久一色本道亚洲| 亚洲六月丁香六月婷婷蜜芽| 久爱午夜精品免费视频| 色综合久久无码网| 一本大道香蕉高清久久| 欧美日韩久久综合| 亚洲第一黄片大全| 日本人妻一区二区三区不卡影院 | 91区国产福利在线观看午夜| 欧美国产日韩在线| 亚洲国产成人麻豆精品| 一级毛片免费的| 国产精品播放| 91精品网站| 国产高清在线丝袜精品一区| 欧美不卡视频在线| 性视频一区| 婷婷激情亚洲| 亚洲Av综合日韩精品久久久| 国产成人精品亚洲日本对白优播| 高清色本在线www| 国产成人久久综合777777麻豆| 欧美一区精品| 国产一区亚洲一区| 中文字幕av无码不卡免费| 99精品久久精品| 欧美成人日韩| 一级爱做片免费观看久久| 99无码熟妇丰满人妻啪啪| 国产成人亚洲精品蜜芽影院| 无码人中文字幕| 凹凸国产分类在线观看| 久久精品视频一| 就去吻亚洲精品国产欧美| 国产特级毛片aaaaaa| 香蕉精品在线| 免费视频在线2021入口| 国产精品黑色丝袜的老师| 国产午夜在线观看视频| 欧美69视频在线| 欧美高清国产| 超碰91免费人妻| 人妻免费无码不卡视频| 国产精品国产三级国产专业不 | 久久永久精品免费视频| 亚洲欧美在线精品一区二区| 久久精品人妻中文系列| 亚洲黄色网站视频| 欧美啪啪一区| 免费在线看黄网址| 干中文字幕| 一级毛片在线免费视频| 久久久噜噜噜久久中文字幕色伊伊| 亚洲欧美另类中文字幕| 久久久久青草大香线综合精品 | 日本免费a视频| 欧美a在线| 思思热在线视频精品| 成人亚洲视频| 欧美国产日韩在线观看| 日韩AV无码免费一二三区| 国产白浆在线| 日韩欧美一区在线观看| 国产成人在线小视频|