尹南南 中國人民公安大學(xué)
隨著安卓設(shè)備和應(yīng)用程序數(shù)量的不斷增加,許多安卓移動用戶從中受益,與此同時,涉及安卓設(shè)備的安全與隱私問題日益凸顯,成為移動用戶和利益相關(guān)者關(guān)注的焦點。越來越多的用戶通過購物、銀行、社交等熱門應(yīng)用程序?qū)€人數(shù)據(jù)存儲在移動設(shè)備中,因此,越來越多的攻擊者將注意力轉(zhuǎn)移到了移動應(yīng)用上,這使得安卓惡意軟件成為安全領(lǐng)域最重要的安全威脅之一[1]。
實際上,大多數(shù)的解決方案都聚焦在安卓市場的服務(wù)器端,但當一個新的安卓惡意軟件家族被報道時,并不是所有的安卓市場都能在合理的時間內(nèi)做出反應(yīng)。目前通用的分析流程是通過分析應(yīng)用中的惡意行為,根據(jù)生成的特征構(gòu)建檢測模型對整個應(yīng)用進行檢測。由于現(xiàn)實中的安卓應(yīng)用數(shù)量非常龐大,僅第三方安卓應(yīng)用商店里的數(shù)量就超過300萬個,要對這么多應(yīng)用進行完整的檢測是一項非常耗時的任務(wù)。此外,來自非官方市場的應(yīng)用程序,其安全性是不可預(yù)測和不可控制的,在設(shè)備上安裝此類軟件更容易受到攻擊。
傳統(tǒng)基于服務(wù)器端的檢測需要把APK安裝包解包,然后將應(yīng)用上傳到服務(wù)器上,非常耗時耗力,特別是對于占用空間較大的應(yīng)用來說更是如此;其次在因特網(wǎng)上傳的過程并不安全,例如攻擊者能夠利用上傳期間修改惡意軟件,返回一個良性結(jié)果從而騙過檢測,致使用戶安裝惡意軟件。傳統(tǒng)基于服務(wù)器端的檢測方法很難移植部署到安卓設(shè)備端,基于移動端的安卓惡意軟件檢測則很好地解決了這一問題?;谝苿佣说陌沧繍阂廛浖z測提高準確性的同時也具有部署的便捷性和現(xiàn)實性。隨著大數(shù)據(jù)以及現(xiàn)有的5G技術(shù)和互聯(lián)網(wǎng)的快速發(fā)展,再加上終端設(shè)備計算能力的提高,這種移動端檢測有望成為主流檢測方法。
當然基于移動端的安卓惡意軟件檢測也存在不足,主要是對于安卓終端設(shè)備尤其是物聯(lián)網(wǎng)終端設(shè)備而言,檢測系統(tǒng)的安裝會占用空間并且消耗運行資源,如果檢測系統(tǒng)過于依賴終端設(shè)備的性能則會影響其正常運行。例如在某些物聯(lián)網(wǎng)終端設(shè)備上,如果安裝計算量大且占用空間大的應(yīng)用,將會不可避免地影響應(yīng)用的正常功能使用,因此檢測系統(tǒng)應(yīng)該盡可能地壓縮占用空間、降低消耗運行資源。
現(xiàn)有的安全機制主要分為三類,即應(yīng)用市場、安卓操作系統(tǒng)平臺和實際的移動設(shè)備端,因此在移動設(shè)備端上進行安卓惡意軟件檢測作為惡意軟件檢測體系最后一道防線是亟需的,也是必要的。
本文主要對移動端的惡意應(yīng)用檢測方法和數(shù)據(jù)集進行研究介紹,提出并分析幾種移動端安卓惡意檢測的方法,主要包括基于簽名的檢測、基于元數(shù)據(jù)的檢測、基于機器學(xué)習(xí)的惡意軟件檢測和基于深度學(xué)習(xí)的惡意軟件檢測。
目前常見的惡意軟件檢測方法在移動平臺上很難直接部署使用。本文基于移動端的設(shè)備特征和安卓惡意軟件的特點,通過分析研究,提出以下幾種可行方法:
基于簽名的惡意軟件檢測是最早應(yīng)用于檢測的一種方法。在安卓系統(tǒng)中,應(yīng)用擁有獨有的數(shù)字簽名作為唯一標識,該方法在檢測系統(tǒng)中構(gòu)建惡意軟件的唯一簽名,通過簽名與已知的惡意軟件的數(shù)字簽名進行匹配來檢測是否為惡意軟件?;诤灻臋z測能夠收集、提取和分析安卓應(yīng)用程序文件的簽名,它使用程序代碼和類作為簽名進行檢測,基于惡意樣本庫來實現(xiàn)簽名匹配。此方法需要及時地對惡意樣本庫進行更新補充,無法檢測未知的惡意軟件,并且隨著軟件科學(xué)技術(shù)的發(fā)展,軟件包的一些細微改變,例如利用重打包技術(shù)就可能產(chǎn)生一個新的惡意軟件,可以很容易繞過基于簽名的檢測[2]。
元數(shù)據(jù)即與安卓應(yīng)用程序本身代碼無關(guān)的額外描述信息。關(guān)于應(yīng)用的下載量、功能描述、類別信息以及相關(guān)的協(xié)議信息等都可以稱作元數(shù)據(jù)??梢岳迷獢?shù)據(jù)信息從一個較新穎的視角設(shè)計相應(yīng)的檢測方法,該方法既可以作為一種獨立檢測方法單獨檢測,也可以作為其他檢測方法的一個補充,從而更好地提升檢測效果。
例如如果一個僅有天氣預(yù)報功能的應(yīng)用,在其元信息中對其功能描述應(yīng)該也只是預(yù)報某地天氣,在運行中調(diào)用相應(yīng)的API函數(shù)獲取位置信息則可以認為是正常的API調(diào)用,但如果此類應(yīng)用調(diào)用別的函數(shù)則可能會被當做異常應(yīng)用。如果描述信息和程序?qū)嶋H功能相差太大甚至毫不相干,那么理論上此類程序很大幾率是惡意程序。因此可根據(jù)描述信息即元信息與軟件行為進行結(jié)合,在各個類別中挖掘異常應(yīng)用程序,進而可將異常應(yīng)用分為強異常、弱異常和非異常,分別就這三種類型進行不同的處理。但是元信息往往是一線開發(fā)人員編寫,受主觀因素影響較大,并且每個人的想法和表達能力不盡相同,檢測結(jié)果可能會和實際真實結(jié)果存在較大的偏差,因此應(yīng)該把該方法作為其他檢測方法的一種參考和補充。
安卓系統(tǒng)應(yīng)用程序是由Activity、Service(服務(wù))、Broadcast Receiver(廣播接收器)以及Content Provider(內(nèi)容提供者)四類組件類型構(gòu)成,這些組件在安卓應(yīng)用程序的功能中發(fā)揮著重要作用?;跈C器學(xué)習(xí)的惡意軟件檢測方法基本原理是通過程序分析等技術(shù)提取不同的特征描述,作為待分析樣本,然后每一個樣本均用一個固定維度向量表示,最后借助于現(xiàn)有的機器學(xué)習(xí)算法對已知標簽的樣本進行訓(xùn)練并構(gòu)建分類器,從而能夠?qū)ξ粗獦颖具M行預(yù)測判斷。目前廣泛使用的算法有支持向量機、隨機森林等[3]。
1. 靜態(tài)特征和動態(tài)特征檢測
靜態(tài)特征是指固有的、一般不會輕易變化的特征。對于安卓應(yīng)用程序來說,APK文件的內(nèi)容一般認為是不會輕易發(fā)生變化的。APK文件有各種特征,如權(quán)限、代碼、網(wǎng)絡(luò)地址、字符串和硬件組件等。利用靜態(tài)特征構(gòu)建安卓惡意軟件檢測系統(tǒng),往往是通過構(gòu)建一個靜態(tài)分析工具來提取一些敏感特征,然后在大數(shù)據(jù)集和標記良好的數(shù)據(jù)集上進行實驗。
總體而言,利用靜態(tài)特征實現(xiàn)對安卓惡意軟件的檢測分類具有比較明顯的效果,但由于受到安全策略的限制,利用靜態(tài)特征分析尚存在一些不足,動態(tài)分析方法則能夠?qū)@些不足進行彌補。動態(tài)特征是在程序運行過程中會發(fā)生變化的特征,在程序運行過程中,應(yīng)用程序與操作系統(tǒng)或網(wǎng)絡(luò)連接相互連接和交互的行為都可認為是動態(tài)特征,目前常用的動態(tài)特征是網(wǎng)絡(luò)流量和系統(tǒng)調(diào)用[4]。應(yīng)用程序運行都要通過讀取、寫入和打開等系統(tǒng)調(diào)用向操作系統(tǒng)請求所需的資源和服務(wù)。應(yīng)用程序通過連接到網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),如果是惡意應(yīng)用,會通過一系列不正常的系統(tǒng)調(diào)用將隱私數(shù)據(jù)泄露出去。因此系統(tǒng)調(diào)用和網(wǎng)絡(luò)流量是檢測惡意軟件的方法中常用的兩個動態(tài)特征。
2. 混合特征檢測
混合特征分析是動態(tài)和靜態(tài)特征共同作為特征分析依據(jù),混合特征現(xiàn)在已經(jīng)被廣泛應(yīng)用于惡意軟件的特征檢測,該方法既能克服僅用靜態(tài)特征方式的缺點,又能利用動態(tài)特征的優(yōu)點,同時也不需要巨大的流量分析及動態(tài)特征檢測和提取?;旌咸卣鞣治龅脑u價依據(jù)是標記良好的數(shù)據(jù)集,它基于靜態(tài)和動態(tài)相結(jié)合的特征提取,使用惡意評分和機器學(xué)習(xí)技術(shù)來確定未知的安卓應(yīng)用程序是否為惡意應(yīng)用。
神經(jīng)網(wǎng)絡(luò)是一種機器學(xué)習(xí)計算模型,依賴于大量的神經(jīng)單元,高度密集的神經(jīng)元通過軸突相互連接。人工神經(jīng)元網(wǎng)絡(luò)通常由多層組成,每一層都有許多人工神經(jīng)元。第一層是輸入層,最后一層是輸出層,其余的層稱為隱藏層,神經(jīng)網(wǎng)絡(luò)由多個隱藏層組成,層次越多,神經(jīng)網(wǎng)絡(luò)越深。傳統(tǒng)的機器學(xué)習(xí)方法受限于從原始數(shù)據(jù)中手工生成特征,利用深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)能分析惡意應(yīng)用程序并提取相關(guān)特征,并且可以從原始數(shù)據(jù)中自動學(xué)習(xí)特征來執(zhí)行檢測任務(wù)[5]。
使用深度卷積神經(jīng)網(wǎng)絡(luò)的安卓惡意軟件檢測基于對一個可分解程序的原始操作碼序列的靜態(tài)分析,將惡意軟件的特征從原始操作碼序列中自動學(xué)習(xí),學(xué)習(xí)適當?shù)奶卣鞑⑦M行分類,只需要給出大量標記惡意軟件樣本的原始操作碼序列,就能同時學(xué)習(xí)進行特征提取和惡意軟件分類。系統(tǒng)的主要優(yōu)點是不需要手工設(shè)計的惡意軟件功能,并且可以在移動設(shè)備的GPU上運行即可以將模型部署到移動終端設(shè)備上[6]。
安卓惡意軟件檢測離不開有效惡意樣本數(shù)據(jù)集的支撐,惡意檢測的數(shù)據(jù)集是測試算法可靠性和準確性的關(guān)鍵。由于惡意軟件攻擊方式多種多樣,不同的數(shù)據(jù)集對于檢測系統(tǒng)的效果驗證不盡相同,數(shù)據(jù)集不理想會導(dǎo)致系統(tǒng)達不到期望效果,比如使用小樣本數(shù)據(jù)集只需要一個較小的惡意家族樣本就可以實現(xiàn)系統(tǒng)較高的準確性;再如有的數(shù)據(jù)集不包含惡意家族信息,無法用于惡意家族識別。在移動設(shè)備端實現(xiàn)安卓惡意軟件檢測并沒有固有的、標準的樣本數(shù)據(jù)集,現(xiàn)有的有限樣本集有時候會導(dǎo)致系統(tǒng)達不到效果目標,并且不符合自身的系統(tǒng)要求,因此選取多種數(shù)據(jù)集對于構(gòu)建效果優(yōu)秀的檢測系統(tǒng)至關(guān)重要,并且為了實現(xiàn)個性化需求研究人員可以根據(jù)自己的實際需求自行收集編寫數(shù)據(jù)樣本集。
常用的惡意樣本集主要有以下幾類來源:一類是惡意樣本共享網(wǎng)站,典型的如Contagio與VirusShare;另一類是具有家族信息的常用數(shù)據(jù)集,包括Genome數(shù)據(jù)集、Drebin數(shù)據(jù)集、FalDroid數(shù)據(jù)集、DroidBench數(shù)據(jù)集、AMD數(shù)據(jù)集以及RmvDroid數(shù)據(jù)集。
?
近年來,隨著移動端設(shè)備的計算性能不斷提高,物聯(lián)網(wǎng)發(fā)展迅猛,智慧小區(qū)、智慧門禁、智慧物流等依托物聯(lián)網(wǎng)設(shè)備的科技逐漸流行,隨之而來的是各種各樣的安全風(fēng)險問題,倘若還依賴于過去的手段,不僅效率低、操作繁瑣,還做不到實時檢測。對于公安技術(shù)部門來說,能夠及時對此類案件進行發(fā)現(xiàn)和取證的需求是非常迫切的,例如在物聯(lián)網(wǎng)設(shè)備中,最容易出現(xiàn)的是入侵和攻擊,極容易造成隱私和數(shù)據(jù)泄露,基于移動終端進行檢測會實時報告和阻止這種入侵和攻擊,并且將攻擊行為和方式進行記錄,方便今后對攻擊方法的研究和對檢測技術(shù)進行針對性改進。因此基于移動端的檢測對于當今科技信息化的公安工作至關(guān)重要。
隨著信息技術(shù)的發(fā)展,新型惡意軟件也在不斷升級和更新。針對新型惡意軟件需要提出有效的檢測方案并不斷改進,開發(fā)新的安卓檢測工具,以便能夠?qū)崟r檢測出潛在的惡意應(yīng)用。當前終端系統(tǒng)芯片的發(fā)展已經(jīng)能夠支持很多占用系統(tǒng)資源不太高的檢測系統(tǒng),同時針對云計算和大數(shù)據(jù)的發(fā)展,終端設(shè)備能夠很容易地訪問和使用云端上的數(shù)據(jù),在終端設(shè)備上進行安卓惡意軟件檢測將會是一種潮流和未來發(fā)展的方向。
人工智能自動分析技術(shù)將會大大推動檢測技術(shù)的提高,目前絕大多數(shù)檢測方法僅能夠?qū)崿F(xiàn)惡意軟件檢測的功能,檢測到之后無法進行后續(xù)的攔截和控制等操作。人工智能自動分析技術(shù)能根據(jù)應(yīng)用的行為,采取人工智能算法對其進行監(jiān)控并且分析,如果發(fā)現(xiàn)應(yīng)用存在惡意威脅,那么將采取相應(yīng)的警告和處理措施。現(xiàn)有的檢測方法基本上都是被動防御,在攻擊出現(xiàn)之后才制定出具體的解決方案,檢測方法始終落后于威脅攻擊。在未來的研究中,通過找出攻擊的根源實現(xiàn)在根源上檢測控制惡意攻擊,化主動為被動,預(yù)防為先,是未來探索的一個新方向。
惡意軟件的快速增長給移動智能終端設(shè)備帶來了巨大的威脅,安卓系統(tǒng)作為目前惡意軟件的主要攻擊目標之一,其安全問題已經(jīng)得到越來越多的關(guān)注。目前,針對服務(wù)器端已經(jīng)提出了大量的惡意軟件檢測方法,并已經(jīng)形成了一些相對成熟的惡意軟件檢測工具與系統(tǒng),但是針對安卓終端設(shè)備,比較完善的檢測工具和系統(tǒng)還處在發(fā)展階段,有待進一步成熟和完善,下一步將繼續(xù)進行這方面的研究。