馮志峰
摘? 要:Android作為當今最流行的操作系統(tǒng),已經(jīng)被世界上成千上萬的使用者所使用,但是正是基于Android天生開源的特性,讓很多開發(fā)者在開發(fā)app的過程中,可以利用系統(tǒng)或者是手機自身的權限申請以及目前市面上還不健全的應用商店審核機制,開發(fā)惡意軟件從而危害到用戶的手機內的個人資料和隱私。在此篇論文中,我們提供了一種能夠檢測惡意軟件的機制并加以實踐,通過提取Android APK的權限[1]申請作為特征點,通過已經(jīng)使用大量提取的數(shù)據(jù)訓練完的SVM模型對軟件做檢測,根據(jù)實驗結果,我們的模型對于惡意軟件的檢測率高達89%-92%之間,符合研究預期。
關鍵詞:大數(shù)據(jù);機器學習;病毒軟件檢測;SVM模型
中圖分類號:TP3 文獻標志碼:A? ? ? ? ?文章編號:2095-2945(2020)18-0018-03
Abstract: Android, as the most popular operating system, has been used by thousands of users in the world, but it is based on the natural open source feature of Andoird that many developers can make use of the permission application of the system or mobile phone and the imperfect application store audit mechanism in the market to develop malicious software to endanger the personal data and privacy of users in the process of developing app. In this paper, we provide a mechanism that can detect malicious software and put it into practice. By extracting the permission of Android APK[1] as a feature point, we use the SVM model trained with a large number of extracted data to detect the software. According to the experimental results, the detection rate of our model for malicious software is as high as 89%, which is in line with the research expectations.
Keywords: big data; machine learning; virus software detection; SVM model
1 概述
目前對于Android應用程序的相關研究有相當多的技術方向,隨著機器學習以及大數(shù)據(jù)分析的趨勢越來越火,從早期的Android應用程序單一的解包分析到現(xiàn)在多維度人工智能分析,這些技術的核心就是通過檢測以及修補Android應用程序的在手機中運行整個周期中所存在的設計缺陷和漏洞,代碼的書寫錯誤,運行異常等,主要可以分為三類方向:(1)靜態(tài)代碼分析;(2)動態(tài)代碼分析[2];(3)運行大數(shù)據(jù)機器學習的方法[3]進行分析。根據(jù)我們的調查和了解,支持向量機(Support vector machine)作為目前機器學習中最為常用而且有用的手段,提供了良好的分類性能,與其他機器學習的方法相比,應用到Android安全檢的工程當中更具有它的優(yōu)勢,本文就是通過分析并且提取Android 軟件中的權限列表作為特征點,因為這些特征點可以比較形象地告訴我們這款app之后可能潛在的行為,所以通過我們對于這些行為的分析,可以比較準確地判斷這款app是否為惡意軟件的可能性。
2 研究步驟
2.1 選擇特征點
如果我們要對每一個app檢測判斷它們是否是惡意的軟件,第一步就是對app進行分析。經(jīng)過我們對大量已經(jīng)存在的惡意軟件進行解包分析之后,我們發(fā)現(xiàn)大多數(shù)的惡意軟件都是通過訪問用戶的敏感數(shù)據(jù),竊取用戶的隱私和拒絕訪問設備的功能來危害用戶。許多的Android惡意軟件在用戶程序退到后臺之后,偷偷在后臺運行,根據(jù)應用的不同,大致上可以分為三類,第一類惡意軟件的作答基本上都是通過調用后臺系統(tǒng)中撥打電話的api從而來實現(xiàn)撥打電話發(fā)送服務注冊的簡訊,攔截服務確認的簡訊,以及自動聯(lián)網(wǎng)下載強制推送廣告。第二類的惡意軟件通常都是在用戶給予apk權限之后,默默在后臺手機用戶的地理位置訊息,聯(lián)系人列表等敏感信息,從而上傳到指定的服務器中。第三類的惡意軟件會去獲取Android中最高的root權限,從而在未經(jīng)使用者同意的情況下刪除更改用戶的數(shù)據(jù),以及其他更加危險的行為,因此我們選定使用應用程序中的權限作為特征點。
2.2 提取特征點
在2.1中我們已經(jīng)確定使用apk中的permission作為特征點,在這一節(jié)中我們來介紹如何提取特征點。
我們知道每一款apk檔所有的權限申請都在一個名為AndroidManifest.xml檔中,所以我們需要處理xml的檔同時考慮到在資料收集階段,我們會收集上萬筆apk作為data sample(在3.1中會提到),所以我們需要一個可以批量處理apk檔并且獲取其中的permission list。我們最終選取使用Androguard 這款開源工具來作為我們的批量處理apk的工具。