樊郁徽,徐 寧
(淮南師范學院計算機與信息工程系,安徽 淮南 232038)
Andriod智能手機在給人們生活帶來便利的同時,也出現了許多安全方面的問題.國家互聯網應急中心在2012年發現了162 981個移動互聯網惡意樣本程序,較2011年增長了25倍,其中有82.5﹪是針對Andriod平臺的[1].這些惡意程序不僅影響到用戶智能手機的正常使用,而且還存在惡意扣費、信息竊取及遠程控制等安全威脅,給智能手機用戶帶來損失.據網秦科技2013年上半年的報告稱,惡意扣費類惡意軟件通過短信等途徑訂購SP業務進行惡意扣費,每天給中國手機用戶造成450萬元的話費損失;而遠程控制類惡意軟件通過接受服務器指令,聯網下載軟件并強行推送到用戶手機,在一天時間內的獲利額度可達780萬元.因此,針對智能手機的惡意軟件的檢測與防范已成為網絡運營商和網絡安全部分急需解決的重要課題.
對于手機惡意軟件的研究,國內外的一些專家和學者都開展過相關的研究工作,并取得了一定的成果,如在 M.Miettinen 和 P.Halonen[2]的文章中對移動智能設備中的惡意軟件的檢測進行了分析,并指出面臨的問題和不足.Enck等人則關注惡意軟件泄露個人隱私的問題,并提出了相應的檢測方案[3].柏林工業大學(Technische University Berlin)的 Collin Mulliner和Aubrey-DerrickSchmidt等也在智能手機的惡意軟件分析方面做出了很多研究工作[4-5].Abhijit Bose等人的論文提出使用SVM機器學習的方式進行智能手機的異常檢測,并建立了相關檢測模型[6].
目前,針對手機惡意軟件的研究雖然已經取得了一些研究成果,但所采取的方法主要還是將原來計算機平臺上的技術在手機平臺上進行延伸.歸納起來,現有的手機平臺惡意軟件的研究可大致分為兩個方面:一是研究手機惡意軟件包括移動僵尸網絡對手機用戶、電信網絡和互聯網的攻擊方式和安全威脅;二是對基于傳統僵尸網絡設計技術的移動僵尸網絡設計的研究,研究內容包括移動僵尸網絡架構、傳播方式、命令與控制網絡和通信算法等.
Andriod平臺是Google公司在Linux 2.6平臺上開發的,它由兩部分組成:Linux和Java,并采用了分層式的架構設計,分別是Linux Kernel、Libraries和 Andriod Runtime、Application Framework、Applications,如圖1 所示.

圖1 Andriod系統結構圖
Andriod應用程序主要通過Java語言開發,需要在Dalvik VM上運行,并由Andriod的運行環境提供核心Java核心函數庫,每個Andriod應用程序都必須在Dalvik VM中運行.
每一個Andriod應用程序在運行時都會作為一個進程出現在系統中,每個進程之間相互隔離,每個Andriod應用程序中都存在一個AndriodManifest.xml文件,該文件中包含了該應用程序運行所需的權限.如果該應用程序需要使用AndriodManifest.xml文件中規定的其他權限的話,則會被系統阻止或終止運行,應用程序在安裝時也會將所需的權限向用戶提示.作為Andriod系統的安全防護措施,對應用程序超出限定的行為雖然可以進行控制,但并不能阻止應用程序利用已獲得的權限發生惡意行為,對于絕大多數的用戶來說,在安裝應用程序時并不會去仔細核對應用程序申請的訪問權限.
Andriod系統采取的另外一項安全措施是APK應用程序的文件簽名.Andriod應用程序在發布時可以通過Debug Key工具進行編譯并簽名,通過簽名機制可以保護應用程序的同源性.當一個被惡意修改過的應用程序再次在用戶的Andriod系統中安裝時,由于惡意修改過的應用程序無法匹配原簽名,系統將不允許該應用程序的安裝或升級.文件簽名制度只能保護已安裝的應用程序不會被惡意修改,對新安裝的應用程序或者本身就包含惡意行為的原有的應用程序來說沒有任何的防護作用.
Andriod應用程序在Google Play平臺上發布時,需要開發者注冊賬號,并將發布的應用程序通過Google Play Developer Distribution Agreement(DDA)和Google Play Developer Program Policies(DPP)的檢查,對違反協議和規定的應用程序會暫停發布,并通知相關開發者,對于惡意軟件,Google Play Store可以通過遠程方式卸載用戶設備中的該軟件.雖然Google Play采取了一些措施對Andriod應用程序進行檢查,但 Google Play Store并不像Apple App Store和Windows Phone Marketplace那樣對上架的應用程序進行嚴格的審核,只有通過審核的應用程序才能允許上架發布.在世界的各個地方還存在著大量的Andriod在線應用商店,同樣在發布未經審核的應用程序,這也是導致Andriod惡意軟件大量傳播的重要原因.而“刷機包”、社交網絡等也為惡意軟件的傳播提供了更多、更方便的途徑.
現在,用于Andriod惡意軟件的檢測技術主要分為2類:靜態行為檢測方法和動態行為檢測方法.
2.2.1 靜態行為檢測方法
靜態行為檢測方法主要通過對軟件的指令代碼進行分析、比較,檢測其中是否包含有導致惡意行為的API函數調用,采用這種方式進行檢測首先要獲取到Andriod應用軟件的Java源代碼,然后通過分析其中是否包含對敏感函數的調用,并分析是否存在安全隱患,最終得出該軟件是否為惡意軟件的結果.靜態行為檢測方法需要通過逆向工程的方式對應用程序進行反編譯,獲得源代碼,在分析過程中往往會受到軟件加密及隱式函數(虛函數等)的影響,往往無法得出正確的結論.
2.2.2 動態行為檢測方法
動態行為檢測方法在程序運行的過程中執行,監控系統中的通信、短信息、網絡接口及相關隱式信息的訪問情況,并進行記錄,從而獲得應用程序的行為模式.動態行為檢測方法可以很好解決應用程序代碼因加密、混淆無法通過靜態方式檢測的問題.動態行為檢測方法主要通過使用沙箱、虛擬機等形式來構建運行環境,并模擬應用程序的執行,從而獲得應用程序的行為模式.這對檢測的實時性要求較高.
在對Andriod惡意軟件進行檢測的時候,無論采用靜態行為檢測方法還是動態行為檢測方法,都必須要先獲取到Andriod應用程序的行為表現方式,包括正常應用程序和惡意軟件,然后再對其進行機器學習,獲得惡意軟件的行為特征,從而區分惡意軟件與正常的應用程序.
本文從Andriod應用程序的函數調用進行分析,對惡意軟件的系統函數調用進行分析,獲得惡意軟件的典型文件特征,并作為檢測的依據.
首先采集50個惡意軟件樣本,其中包括木馬程序、間諜程序、蠕蟲病毒等,對其進行反編譯后,分析其APK源代碼的系統函數調用.在反編譯過程中,利用DEX2JAR將classes.dex文件轉換成為Java代碼,轉換后的classex.dex文件中包含了該APK的實現代碼.從中獲得該程序的resources文件和class文件,再使用Java Decompiler將class文件轉換成可讀取的格式,而二進制的AndriodManifest.XML文件通過AXMLPrinter2 進行轉換[7].
所有轉換完成后,就可以對該軟件代碼進行分析,通過對AndriodManifest.XML文件進行分析,取得該程序所有的API調用,50個惡意軟件的行為匯總見表1所示.
在表1中對惡意軟件的行為進行了分析.在進行這些行為的同時,惡意軟件還收集用戶的隱私信息,見表2.
通過對惡意軟件的行為進行分析,可以發現惡意軟件的主要表現形式有以下5點:(1)惡意扣費;(2)遠程控制;(3)隱私竊取;(4)資費消耗;(5)流氓行為.
以上5種惡意行為所調用的系統相關權限見表3.

表1 樣本的惡意行為統計
上文中通過對樣本程序進行分析,獲得了Andriod惡意軟件的主要表現形式,見表3所示.利用分析的結果可以為Andriod惡意軟件的檢測與防范提供相應依據.
雖然Andriod系統中對應用程序的權限有著較為嚴格的設定,對每一個應用程序都采用進程隔離的方式來運行,每一個應用程序如果需要訪問該程序以外的數據和目錄都必須要在安裝時向系統提出申請,由用戶進行批準.但大多數用戶在安裝應用程序時往往并不會認真了解該應用程序申請的權限是否合理,因此并不能確保惡意軟件不會被正常安裝.
由于Andriod系統底層使用的是Linux的內核,并且會將手機中每個文件建立相關的訪問策略,保存在Linux內核的存儲空間中.由此,可以根據文件的重要程度去設定相關權限[8].權限設定見表4所示.

表2 隱私信息收集分類統計

表3 惡意行為對應的主要權限
上述方法可以從一定程度上能夠保護手機不會受到惡意軟件的侵害,并能有效保護手機數據不會被非法使用.但這種方式存在著訪問策略的制定過于粗放,往往在阻斷惡意軟件的訪問時也會影響到正常軟件的使用.
行為檢測的方法是現在Andriod惡意軟件檢測中所采用的常見方式.無論是靜態行為檢測還是動態行為檢測,都是通過分析惡意軟件的特征行為,并在此基礎上進行機器學習,從而建立相關規則,用以區分正常軟件和惡意軟件.由于Andriod應用軟件的應用范圍在不斷擴大,應用形式也在不斷更新,因此行為檢測的方法要想始終保持檢測的準確度,就必須不斷更新,以適應新的環境.現在通常的做法是將行為檢測與黑、白名單相結合,這樣既降低檢測的復雜程度,又提高了檢測效率.

表4 文件權限設置
Andriod平臺由于其開放性特點,給應用軟件的開發與推廣提供了便利條件,成為迅速占領市場的重要因素.也正是由于其開放性,使得Andriod惡意軟件的泛濫程度遠遠大于其他平臺.隨著手機性能的不斷提高,惡意行為所造成的危害也在不斷提高,對Andriod惡意軟件的檢測與防治工作所面臨的挑戰也變得越來越大.Andriod平臺自身的安全性問題和軟件的審核機制如果不能在后續的發展中得到改善,Andriod平臺安全問題也將會成為另外一個Windows.
[1]國家計算機網絡應急技術處理協調中心.2012年中國互聯網網絡安全報告[R].北京:人民郵電出版社,2013.
[2]Miettinen M,Halonen P.Host-based intrusion detection for advanced mobile devices[J].Information Networking and Applications,2006,20(4):72-76.
[3]Enck W,Gilbert P,Chun B,et al.TaintDroid:An Information-flow Tracking System for Realtime Privacy Monitoring on Smartphones[C]//Proc.of OSDI'10.Vancouver,Canada,2010.
[4]Schmidt A D.Smartphone malware evolution revisited:Android next target? [C].In Proceedings of the 4th International Conference on Malicious and Unwanted Software(malware).Montreal,QC,2009:1-7.
[5]Schmidt A D.Detection of Smartphone Maiware[D].Universitatsbibliothek,2011.
[6]Bose A,Hu X,Shin K G,et al.Behavioral detection of malware on mobile handsets[C].Proceedings of the 6th international conference on Mobile systems,applications and services.ACM,2008:225-238.
[7]Sharma K,Dand T,Oh T,et al.Malware analysis for Android operating[C].The 8th Annual Symposium on Information Assurance(ASIA'13).2013:31.
[8]劉昌平,范明鈺,王光衛,等.Android手機的輕量級訪問控制[J].計算機應用研究,2010,27(7):2611-2613.