李紅靈,詹 翊
(1.云南大學(xué) 信息學(xué)院 計(jì)算機(jī)科學(xué)與工程系,云南 昆明 650091;2.云南省信息安全測(cè)評(píng)中心,云南 昆明 650000)
Android惡意程序常用權(quán)限分析及統(tǒng)計(jì)研究
李紅靈1,詹 翊2
(1.云南大學(xué) 信息學(xué)院 計(jì)算機(jī)科學(xué)與工程系,云南 昆明 650091;2.云南省信息安全測(cè)評(píng)中心,云南 昆明 650000)
為解決Android惡意程序檢測(cè)中代碼分析量大、核心代碼定位難、檢測(cè)判斷效率低等問題,提出了將靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合的Android惡意程序行為監(jiān)測(cè)和分析的復(fù)合檢測(cè)方法。該方法在對(duì)收集整理的226個(gè)和開放的惡意程序樣本進(jìn)行綜合分析的基礎(chǔ)上,用Python語言編寫了自動(dòng)化Android惡意程序權(quán)限統(tǒng)計(jì)程序,并統(tǒng)計(jì)分析了打開網(wǎng)絡(luò)套接字、將數(shù)據(jù)寫到外部存儲(chǔ)設(shè)備和接收系統(tǒng)啟動(dòng)時(shí)的廣播事件動(dòng)作等15種常用權(quán)限,確定了靜態(tài)分析中需要重點(diǎn)關(guān)注的權(quán)限及其調(diào)用函數(shù)。以Android惡意程序CutePuppiesWallpaper.apk作為實(shí)例,應(yīng)用Apktool工具對(duì)待檢測(cè)APK文件進(jìn)行反編譯,得到反匯編后的Smali文件,通過定位程序關(guān)鍵代碼、定位重要權(quán)限關(guān)聯(lián)API函數(shù)兩種途徑快速找到程序的入口和其重要功能代碼部分。同時(shí),采用沙箱系統(tǒng)的Android惡意軟件動(dòng)態(tài)分析方法,得到開機(jī)啟動(dòng)、應(yīng)用程序變更等事件及其對(duì)應(yīng)的激活方式。研究表明,使用該復(fù)合檢測(cè)方法可以有效提高分析效率,縮短惡意代碼分析時(shí)間,快速定位核心代碼,及時(shí)阻止惡意程序傳播。
Android惡意程序;檢測(cè);常用權(quán)限;靜態(tài)分析;動(dòng)態(tài)分析
隨著移動(dòng)智能設(shè)備的普及,Android系統(tǒng)的發(fā)展也十分迅速,同時(shí)也使Android惡意程序快速發(fā)展和廣泛傳播,給Android用戶帶來了嚴(yán)重的安全隱患[1]。
惡意程序是一種軟件程序代碼,旨在干擾正常的使用,收集系統(tǒng)/用戶的敏感信息,獲取未經(jīng)授權(quán)的信息等等。惡意程序包括病毒、蠕蟲、木馬、后門、邏輯炸彈、漏洞攻擊程序、間諜軟件、廣告軟件、rootkit后門以及其他惡意程序代碼[2]。Android惡意程序是指在用戶不知情或未授權(quán)的情況下,在移動(dòng)智能終端系統(tǒng)中安裝、運(yùn)行,以達(dá)到不正當(dāng)目的的APK文件[3]。
國(guó)內(nèi)在Android安全研究及Android惡意程序檢測(cè)等方面卓有成效。例如,蔣紹林等[4]通過分析Android安全機(jī)制,認(rèn)為Android通過adb工具可以獲取系統(tǒng)root權(quán)限,會(huì)對(duì)文件造成安全威脅,指出增強(qiáng)Android應(yīng)用框架層的安全機(jī)制;張志遠(yuǎn)等[5]通過靜態(tài)分析和動(dòng)態(tài)調(diào)試以及反逆向技術(shù)等方法來介紹怎樣對(duì)Android應(yīng)用進(jìn)行逆向分析,從而實(shí)現(xiàn)Android應(yīng)用的安全可控;李子鋒等[6]提出一種采用靜態(tài)分析檢測(cè)Android惡意程序的方法。該方法使用靜態(tài)數(shù)據(jù)流分析技術(shù)實(shí)現(xiàn)常量分析算法,通過追蹤Android應(yīng)用程序使用常量值的序列,達(dá)到檢測(cè)應(yīng)用程序惡意行為的目的。吳俊昌等[7]提出一種基于Android權(quán)限分類的靜態(tài)分析方法,用于檢測(cè)Android應(yīng)用程序的惡意代碼。王志強(qiáng)等[8]采用靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合的方式,對(duì)Android應(yīng)用程序的關(guān)鍵系統(tǒng)調(diào)用和方法的控制流序列進(jìn)行提取。研究分析了已知惡意軟件樣本庫,成功訓(xùn)練出惡意軟件特征集合和惡意判定閾值,通過比對(duì)Android應(yīng)用程序與惡意特征集的相似度判定是否為惡意程序。最終設(shè)計(jì)并實(shí)現(xiàn)了Android惡意行為檢測(cè)系統(tǒng)SCADect。Zhou Yajin等[9]通過分析1 260個(gè)正常應(yīng)用的權(quán)限使用,與收集的惡意應(yīng)用申請(qǐng)的權(quán)限進(jìn)行對(duì)比,在惡意應(yīng)用和正常應(yīng)用中,訪問網(wǎng)絡(luò)、讀手機(jī)狀態(tài)、訪問網(wǎng)絡(luò)狀態(tài)、寫SD卡等權(quán)限都被廣泛使用,但惡意應(yīng)用更傾向于使用短信相關(guān)的權(quán)限、開機(jī)自啟動(dòng)權(quán)限、更改網(wǎng)絡(luò)狀態(tài)的權(quán)限,正常應(yīng)用很少使用這些權(quán)限。在國(guó)外,Akash Malhotra等[10]通過靜態(tài)分析和動(dòng)態(tài)分析結(jié)合黑白名單的方法,對(duì)Android惡意軟件進(jìn)行研究,使用逆向分析檢查惡意代碼,又使用工具來識(shí)別包結(jié)構(gòu),再用白名單過濾的策略來識(shí)別惡意程序。Thomas等[11]提出一種Android應(yīng)用程序沙箱。該沙箱使用Android SDK中的Monkey工具,生成偽隨機(jī)事件流,并模擬用戶點(diǎn)擊、觸摸、手勢(shì)或系統(tǒng)事件等操作,通過監(jiān)測(cè)系統(tǒng)和庫函數(shù)調(diào)用,生成的日志記錄,來分析Android應(yīng)用程序是否存在惡意行為。
在對(duì)工作中收集整理到的226份Android惡意程序樣本和一些公開的惡意程序樣本進(jìn)行綜合分析的基礎(chǔ)上,應(yīng)用Python編寫了相關(guān)的統(tǒng)計(jì)程序,統(tǒng)計(jì)出Android惡意程序常用的權(quán)限類型與使用頻度,并確定了靜態(tài)分析環(huán)節(jié)中需要重點(diǎn)關(guān)注的權(quán)限。另外,結(jié)合信息安全測(cè)評(píng)工作的實(shí)踐活動(dòng),基于沙箱系統(tǒng)的Android惡意程序動(dòng)態(tài)分析方法,進(jìn)行了Android惡意程序激活方式研究,歸納了動(dòng)態(tài)分析中激活惡意程序的方法。結(jié)合靜態(tài)分析與動(dòng)態(tài)分析,總結(jié)出惡意程序行為分析的有效方法。
訪問控制是系統(tǒng)實(shí)施安全控制的有效手段之一,而訪問控制具體體現(xiàn)在主體對(duì)客體的訪問權(quán),即主體對(duì)系統(tǒng)資源的訪問權(quán)限上[12],因此對(duì)惡意程序常用權(quán)限的統(tǒng)計(jì)分析是惡意程序行為研究的基礎(chǔ)。
2.1Android惡意程序常用權(quán)限統(tǒng)計(jì)的目的
Android系統(tǒng)在應(yīng)用程序框架中提供了權(quán)限許可機(jī)制,為開發(fā)者定義了一百多種權(quán)限用于保護(hù)系統(tǒng)資源,并提供了對(duì)應(yīng)的API用于訪問上述系統(tǒng)資源。
由于Android嚴(yán)格的權(quán)限許可機(jī)制,惡意程序如果試圖獲取用戶隱私、系統(tǒng)信息或者執(zhí)行系統(tǒng)操作,都必須在AndroidManifest.xml文件中申明相應(yīng)的權(quán)限,否則在程序運(yùn)行時(shí)就會(huì)觸發(fā)安全異常[13]。Android系統(tǒng)也規(guī)定應(yīng)用程序在運(yùn)行過程中無法動(dòng)態(tài)地改變自身權(quán)限。故惡意權(quán)限的使用情況可以作為Android應(yīng)用惡意行為判別的重要依據(jù)。因此有必要針對(duì)Android惡意程序進(jìn)行權(quán)限統(tǒng)計(jì),由此得到惡意程序最常用的權(quán)限。這些權(quán)限使用情況及其對(duì)應(yīng)的API函數(shù),是靜態(tài)分析的核心部分,優(yōu)先分析這些權(quán)限組合及函數(shù)調(diào)用可以大幅縮減代碼分析量,有效降低人為分析的強(qiáng)度,提高惡意程序分析的效率。
2.2Android惡意程序樣本介紹
對(duì)于此次研究,統(tǒng)計(jì)分析的Android惡意程序樣本部分源于以下各開放網(wǎng)站:https://zeltser.com/malware-sample-sources/;https://www.mediafire.com/?78npy8h7h0g9y;http://contagiodump.blogspot.com/。其余樣本是由實(shí)際工作中收集整理的,共226個(gè)。
2.3Android惡意程序常用權(quán)限統(tǒng)計(jì)的實(shí)現(xiàn)
所用命令與參數(shù)如下:
main.py -i
程序輸出結(jié)果略(鑒于篇幅)。
2.4Android惡意程序常用權(quán)限統(tǒng)計(jì)結(jié)果分析
根據(jù)以上樣本及程序分析得出如表1所示的統(tǒng)計(jì)結(jié)果。表中所反映的這些權(quán)限及相關(guān)的API函數(shù)就是在靜態(tài)分析中需要重點(diǎn)關(guān)注的部分。
3.1Android惡意程序反編譯
下面以分析Android惡意程序CutePuppiesWallpaper.apk為例進(jìn)行說明。通過使用Apktool工具可對(duì)待檢測(cè)APK文件進(jìn)行反編譯(過程略)。
編譯后可以產(chǎn)生和程序包層次結(jié)構(gòu)相同的Smali目錄,目錄中包含著反匯編后的Smali文件[14]。
表1 惡意程序常用權(quán)限及使用頻率
反編譯后的Smali文件代碼通常較長(zhǎng),而且指令繁多,代碼分析時(shí)很難捕捉到重點(diǎn),因此有必要快速定位程序關(guān)鍵代碼,提高分析效率,降低分析強(qiáng)度。
3.2快速定位程序關(guān)鍵代碼
Android程序由一個(gè)或多個(gè)Activity以及其他組件構(gòu)成,不同的Activity實(shí)現(xiàn)不同的功能,但每個(gè)程序有且只有一個(gè)主Activity。對(duì)于大多數(shù)應(yīng)用程序而言,主Activity的OnCreate()就是程序的代碼入口,所有功能從這里開始執(zhí)行[14]。
以下是快速定位的操作步驟。
步驟1:先解析出AndroidManifest.xml文件,找到主Activity,如圖1所示。
圖1 解析AndroidManifest.xml文件找到主Activity
步驟2:查看其所在類的OnCreate()方法的反匯編代碼,提高分析效率,如圖2所示。
virtualmethods.methodpubliconBind(Landroid/content/Intent;)Landroid/os/IBinder;.locals1.paramp1,"arg0"#Landroid/content/Intent;.prologue.line17const/4v0,0x0return-objectv0.endmethod.methodpubliconCreate()V.locals0.prologue.line22invoke-super{p0},Landroid/app/Service;->onCreate()V.line23return-void.endmethod
圖2 定位OnCreate()方法
通過以上兩個(gè)步驟就可以定位到程序的代碼入口。
3.3快速定位重要權(quán)限關(guān)聯(lián)API函數(shù)
還需要根據(jù)表1,重點(diǎn)分析惡意程序常用權(quán)限的函數(shù)調(diào)用情況。
通過定位程序關(guān)鍵代碼、定位重要權(quán)限關(guān)聯(lián)API函數(shù)兩種途徑,就可以快速找到程序的入口及其重要功能代碼部分。在源代碼分析過程中,優(yōu)先分析程序關(guān)鍵代碼可以避免順序分析中閱讀大量無關(guān)代碼,加快了分析速度,提高了分析效率。
Android惡意程序動(dòng)態(tài)分析利用沙箱原理,即在計(jì)算機(jī)系統(tǒng)內(nèi)部構(gòu)造一個(gè)獨(dú)立的虛擬空間,惡意程序所作的任何寫磁盤操作,都將重定向到這個(gè)虛擬空間[15]。這樣將阻止可疑程序?qū)ο到y(tǒng)訪問,轉(zhuǎn)變成將可疑程序?qū)Υ疟P、注冊(cè)表等的訪問重定向到指定文件夾下,從而消除惡意程序?qū)ο到y(tǒng)的危害。
4.1分析環(huán)境搭建
將裝有Droidbox、Wireshark、Androguard等檢測(cè)分析工具的主機(jī)(或是筆記本電腦)通過有線或無線方式接入互聯(lián)網(wǎng),打開筆記本電腦無線網(wǎng)絡(luò),將其設(shè)置為訪問接入點(diǎn)AP(SSID:Test),打開待檢測(cè)手機(jī)的WIFI功能,接入無線網(wǎng)絡(luò),這樣就完成了分析環(huán)境的搭建。其拓?fù)浣Y(jié)構(gòu)如圖3所示。
4.2觸發(fā)惡意程序
以下從分析惡意程序的激活方式,創(chuàng)建激活條件激活惡意程序,使用APIMonitor對(duì)惡意程序進(jìn)行分析三個(gè)方面進(jìn)行介紹。
圖3 分析環(huán)境網(wǎng)絡(luò)拓?fù)?/p>
(1)惡意程序激活方式。
經(jīng)對(duì)Android惡意程序?qū)嵗治霾⒔Y(jié)合工作實(shí)踐經(jīng)驗(yàn),分析和總結(jié)了Android惡意程序的主要激活方式,如表2所示。
表2 運(yùn)行main.py程序的輸出內(nèi)容
(2)創(chuàng)建激活條件激活惡意程序。
通過以下四個(gè)步驟可以完成惡意程序激活的全過程。
步驟1:提供WIFI與移動(dòng)數(shù)據(jù)網(wǎng)絡(luò)兩個(gè)Internet網(wǎng)絡(luò)出口。有些惡意程序?yàn)榱艘?guī)避流量監(jiān)測(cè),采取了智能判斷,僅當(dāng)有WIFI連接時(shí)才有網(wǎng)絡(luò)行為。
步驟2:需更改測(cè)試環(huán)境的時(shí)區(qū)及時(shí)間設(shè)置。有些惡意程序,為了提高其隱蔽性,在其源代碼中加入了時(shí)間判斷,在正常工作時(shí)間(07:00-24:00)不工作,有效規(guī)避了分析人員在正常時(shí)間內(nèi)對(duì)其進(jìn)行動(dòng)態(tài)分析。
步驟3:盡可能嘗試多種網(wǎng)絡(luò)協(xié)議類型的操作。有些惡意程序通常在用戶主動(dòng)進(jìn)行網(wǎng)絡(luò)操作時(shí)才運(yùn)行,如打開瀏覽器(HTTP)、網(wǎng)絡(luò)下載(FTP)等,因此在動(dòng)態(tài)分析時(shí)需要主動(dòng)嘗試多種網(wǎng)絡(luò)行為。
步驟4:根據(jù)表2總結(jié)的惡意程序激活方式盡可能模擬很多的監(jiān)聽事件,觸發(fā)木馬惡意行為。
(3)使用APIMonitor對(duì)惡意程序進(jìn)行分析。
APIMonitor是DroidBox中獨(dú)立的動(dòng)態(tài)分析工具,它通過向目標(biāo)APK包中插入監(jiān)視代碼來監(jiān)測(cè)應(yīng)用程序在運(yùn)行過程中調(diào)用的API。
APIMonitor首先反編譯所要處理的APK包,接著遍歷Smali代碼。如果找到在配置文件中配置的需要監(jiān)測(cè)的API,則分析這個(gè)API參數(shù),插入DroidBox包下相應(yīng)的類的靜態(tài)函數(shù),最后重新打包這個(gè)APK包。這樣,當(dāng)應(yīng)用程序在運(yùn)行過程中調(diào)用到插入了監(jiān)視代碼的API后,系統(tǒng)日志就會(huì)出現(xiàn)標(biāo)簽DroidBox標(biāo)記的日志信息,只需過濾出這些日志信息,就可以獲得應(yīng)用程序調(diào)用系統(tǒng)API的信息。
默認(rèn)監(jiān)控的API列表存放在config/default_api_collection文件下。其內(nèi)容如圖4所示。
#DEFAULTAPILIST#IntentLandroid/content/Intent;->
圖4 程序調(diào)用系統(tǒng)API的信息
通過靜態(tài)分析結(jié)合動(dòng)態(tài)分析,可在短時(shí)間內(nèi)快速全面掌握Android惡意程序的基本功能、程序流程、網(wǎng)絡(luò)行為。較傳統(tǒng)分析而言,大大縮短了分析時(shí)間,提高了分析效率。
為解決Android惡意程序檢測(cè)中代碼分析量大、核心代碼定位難、檢測(cè)判斷效率低等問題,提出了將靜態(tài)分析與動(dòng)態(tài)分析相結(jié)合的Android惡意程序行為監(jiān)測(cè)和分析的復(fù)合檢測(cè)方法。該方法對(duì)收集整理的226個(gè)和開放的惡意程序樣本進(jìn)行了綜合分析,應(yīng)用Python語言編寫了自動(dòng)化Android惡意程序權(quán)限統(tǒng)計(jì)程序,統(tǒng)計(jì)分析了打開網(wǎng)絡(luò)套接字、將數(shù)據(jù)寫到外部存儲(chǔ)設(shè)備和接收系統(tǒng)啟動(dòng)時(shí)的廣播事件動(dòng)作等15種常用權(quán)限,并以此確定靜態(tài)分析中需要重點(diǎn)關(guān)注的權(quán)限及其調(diào)用函數(shù)。以Android惡意程序CutePuppiesWallpaper.apk為驗(yàn)證實(shí)例,使用Apktool工具對(duì)待檢測(cè)的APK文件進(jìn)行了反編譯,得到了反匯編后的Smali文件,通過定位程序關(guān)鍵代碼、定位重要權(quán)限關(guān)聯(lián)API函數(shù)兩種途徑快速找到程序入口及其重要功能代碼部分。同時(shí),采用沙箱系統(tǒng)的Android惡意軟件動(dòng)態(tài)分析方法,得到開機(jī)啟動(dòng)、應(yīng)用程序變更等事件及其對(duì)應(yīng)的激活方式。使用該方法,可以有效提高分析效率,縮短惡意代碼分析時(shí)間,快速定位核心代碼,及時(shí)阻止惡意程序傳播。
[1] 張藝騰.基于并行計(jì)算弱KMP模式挖掘算法的Android惡意應(yīng)用檢測(cè)[EB/OL].2014.http://d.wanfangdata.com.cn/Thesis/Y2695006.
[2] Stallings W,Brown L.計(jì)算機(jī)安全原理與實(shí)踐[M].賈春福,劉春波,高敏芬,等,譯.北京:機(jī)械工業(yè)出版社,2008:75-142.
[3] 王 葉.PC與智能手機(jī)黑客攻防大全[M].北京:機(jī)械工業(yè)出版社,2015.
[4] 蔣紹林,王金雙,張 濤,等.Android安全研究綜述[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(10):205-210.
[5] 張志遠(yuǎn),萬月亮,翁越龍,等.Android應(yīng)用逆向分析方法研究[J].信息網(wǎng)絡(luò)安全,2013(6):65-68.
[6] 李子鋒,程紹銀,蔣 凡.一種Android應(yīng)用程序惡意行為的靜態(tài)檢測(cè)方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(7):148-151.
[7] 吳俊昌,駱培杰,程紹銀,等.基于權(quán)限分類的Android應(yīng)用程序的靜態(tài)分析[C]//第四屆信息安全漏洞分析與風(fēng)險(xiǎn)評(píng)估大會(huì).出版地不詳:出版者不詳,2011:24-28.
[8] 王志強(qiáng),張玉清,劉奇旭,等.一種Android惡意行為檢測(cè)算法[J].西安電子科技大學(xué)學(xué)報(bào),2015,42(3):8-14.
[9] Zhou Y,Jiang X.Dissecting android malware:characterization and evolution[C]//2012 IEEE symposium on security and privacy.[s.l.]:IEEE,2012:95-109.
[10] Malhotra A.Android malware:study and analysis of malware for privacy leak in ad-hoc network[J].International Journal of Computer Science & Network Security,2013,12(3):39-43.
[11] Bl?sing T,Batyuk T,Schmidt L,et al.An Android application sandbox system for suspicious software detection[C]//International conference on malicious and unwanted software.[s.l.]:[s.n.],2010:55-62.
[12] 李 洋.Android安全架構(gòu)及權(quán)限控制機(jī)制剖析[EB/OL].2013-09-08.http://tieba.baidu.com/p/2582088334.
[13] 高 岳,胡愛群.基于權(quán)限分析的Android隱私數(shù)據(jù)泄露動(dòng)態(tài)檢測(cè)方法[EB/OL].2013-08-09.http://www.docin.com/p-1395465408.html.
[14] 豐生強(qiáng).Android軟件安全與逆向分析[M].北京:人民郵電出版社,2013.
[15] 劉志永,王紅凱,李高磊,等.一種基于主機(jī)特征的未知惡意程序動(dòng)態(tài)識(shí)別系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2016(3):105-110.
StatisticsAnalysisandResearchonCommonPermissionsofAndroidMalwares
LI Hong-ling1,ZHAN Yi2
(1.Department of Computer Science and Engineering,School of Information Science and Engineering,Yunnan University,Kunming 650091,China;2.Information Security Evaluation Center of Yunnan Province,Kunming 650000,China)
In order to solve problems including excessive codes,key-permission orientation difficulty and low detection efficiency in Android malware detection,a composite detection solution with static and dynamic analysis is proposed for Android malware monitoring and analyzing.On the basis of synthetic analysis of collected 226 samples and public malware samples,it uses Python language to compile an automatic Android malware permissions statistical program.Besides,15 most common permissions including unfolding network socket and activating broadcast event action while transferring data to external storage device or receiving system are carried on statistical analysis,determination of those key permissions and corresponding call functions which required further attention.Malware CutePuppiesWallpaper.apk,taken as an example,has been decompiled via APKtool and the decompiled Smali file has been obtained.By locating key codes of the malware and locating crucial permission-related API functions the entering and crucial functioning parts of the codes have been efficiently located.Meanwhile,Sandbox Android malware dynamic analysis on events including booting up and application change along with their corresponding activation patterns have been summarized.The time consumption of codes analysis has been reduced by using it and the key codes have been quickly located while spreading of malware is terminated in time.
Android malware program;detection;common permissions;static analysis;dynamic analysis
2016-10-19
2017-02-23 < class="emphasis_bold">網(wǎng)絡(luò)出版時(shí)間
時(shí)間:2017-08-01
國(guó)家自然科學(xué)基金資助項(xiàng)目(61562090);云南大學(xué)教育教學(xué)改革研究項(xiàng)目
李紅靈(1966-),女,副教授,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)、信息安全。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170801.1550.030.html
TP309;TP393
A
1673-629X(2017)11-0132-05
10.3969/j.issn.1673-629X.2017.11.029