?

基于Android API調用的惡意軟件行為檢測方法研究?

2019-03-26 08:44盧曉榮劉釗遠
計算機與數字工程 2019年3期
關鍵詞:增益日志應用程序

盧曉榮 劉釗遠

(西安郵電大學計算機學院 西安 710061)

1 引言

現今手持移動設備的運算能力日益增強,搭載智能系統的移動設備成為日?;顒硬豢苫蛉钡囊徊糠?。因此,手持移動設備大多都存儲了大量涉及用戶隱私的重要信息,如通訊錄、短信、郵件、文件等,這些信息涵蓋了用戶生活和工作的各個方面。

互聯網技術的發展給人們帶來了好處,而風險也隨之而來。據統計,2016年全年,360互聯網安全中心累計截獲Android平臺新增惡意程序樣本1403.3萬個,平均每天新增3.8萬惡意程序樣本。從手機用戶感染惡意程序情況看,360互聯網安全中心累計監測到Android用戶感染惡意程序2.53億,平均每天惡意程序感染量約為70萬人次[1],因此,手機安全問題亟待解決。

在眾多類型的惡意應用中,絕大部分都是在用戶不知情的情況下,通過在后臺訪問相關的設備資源如網絡、短信、聯系人、位置信息等并對這些資源進行操作,達到其惡意的行為[2]。Android惡意代碼分析研究目前主要有兩種方法,即靜態分析和動態檢測。靜態分析是指通過分析程序代碼來判斷程序行為[3]。Enck 等[4]提出 ded反編譯器,從 An-droid安裝鏡像中反編譯出應用程序的Java源代碼。Matsumotos等[5]提出一種靜態隱私數據泄露分析工具,通過分析應用程序源代碼找到讀取隱私數據的API,然后分析隱私數據的傳輸流,從而得到該應用程序泄露隱私數據的可能性。動態分析是指在嚴格控制的環境下執行應用程序,盡可能地觸發軟件的全部行為并記錄,以檢測應用程序是否包含惡意行為[6]。Enck等[7]提出TaintDroid采用污點跟蹤技術,將用戶敏感數據進行“著色”,監視敏感數據流,分析應用程序的敏感數據泄露。Dietz等[8]提出Quire用于監控混淆代理人攻擊(confused deputy attack),Quire通過跟蹤IPC調用鏈來防止應用程序間權限的提升,并且對IPC和RPC通信數據做輕量級的加密。Rubin Xu等[9]提出了Aurasium,通過重打包應用程序,修改smali文件添加監控代碼,hook關鍵系統API并修改應用程序入口,從而達到監控應用程序的目的。

此方法缺點是要修改應用程序,必須對應用程序重新簽名,破壞了應用程序的完整性。雖然靜態分析能夠快速有效地查找已知的惡意樣本代碼,但是無法良好應對精良的代碼混淆和重打包技術。而動態的分析是通過實際運行軟件,捕捉行為進行分析,它可以有效地應對代碼混淆技術,更真實地反映軟件意圖。

即使目前有大量的代碼混淆技術,但是行為在一定程度上會暴露惡意軟件的意圖。而一個惡意軟件實現自己的意圖,需要通過調用現有的系統API,否則就需要自己再編寫大量的代碼,不只增加了代碼復雜度,同時還會增加被檢測的幾率[5]。所以Android API調用是值得分析的軟件行為之一,因此,文中設計基于動態檢測的思想,結合Android API和參數及參數取值多特征提取實現惡意軟件檢測,彌補靜態分析的惡意軟件檢測的不足和解決以Android API為特征檢測率低的問題。

2 Android惡意軟件動態檢測

Android惡意軟件檢測目前主要有兩種方法,即靜態分析和動態檢測。關于Android應用軟件的靜態檢測研究[10~12],大多數都是通過反匯編技術得到Android應用程序的源碼然后對源碼進行分析研究。由于靜態分析方法自身的局限性,使得許多學者從事Android應用程序的動態研究,動態研究主要是通過Android應用程序運行過程的行為及系統調用等方面進行研究[13~16]。

文中將采用動態檢測的方法,通過對惡意軟件行為的分析,實現惡意軟件的檢測。流程圖如圖1所示。

圖1 基于Android API調用的惡意軟件檢測流程圖

首先在國內外軟件分享網站及論壇,收集惡意和正常軟件樣本。其次在虛擬機中,運行收集到的正常和惡意軟件樣本,收集軟件API調用日志。最后,日志文件作為分析對象,將惡意軟件動態行為分析轉換為對文本的分析。使用文本分析的方法,從收集到的日志文文中件中提取特征,進行數據預處理。文中將會提取兩組特征進行研究:API和API+參數+參數取值。通過擴大對Android API調用監測范圍,探究參數和參數取值對實驗的影響。結合文檔頻率和信息增益進行特征選取。對兩組特征分別設定不同的閾值,選擇不同數量的特征進行實驗。同時選用多種分類算法[17]進行實驗,對比分類效果,選定一種比較好的分類算法實現惡意軟件檢測。

3 惡意軟件動態檢測方法實現

基于Android API和參數及參數取值多特征提取的惡意軟件檢測。本節內容主要包括數據采集和預處理,特征選擇和分類。

3.1 數據采集

由于知名的官方應用網站會對所有發布的應用軟件進行嚴格的審查與測試,所以要想通過官方應用市場獲取大量的惡意軟件樣本,幾乎是不可能的。因此只能在部分專門的網站取得,并且取得的樣本數量是有限的。

文中收集的惡意軟件樣本,全部是從在線惡意軟件倉庫VirusShare中下載得到,均是較新的樣本,且帶有專業的測試報告,包括病毒、木馬、蠕蟲、廣告軟件、勒索軟件等,而正常軟件樣本則全部來自于華為應用市場。為確保所獲取到的樣本不會影響到最終的實驗結果,通過VirusTotal網站對所獲取到的軟件樣本進行檢測與分類,并最終選定250個惡意軟件樣本和250個正常軟件樣本作為本次實驗的樣本,其中訓練樣本包括:130個惡意軟件樣本和120個正常軟件樣本,測試樣本包括:120個惡意軟件樣本和130個正常軟件樣本。

在動態惡意軟件檢測的過程當中,數據收集是十分困難的部分。靜態的分析可以使用現有已經形成的數據集,而動態檢測需要實際運行軟件,相對于靜態的分析耗時更多。

文中將使用APIMonitor進行自動分析,APIMonitor是一款監視和控制應用程序和服務的工具,該工具可以自動取得應用程序的Android API調用信息,所得到的結果默認放入config日志文件下。

按照上述方法,使用腳本遍歷所有軟件樣本,提取本實驗所需的特征,即軟件運行中的API序列,將這些特征放入一個.arff文件中,作為分類器的輸入。

3.2 數據預處理

實驗中考慮的因素主要是API、參數和參數的取值,因此在進行數據預處理的時候,目標就是提取出日志中的API、參數和參數取值。

3.2.1 API字符串提取

在實驗的過程中首先提取了API,再使用字符串處理提取參數和參數的取值。

我們可以將一個軟件的Android API調用日志中相關的API調用格式抽象為File{API1(arguments1:value,arguments 2:value,……),API2(arguments3:value,arguments4:value,……),……}。

把每個文件中的API按種類統計出來形成數據集,然后再對數據集進行處理形成API字符串數據庫,這里不考慮API在每個日志中出現的次數,只計算它是否出現在文件中,文中提取出的API特征庫形式如下所示:

API={API1 3,API2 6,API3 8,API4 5,…},API名字后邊的數字代表此API一共出現在多少個日志文件中。最后每個API為一行寫入TXT文檔中。API字符串提取流程如圖2所示。

3.2.2 API參數及參數取值字符串提取

API數據提取較為簡單,在處理API+參數+參數取值時,處理會更加的復雜。原始的數據集中,每個日志文件都會出現雜亂的字符,要使用多次的字符串處理,分割,連接才形成相應字符串,不能從原始的日志文件中獲取。對同一個日志文件,API+參數+參數的取值可能會多次出現,但是文中不考慮在單個文檔中的頻率,只考慮在該文檔中是否出現。文中提取出的API+參數+參數的取值特征庫形式如下所示:

APIAv={API1A1value14,API1A1value27,API2A2value1 5,API2A3value1 3,…},同樣的,API+參數+參數的取值名字后邊的數字代表此API+參數+參數值一共出現在多少個日志文件中。最終統計形成TXT文檔。API參數及參數取值字符串提取流程如圖3所示。

圖2 API字符串提取流程圖

圖3 API參數及參數取值字符串提取流程圖

3.3 特征選擇

在數據預處理的步驟中,己經從原始的日志文件中提取出了初步的API,API+參數+參數取值等字符串數據。而如果直接使用這些特征進行實驗,特征的數目會很大,増加了分類的復雜度,會降低分類算法的效果。同時,在特征當中,很多的特征對分類沒有貢獻,反而會對分類造成干擾。所以特征的選擇在文本分類當中是十分重要的步驟,特征的選擇好壞會直接影響到分類效果的優劣。文檔頻率是最簡單的特征選擇方法,但是選擇出來的特征,只看出現在數據集文檔中的頻率是不全面的。而信息增益特征選擇的方法,可以反映特征所帶來的信息量,但是如果對所有的候選特征都進行信息增益的計算,會增加計算的復雜度,降低算法效率。

文中計劃在特征選擇中,將兩個方法進行結合,首先使用文檔頻率對特征進行初步篩選。對第一步處理得到的特征集,再進行信息增益的計算,進行第二步特征篩選。

3.3.1 文本頻率特征選擇

數據預處理階段生成的TXT文件一共是三列,第一列為API,第二列和第三列分別為該API特征出現在惡意軟件和非惡意軟件中的次數。如果出現在惡意軟件和非惡意軟件中的次數之和大于輸入的文檔頻率閾值,則保留該特征,否則舍棄該特征,形成新的文檔頻率特征庫。實現第一步特征篩選,初步減少了頻率沒有達到閾值的特征,減少了下一步的計算量,提高了算法的時間效率。

3.3.2 信息增益特征選擇

信息增益來自于香農的信息論,使用信息熵進行評估。在信息增益中,主要是衡量特征給分類帶來的信息量,帶來信息量越多的特征越重要[18]。計算信息增益,首先要計算信息熵。假設一共有m個事件{X1,X2…Xm},每個事件出現的概率是{P,且有則有單個事件的信息熵計算公式為

所有事件的信息熵為

當某一個因素出現之后,會對事件的發生概率產生影響,即事件的不確定性發生了改變,信息増益就表示事件的這種不確定性的變化程度。計算信息增益,還需要計算劃分熵。劃分熵的計算公式如下:

信息增益計算如下:

根據每個特征的信息增益值進行選擇,設定閾值,選擇信息增益值滿足該閾值的特征。

3.4 分類

在文本分類算法中,評價標準也是十分重要的部分。目前常用的分類算法評價指標有識別率、誤判率、精確率、準確率等。

文中在進行文本分類的過程當中主要涉及惡意軟件和非惡意軟件兩類,對于二元分類問題,預測可能會產生四種相異的結果,TP(True Positive)表示將非惡意軟件正確分類為真的個數,TN(Ture Negative)表示將惡意軟件正確分類為真的個數,FP(False Positive)表示將非惡意軟件分類為假的個數,FN(False Negative)表示將惡意軟件分類為假的個數。下面詳細介紹各個評價標準。

識別率,就是正確將惡意軟件分類成惡意軟件的比率和正確將非惡意軟件分類成非惡意軟件的比率。比如惡意軟件識別率(真陽性率):

誤判率,就是對于其他類別的樣本,有多少的概率可以將其分類為本類別的樣本。比如惡意軟件誤判率(假陰性率):

精準率,即所有分類為該類的樣本數量中真正屬于該類的比率。例如惡意軟件的精確率:

總的準確率,即所有分類準確的樣本數量占總的樣本數量的比率。計算如下:

文中將利用上述評價指標對測試結果進行評估驗證。

4 實驗結果分析

文中采用動態檢測分析的方法,構建惡意軟件檢測模型。以API作為特征,根據3.4節介紹的評價指標,利用相關公式進行分類評估,結果如表1、表2所示。

以API+參數+參數的值為特征,利用相關公式進行分類評價,結果如表3、表4所示。

表1 API為特征的分類結果

表2 API為特征的評估結果

表3 API+參數+參數的值為特征的分類結果

表4 API+參數+參數的值為特征的評估結果

通過對比表1和表3發現,以API+參數+參數的值作為特征比以API作為特征分類的結果要好,而且通過對比三種分類算法發現J48的分類結果最好。

通過對比表2和表4發現,以API+參數+參數的值作為特征的檢測識別率、準確率等均比以API為特征的要高,并且在選定的三種算法中,J48的分類準確率最高,說明該分類算法對文本所構造特征的分類效果最優。

通過實驗對比結果可知,API+參數+參數的值作為特征的分類效果和檢測準確率等均比API作為特征的好,表明文中所提出的方案能夠有效地提高惡意軟件檢測的準確率。

5 結語

文中采用動態檢測的方法,分別以API和API+參數+參數值為特征,使用機器學習及數據挖掘技術,對250個惡意樣本和250個正常樣本進行仿真實驗,實驗結果表明,API+參數+參數值這一特征能夠有效地提高惡意軟件檢測的準確率。

文中所提出的方案雖然具備一定的檢測效果,但是由于實驗條件限制,實驗數據相對不是很多,不能夠很好地檢測所有的惡意軟件類別,因此,提出一種可針對任意類別惡意軟件的檢測方案至關重要。

猜你喜歡
增益日志應用程序
“增益”還是“損耗”?挑戰性工作要求對工作?家庭增益的“雙刃劍”影響*
一名老黨員的工作日志
有源環路低通中運放帶寬對相噪的影響
基于增益調度與光滑切換的傾轉旋翼機最優控制
讀扶貧日志
刪除Win10中自帶的應用程序
雅皮的心情日志
谷歌禁止加密貨幣應用程序
雅皮的心情日志
寬頻帶增益放大器的設計與測試
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合