進(jìn)入移動互聯(lián)時代以來,隨著日益豐富的應(yīng)用生態(tài),Android系統(tǒng)的市場占有率也隨之增長。與IOS不同,Android應(yīng)用軟件下載更加方便快捷,不同的軟件市場都可以下載,例如,騰訊手機(jī)管家,360手機(jī)衛(wèi)士,Google官方市場等。不過,如此多的軟件來源雖然為Android用戶提供了方便,但因?yàn)槠洳煌能浖踩珮?biāo)準(zhǔn)也給用戶帶來了一定的安全隱患[1]。Android軟件不需要安全機(jī)構(gòu)的認(rèn)證也可上線使用,軟件開發(fā)者僅靠簽名與其開發(fā)軟件建立信任關(guān)系,而且Android軟件被反編譯進(jìn)行修改的成功率比較大,這也無疑增加了Android惡意軟件的生存空間。此外黑客們攻擊Android操作系統(tǒng)所獲取的收益遠(yuǎn)大于攻擊其他操作系統(tǒng),這也是惡意軟件瘋狂增長的一大誘因[2]。層出不窮的惡意軟件和脆弱的操作系統(tǒng)對用戶的隱私信息和設(shè)備的正常使用造成了極大的威脅[3]。惡意軟件不僅會盜取隱私數(shù)據(jù),還會濫用系統(tǒng)資源,擾亂設(shè)備的正常使用。而且如果帶有惡意軟件的智能手機(jī)接進(jìn)了一個機(jī)構(gòu)的網(wǎng)絡(luò)中,那么該機(jī)構(gòu)其他設(shè)備的系統(tǒng)和數(shù)據(jù)都會受到很大的威脅[4]。根據(jù)CISCO的一份報告[5]顯示,大約99%的手機(jī)惡意軟件都是運(yùn)行在Android平臺中。因此,在當(dāng)前設(shè)計出一種高效的Android惡意軟件檢測方案是很有必要的。
對于Android惡意軟件檢測方案的研究越來越被重視。文獻(xiàn)[6]中實(shí)現(xiàn)了使用啟發(fā)式過濾器來檢測新的Android惡意軟件,同時通過Android軟件所獲取的權(quán)限來審核其是否為惡意軟件。文獻(xiàn)[7]提出通過對Android軟件所獲取的敏感權(quán)限進(jìn)行語義檢索以及分析其所獲取權(quán)限之間的聯(lián)系來判斷其是否為惡意軟件。文獻(xiàn)[8]通過總結(jié)Android惡意軟件所獲取的權(quán)限提出了一種以所需權(quán)限為依據(jù)的檢測方法。文獻(xiàn)[9]中設(shè)計了一種靜態(tài)檢測工具,此檢測工具通過對應(yīng)用程序AndroidManifest.xml文件中數(shù)據(jù)流傳輸是否符合安全規(guī)則的分析來判斷其是否為惡意軟件。文獻(xiàn)[10]中提出的方法基于應(yīng)用程序中的權(quán)限計算了程序的威脅系數(shù),并發(fā)現(xiàn)樸素貝葉斯算法能夠在基于威脅系數(shù)的應(yīng)用程序分類方法中得到最優(yōu)結(jié)果。文獻(xiàn)[11]提出了DroidSIFT系統(tǒng),該系統(tǒng)首先對API調(diào)用的關(guān)聯(lián)關(guān)系進(jìn)行建模,然后比較所得到的關(guān)聯(lián)關(guān)系圖,最后使用樸素貝葉斯算法進(jìn)行分類判斷。上述方案對Android惡意軟件起到了一定的檢測作用,但是這些方案都存在著檢測準(zhǔn)確性差或者檢測效率低等方面的問題。
針對上述問題,在本文中作者通過分析Android惡意軟件的實(shí)現(xiàn)原理,基于云安全架構(gòu)提出一種靜態(tài)檢測方案,該方案借鑒云安全架構(gòu)來構(gòu)建檢測系統(tǒng)并設(shè)計異常檢測算法,使得Android惡意軟件的靜態(tài)檢測工作更加高效、準(zhǔn)確。
文章第一部分對目前安全惡意軟件檢測方案的研究進(jìn)行了比較分析,第二部分對云安全技術(shù)、分類學(xué)習(xí)算法等相關(guān)技術(shù)進(jìn)行了介紹與對比,第三部分在分析了Android惡意軟件的實(shí)質(zhì)后進(jìn)行了基于云安全架構(gòu)的整體方案設(shè)計,第四部分對客戶端系統(tǒng)進(jìn)行了設(shè)計,其主要功能模塊是APK文件信息收集和評估結(jié)果顯示,第五部分對云端服務(wù)器系統(tǒng)進(jìn)行了設(shè)計,其主要功能模塊為簽名比對、APK文件反編譯、源碼的靜態(tài)分析和結(jié)果的評估,所運(yùn)用的技術(shù)主要是Android反編譯技術(shù)和機(jī)器學(xué)習(xí)分類算法,第六部分對方案進(jìn)行了實(shí)驗(yàn)評估,最后總結(jié)了方案的優(yōu)勢。
云安全技術(shù)是先進(jìn)的云計算技術(shù)的整合,作為云計算技術(shù)中的重要分支在安全領(lǐng)域中的應(yīng)用卓有成效[12]。在云安全技術(shù)中,客戶端的請求將根據(jù)服務(wù)器端相應(yīng)的安全策略進(jìn)行處理,處理結(jié)果直接反饋給客戶端。此外,服務(wù)器端的安全策略會根據(jù)客戶端定期獲取惡意軟件的最新信息而進(jìn)行更新。
Android惡意軟件檢測方案主要分為動態(tài)檢測和靜態(tài)檢測兩種[13]。動態(tài)檢測部署在手機(jī)上實(shí)時運(yùn)行進(jìn)行檢測,會消耗一定的內(nèi)存和電量,而且動態(tài)檢測的作用主要是對惡意行為發(fā)生后進(jìn)行檢測和攔截,無法完全地消除惡意行為帶來的安全隱患。在本文中所設(shè)計的Android惡意軟件檢測方案采用了靜態(tài)檢測的思路,靜態(tài)檢測主要作用于Android程序安裝之前,通過對程序進(jìn)行源碼級的分析來檢測該程序是為惡意軟件,從而優(yōu)質(zhì)快速的減少程序的惡意行為,保證了用戶信息的相對安全。
分類學(xué)習(xí)算法是一種對大數(shù)據(jù)進(jìn)行處理的技術(shù),目前被廣泛運(yùn)用與計算機(jī)相關(guān)的各個領(lǐng)域中[14]。分類學(xué)習(xí)算法主要包括分類器訓(xùn)練和分類器實(shí)施兩部分。在分類器訓(xùn)練階段中,首先需要準(zhǔn)備一個包含大量已知類別APK文件的訓(xùn)練集,接著通過對每個APK文件進(jìn)行分析來獲取該文件的向量模型,然后利用這些文件的向量模型和對應(yīng)的類別標(biāo)記生成所需要的分類器。在分類器實(shí)施階段中,選擇一個非訓(xùn)練集中的APK文件來進(jìn)行測試,首先獲取該APK文件的向量模型,然后使用分類器對此向量模型進(jìn)行分類,便可以得到該APK文件的分類結(jié)果。
Android惡意軟件的實(shí)質(zhì)就是利用一些涉及到用戶敏感信息的API進(jìn)行特殊的排列組合來完成惡意行為[15]。例如,abortBroadcast()的功能是用來中斷廣播,它與用來發(fā)送短信息的sendTextMessage()相結(jié)合,會實(shí)現(xiàn)屏蔽短信息并轉(zhuǎn)發(fā)的功能。在Android應(yīng)用程序的開發(fā)中,如果應(yīng)用程序中要調(diào)用一個API來實(shí)現(xiàn)一些功能,則需要在AndroidManifest.xml配置文件中聲明與該API所對應(yīng)的系統(tǒng)權(quán)限。而Android系統(tǒng)采用的是靜態(tài)管理的權(quán)限控制機(jī)制,無法有效地對安裝后的應(yīng)用程序進(jìn)行權(quán)限管理,這無疑增加了惡意軟件的生存能力。所以,分析Android應(yīng)用程序的AndroidManifest.xml配置文件,通過其中的敏感權(quán)限定位敏感API,然后分析敏感API的排列組合是否具有惡意行為,可以判斷出該應(yīng)用程序是否為惡意軟件。
隨著科學(xué)技術(shù)的日益成熟,手機(jī)平臺的安全軟件也得到了快速發(fā)展,純粹的Android惡意程序也隨之減少,但是那些通過編譯普通應(yīng)用程序?qū)阂獯a嵌入被破解編譯的普通應(yīng)用程序中從而通過安全軟件檢測以實(shí)現(xiàn)惡意功能的惡意程序則與日俱增,所以說,被修改過的Android程序通常情況下更有可能是惡意程序,而判斷一個Android應(yīng)用程序是否被修改的依據(jù)就是判斷其簽名文件是否被修改。Android程序的三個簽名文件,MANIFEST.MF、CERT.SF和CERT.RSA,保存著該程序中各個文件的加密信息。每一個應(yīng)用程序安裝包中的簽名文件都是唯一的,被修改后的應(yīng)用程序安裝包中的簽名文件無法再與原應(yīng)用程序中的簽名文件保持一致。所以,通過對簽名文件信息的匹配,可以判斷出該應(yīng)用程序是否被修改過。
圖1 檢測方案結(jié)構(gòu)
在本文中所設(shè)計的檢測方案借鑒于云安全架構(gòu),分為客戶端和服務(wù)器端兩部分??蛻舳瞬渴鹪谘b有Android系統(tǒng)的移動終端上,服務(wù)器系統(tǒng)部署在云端的服務(wù)器上??蛻舳说闹饕δ苁撬鸭脩羲惭b的APK文件的相關(guān)信息,將APK文件上傳到云端服務(wù)器上,接收云端服務(wù)器的反饋信息并顯示給用戶,向服務(wù)器發(fā)送客戶端上的黑白名單,接收服務(wù)器返回的黑白名單并更新。服務(wù)器系統(tǒng)的主要功能是接收客戶端所上傳的APK文件,對APK文件進(jìn)行反編譯和靜態(tài)分析,對該文件的簽名信息進(jìn)行比對,收集檢測結(jié)果并反饋給客戶端,收集客戶端發(fā)送的黑白名單并將黑白名單進(jìn)行整合處理后共享給各個客戶端。負(fù)責(zé)客戶端與云端信息傳輸?shù)木W(wǎng)絡(luò)通信模塊在客戶端和服務(wù)器系統(tǒng)中都有嵌入,該模塊通過現(xiàn)有web技術(shù)來實(shí)現(xiàn),本文將不再詳細(xì)解說。
圖2 檢測步驟
檢測方案的主要工作步驟如下:
1)客戶端確定所要進(jìn)行檢測的APK文件,收集該文件的名稱、版本和下載來源信息,然后將APK文件和所獲取的相關(guān)信息發(fā)送給服務(wù)器端。
2)服務(wù)器系統(tǒng)接收到客戶端發(fā)送來的信息后,將該APK文件進(jìn)行解壓縮和反編譯,然后根據(jù)官方市場中相同的APK文件對該文件的簽名信息進(jìn)行比對。
3)服務(wù)器系統(tǒng)根據(jù)反編譯所得到的配置文件分析該軟件所用到的敏感權(quán)限,并通過其對敏感API進(jìn)行定位,然后提取出敏感API的排列組合信息。
4)服務(wù)器系統(tǒng)將所得到的敏感API的排列組合信息,使用所設(shè)計的異常檢測算法將其與從官方市場中獲取的相同APP進(jìn)行對比處理,判斷其是否具有異常情況。
5)服務(wù)器系統(tǒng)將簽名比對的結(jié)果和排列組合信息的處理結(jié)果進(jìn)行整合評估,判斷該軟件是否為惡意軟件,將其加入到黑白名單并反饋到客戶端,由客戶端顯示給用戶。
Android操作系統(tǒng)的移動終端設(shè)備是客戶端系統(tǒng)的主要部署環(huán)境,主要功能模塊是APK文件信息收集和評估結(jié)果顯示。
APK文件信息收集主要作用是收集APK文件的名稱、版本和下載來源等相關(guān)信息,這些信息收集完畢后會和APK文件一同發(fā)送到云端的服務(wù)器系統(tǒng)中。
黑白名單機(jī)制的主要作用是在Android手機(jī)上完成惡意軟件的安裝攔截功能,并且與服務(wù)器端進(jìn)行信息交互,手機(jī)本地的黑白名單與云端服務(wù)器進(jìn)行實(shí)時同步,同時接受云端服務(wù)器將黑白名單信息進(jìn)行實(shí)時共享以及更新。
云端服務(wù)器系統(tǒng)生成評估結(jié)果并將評估結(jié)果反饋給客戶端,接到反饋的客戶端會將評估結(jié)果傳輸?shù)揭苿咏K端,從而以視圖的形式展示該軟件的檢測信息給用戶。
本文檢測方案的最重要組成部分就是云端服務(wù)器系統(tǒng),其主要功能模塊為簽名比對、APK文件反編譯、源碼的靜態(tài)分析和結(jié)果的評估,所運(yùn)用的技術(shù)主要是Android反編譯技術(shù)和機(jī)器學(xué)習(xí)分類算法。在對APK文件進(jìn)行檢測之前,服務(wù)器系統(tǒng)會根據(jù)該文件的名稱、版本號和下載來源信息來確定該軟件是否在黑白名單中,若已經(jīng)檢測過則直接向客戶端反饋信息,若沒有進(jìn)行過檢測則對其進(jìn)行檢測工作。其檢測流程如圖3所示[17]。
圖3 服務(wù)器檢測流程
APK文件經(jīng)過解壓縮后就會得到保存有簽名信息的文件夾,該文件夾下存放著CERT.RSA、CERT.SF和MANIFEST.MF三個簽名文件,對這些簽名文件中的信息進(jìn)行提取后就可進(jìn)行簽名信息的比對工作。簽名比對的工作步驟如下:
1)將所要進(jìn)行檢測的APK文件進(jìn)行解壓縮得到其簽名文件,并對簽名文件中的簽名信息進(jìn)行提取。
2)根據(jù)客戶端所上傳的APK文件的相關(guān)信息,在Android官方市場中找到并下載相對應(yīng)的軟件,并對其進(jìn)行解壓縮和簽名信息的提取。
3)對兩次獲得的簽名信息進(jìn)行匹配,若簽名信息相同則說明該軟件未被修改,若簽名信息不同則說明該軟件被修改的可能性極大。簽名檢測使用的算法和API信息比對檢測都使用所設(shè)計的異常檢測算法,算法偽代碼如表1所示。
4)將匹配結(jié)果發(fā)送到服務(wù)器的評估模塊中用來進(jìn)行最后的結(jié)果評估。
APK文件的反編譯就是應(yīng)用Android的反編譯技術(shù),所需要的工具為APKTool、dex2jar和jd-gui這三種工具。APK文件反編譯后,該軟件中擁有權(quán)限信息的AndroidManifest.xml文件和能夠閱讀該軟件Java源代碼的jar文件將會被反編譯者得到。APK文件反編譯的工作步驟如下:
1)將目標(biāo)軟件的APK文件復(fù)制到APKTool工具的根目錄下,使用反編譯指令apktool.bat d test.apk test得到該程序的AndroidManifest.xml配置文件。
2)將目標(biāo)軟件的APK文件解壓縮,得到其classes.dex文件。將該文件復(fù)制到dex2jar工具的根目錄下,使用反編譯指令dex2jar.bat classes.dex得到對應(yīng)的classes_dex2jar.jar文件。然后使用jd-gui工具打開classes_dex2jar.jar文件,查看該程序的Java源代碼。
根據(jù)APK文件反編譯的結(jié)果來對該軟件進(jìn)行源碼級別的靜態(tài)分析。AndroidManifest.xml中文件可以得到該軟件中所調(diào)用的權(quán)限信息,能夠用來定位敏感API。深度研發(fā)的jar文件功能十分強(qiáng)大,可以直接用于部署和封裝庫,也可以直接使用到組件以及插件程序中,并且能夠被大型編譯器和Java虛擬機(jī)直接操作,能夠從中提取出所有的Java字節(jié)信息和內(nèi)容。在該功能模塊中還會用到機(jī)器學(xué)習(xí)分類算法來對所提取到的敏感API信息進(jìn)行分類處理。源碼靜態(tài)分析的工作步驟如下:
1)通過AndroidManifest.xml文件中敏感權(quán)限的信息對源碼中的敏感API進(jìn)行定位。
2)找到敏感API的位置后,使用基于學(xué)習(xí)分類的異常檢測算法首先提取敏感API的排列組合信息并生成向量模型,然后通過預(yù)生成的分類器對所生成的向量模型進(jìn)行分類處理得到分類結(jié)果。異常檢測算法的偽代碼如表1所示。
表1 本地學(xué)習(xí)算法
表2 異常檢測算法
3)將所得到的分類結(jié)果發(fā)送到服務(wù)器的評估模塊中來進(jìn)行最后的結(jié)果評估。
結(jié)果評估是根據(jù)簽名比對和源碼的靜態(tài)分析兩個模塊所發(fā)送的結(jié)果來評估該軟件的安全性。評估規(guī)則如下:
1)若簽名信息一致,不存在惡意行為,則該軟件安全;
2)若簽名信息一致,存在惡意行為,則該軟件為惡意軟件;
3)若簽名信息不一致,不存在惡意行為,則該軟件存在安全風(fēng)險;
4)若簽名信息不一致,存在惡意行為,則該軟件為經(jīng)過篡改的惡意軟件。
最后的評估結(jié)果由服務(wù)器端發(fā)送到客戶端并顯示給客戶。
針對本文中所設(shè)計的靜態(tài)檢測方案,我們收集了1143個惡意軟件樣本和2937個正常應(yīng)用程序樣本來對該方案進(jìn)行評估,驗(yàn)證其檢測準(zhǔn)確度和檢測效率。另外我們也選擇了一些常見的安全軟件使用同樣的惡意樣本來進(jìn)行比較。
規(guī)則1)為評估實(shí)驗(yàn)中計算檢測準(zhǔn)確度的公式,TP為正確判斷出的惡意樣本數(shù),TN為正確判斷出正常樣本的數(shù)量,F(xiàn)P為沒有判斷成功的惡意樣本數(shù)量,F(xiàn)N為沒有判斷成功的正常樣本數(shù)量。各個檢測系統(tǒng)的檢測準(zhǔn)確度結(jié)果如表3所示。
表3 系統(tǒng)檢測準(zhǔn)確度
從表1中可以看出,針對我們收集的檢測樣本所進(jìn)行的準(zhǔn)確度評估實(shí)驗(yàn)中,我們所設(shè)計的惡意程序靜態(tài)檢測方案的檢測準(zhǔn)確度要優(yōu)于百度、金山和360的安全軟件。不過除了檢測準(zhǔn)確度之外,我們還應(yīng)該考慮單個檢測流程所產(chǎn)生的時間損耗,各個檢測系統(tǒng)的檢測時間如表4所示。
表4 系統(tǒng)檢測時間損耗
從表4中可以看出,我們所設(shè)計的檢測系統(tǒng)在檢測流程上花費(fèi)的時間最多,我們經(jīng)過分析后發(fā)現(xiàn)該問題產(chǎn)生的原因主要是APK從客戶端傳輸?shù)皆贫说木W(wǎng)絡(luò)時間損耗以及部署在云端服務(wù)器的性能劣勢。關(guān)于如何提高檢測效率,減少檢測花費(fèi)的時間是我們今后研究工作的一個主要方向。
本文設(shè)計了一種基于云安全架構(gòu)的Android惡意軟件靜態(tài)檢測方案,該方案具有以下優(yōu)勢:
1)本方案的設(shè)計立足于云端服務(wù)器,使用功能完備的服務(wù)器處理大量復(fù)雜的操作過程,從而極大地減輕移動設(shè)備終端的使用率,并且提高了檢測效率。
2)本方案中設(shè)計了基于分類學(xué)習(xí)的異常檢測算法,用來對所提取的向量模型進(jìn)行分類檢測處理,可以很大地提高靜態(tài)檢測工作的準(zhǔn)確率。
本方案同樣具備不足之處,首先缺乏足夠數(shù)量的惡意軟件樣本來進(jìn)行分類器訓(xùn)練,這會影響分類器的準(zhǔn)確性;而且本方案所花費(fèi)的檢測時間雖然相對較少,但是距離理想的標(biāo)準(zhǔn)還有一定的差距,更加系統(tǒng)化地實(shí)現(xiàn)該檢測方案,精簡檢測步驟,減少檢測花費(fèi)的時間也將是進(jìn)一步研究工作的主體。
參考文獻(xiàn):
[1]2015年中國手機(jī)安全狀況報告.360互聯(lián)網(wǎng)安全中心[EB/OL].2016-03-20.http://zt.#/1101061855.php?dtid=1101061451&did=1101205565.
[2]Mylonas A,Theoharidou M,Gritzalis D.Assessing privacy risks in Android: a user-centric approach[J].Lecture Notes in Computer Science,2014,8418:21-37.
[3]楊歡.協(xié)議漏洞挖掘及Android平臺惡意應(yīng)用檢測技術(shù)研究[D].西安電子科技大學(xué),2014.
[4]楊歡,張玉清,胡予濮,等.基于多類特征的Android應(yīng)用惡意行為檢測系統(tǒng)[J].計算機(jī)學(xué)報,2014,37(1):15-27.
[5]CISCO. CISCO 2015 annual security report [EB/OL].2015.
[6]Zhou Y, Wang Z, Zhou W, et al. Hey, you, get off my market:Detecting malicious apps in official and alternative Android markets[A].In Proceedings of the 19th Annual Network&Distributed System Security Symposium[C].2012:1-13.
[7]Gianazza A, Maggi F, Fattori A, et al. Puppetdroid: a user-centric ui exerciser for automatic dynamic analysis of similar android applications[J].Eprint Arxiv,2014:1-12.
[8]Feizollah A,Anuar N, Salleh R, et al. Comparative study of k-means and mini batch k-means clustering algorithms in android malware detection using network traffic analysis[A].International Symposium on Biometrics and Security Technologies[C].2014:198-202.
[9]Sanz B, Santos I, Ugarte-Pedrero X, et al. Anomaly detection using string analysis for android malware detection[A].International Joint Conference SOCO’13-CISIS’13-ICEUTE’13[C].2014:469-478.
【】【】
[10]Yerima SY, Sezer S,McWilliams G.Analysis of bayesian classification based approaches for android malware detection[J].Iet Information Security,2014,8(1):25-36.
[11]Zhang M,Duan Y,Yin H,et al.Semantics-aware Android malware classification using weighted contextual API dependency graphs[A].ACM Sigsac Conference on Computer & Communications Security[C].2014:1105-1116.
[12]Cai M, Hou Q-S, Jing F,et al.Research of cloud security communication firewall based on Android platform[A].ICCSEE-13[C].2013.
[13]彭國軍,李晶雯,孫潤康,等.Android惡意軟件檢測研究與進(jìn)展[J]. 武漢大學(xué)學(xué)報(理學(xué)版),2015,61(1):21-33.
[14]Feizollah A, Anuar N, Salleh R,et al. A review on feature selection in mobile malware detection[J].Digital Investigation,2015,13:22-37.
[15]侯勤勝,曹天杰.安卓惡意軟件的分析與檢測[J].河南科技大學(xué)學(xué)報(自然科學(xué)版),2015,36(5):52-56.
[16]Karim O-E,Xiaokui S,Danfeng Y,et al.Profiling user-trigger dependence for Android malware detection[J].Computer &Security,2015(49):255-273.
[17]候勤勝,曹天杰,陳秀清.基于網(wǎng)絡(luò)行為的Android惡意軟件檢測方案[J].安徽大學(xué)學(xué)報(自然科學(xué)版),2016,40(5):32-36.