南秦博等
摘 要: 隨著Android系統(tǒng)的不斷發(fā)展,人們對該平臺的安全問題也更為關注。針對Android惡意應用程序存在的安全隱患,提出一種基于事件的惡意程序檢測技術(shù)。系統(tǒng)采用C/S結(jié)構(gòu),通過手機客戶端獲取目標分析程序的系統(tǒng)調(diào)用序列,提交服務器端分析處理,分析服務器預先運行大量的已知惡意程序和良性程序作為訓練樣本,利用支持向量機學習算法對調(diào)用序列流進行聚類分類學習,檢測出與樣本類似特征的惡意程序。實驗測試表明,該技術(shù)對惡意程序檢出率高,誤報率低,為Android惡意程序檢測系統(tǒng)的設計提供有價值的參考。
關鍵詞: Android; 安全問題; 惡意程序檢測; 支持向量機
中圖分類號: TN929.5 文獻標識碼: A 文章編號: 1004?373X(2015)12?0047?04
Research of malicious program detection technology for Android system
NAN Qin?bo1 , MU De?jun 1, HOU Yan?yan2
0 引 言
Android是Google于2007年11月發(fā)布的基于Linux內(nèi)核的開源手機操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應用程序(移動電話工作所需的全部軟件),而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙[1]。目前,Android已經(jīng)經(jīng)歷了數(shù)個版本的更新,市面上采用該系統(tǒng)的移動設備數(shù)量也在飛速增長,它已經(jīng)是一個強大而成熟的系統(tǒng),從最初的智能手機領域逐漸進入教育、醫(yī)療、汽車、軍事等重要領域。
隨著Android系統(tǒng)的廣泛應用,安全問題的重要性呈現(xiàn)逐步上升趨勢,已成為制約其發(fā)展的重要因素。從2010年8月發(fā)現(xiàn)的首個Android木馬程序“Trojan?SMS.Android –OS.FakePlayer”,到后來的“Geinimi”、“X臥底”病毒木馬等惡意程序的流行,更加劇了人們的擔憂。因此,要讓用戶放心地使用Android系統(tǒng),就必須全面分析并著手解決Android系統(tǒng)所面臨的各種安全問題。本文提出一種分析Android程序運行觸發(fā)事件的系統(tǒng)調(diào)用序列流,并采用支持向量機學習算法對調(diào)用序列流進行分類的惡意程序檢測方法,可以有效解決此類安全問題。
1 Android系統(tǒng)安全模型
1.1 Android系統(tǒng)架構(gòu)
Android系統(tǒng)采用分層架構(gòu),共分為4層,從高層到低層分別是應用程序?qū)樱ˋpplications)、應用程序框架層(Application Framework)、系統(tǒng)運行庫層(Libraries & Android Runtime)和Linux內(nèi)核層(Linux kernel),Android系統(tǒng)架構(gòu)如圖1所示。
1.2 Android系統(tǒng)安全機制
Android系統(tǒng)擁有多種安全機制,除繼承Linux系統(tǒng)的安全機制之外,同時還有針對性地增加了多重安全設計,Android系統(tǒng)架構(gòu)不同層上相關安全機制如表1所示。
2 Android系統(tǒng)安全隱患分析
雖然Android系統(tǒng)已經(jīng)擁有眾多良好的安全機制,但也存在著一些安全隱患。目前主要存在以下3個方面的安全隱患:
(1) 基于硬件的安全隱患。Android系統(tǒng)運行于硬件設備之上,由于硬件的通用性和擁有系統(tǒng)最高權(quán)限,且在使用中難以升級和維護,硬件缺陷存在的安全隱患危害很大。另外,移動設備中的SD卡和SIM卡均能脫離移動設備而單獨使用,也存在隱私泄露的風險。
(2) 基于Linux內(nèi)核的安全隱患。移動設備往往會禁用一些內(nèi)核選項用以提高系統(tǒng)有限資源的利用,其中也包括一些安全配置選項,Linux每年都有近百個漏洞被CVE收錄,黑客利用這些內(nèi)核漏洞,獲得系統(tǒng)最高權(quán)限,造成用戶隱私信息泄露。目前,可以通過系統(tǒng)定制SEAndroid(Security?Enhanced Android)對所有的文件、目錄類資源的訪問進行控制,強制性地限制信息的共享和流動,減輕Linux內(nèi)核的安全隱患[2]。
(3) 基于應用程序的安全隱患。應用程序包括Android系統(tǒng)自帶和用戶自行安裝的應用程序。由于用戶自行安裝應用程序來源多樣,在安裝時,用戶無法辨識惡意程序和正常程序,而往往選擇信任該程序,忽略相關的安全提示,授予其所申明的所有權(quán)限,從而大大弱化Android系統(tǒng)核心安全機制——權(quán)限控制。惡意程序非法獲得特權(quán),利用Linux內(nèi)核漏洞提升權(quán)限,造成隱私信息泄露,非法鏈接網(wǎng)絡消耗資源,被惡意扣費等眾多威脅到用戶安全的隱患。
3 基于惡意程序檢測的安全技術(shù)研究
惡意程序是目前Android系統(tǒng)最大的安全威脅[3]。對惡意程序的檢測比較常用技術(shù)有代碼語義分析法和特征碼分析法。這兩種常用的檢測方法被各大反病毒軟件廠商廣泛使用,他們通過不斷更新惡意程序特征數(shù)據(jù)庫來提高檢出率,但都需要消耗大量的系統(tǒng)資源來進行運算,而移動設備資源和硬件處理能力有限,手機使用時在一定程度上會影響用戶體驗。本文通過對Android系統(tǒng)安全模型和安全隱患的深入分析和研究,以低資源消耗為目標,利用Android系統(tǒng)后臺監(jiān)聽技術(shù)特點,獲取目標程序的系統(tǒng)調(diào)用序列與特定觸發(fā)事件時調(diào)用序列進行比較分析,研究基于事件的惡意程序檢測方法。
3.1 系統(tǒng)設計
程序的動作最終都以系統(tǒng)調(diào)用的形式實現(xiàn),使用的系統(tǒng)調(diào)用反映了程序的行為特征,可以作為判斷程序是否惡意的依據(jù)?;谑录膼阂獬绦驒z測方法使用Android系統(tǒng)內(nèi)核提供的接口,獲取目標分析程序的系統(tǒng)調(diào)用序列,獲取系統(tǒng)調(diào)用流,使用系統(tǒng)調(diào)用流作為惡意行為匹配的數(shù)據(jù)。
為減輕Android系統(tǒng)資源的消耗,采用C/S結(jié)構(gòu),客戶端只進行系統(tǒng)監(jiān)測、程序運行信息捕獲,將復雜的分析工作交由服務器端處理,讓分析服務器進行惡意程序檢測判斷。該檢測方法的系統(tǒng)運行框架如圖2所示。
在服務器端維護一個惡意程序調(diào)用序列信息存儲庫。惡意行為的實現(xiàn)會使用大量的系統(tǒng)調(diào)用,良性程序也會包含一部分系統(tǒng)調(diào)用,兩種程序的系統(tǒng)調(diào)用最終會形成一個完整的調(diào)用序列。但由于實現(xiàn)目的的不同,惡意程序和良性程序在系統(tǒng)調(diào)用序列上會有不同的特征表現(xiàn)。在服務器端,分析服務器預先運行大量的已知惡意程序和良性程序,收集必要的調(diào)用序列作為訓練樣本,利用機器學習算法對這些調(diào)用序列進行聚類分類學習,導入APK程序信息存儲庫,供系統(tǒng)對客戶端目標程序進行快速判別。
3.2 數(shù)據(jù)采集
Android系統(tǒng)有200多種系統(tǒng)調(diào)用事件,檢測方法需要確定哪些事件可能是惡意行為造成的,在此定義觸發(fā)事件列表,記錄的構(gòu)成包括:事件編號,可疑事件名稱,可疑事件的系統(tǒng)調(diào)用模糊序列等,如表2所示。再通過實驗對其進行不斷的校驗和修正。
表2 觸發(fā)事件列表
程序運行將產(chǎn)生大量的系統(tǒng)調(diào)用,系統(tǒng)調(diào)用以流的形式輸出,通過對系統(tǒng)調(diào)用流與可疑事件序列進行快速模糊對比,尋找可疑的事件。
3.3 數(shù)據(jù)分析
分析服務器要對惡意程序的系統(tǒng)調(diào)用流進行判斷,必須預先運行大量的已知惡意程序和良性程序,收集其調(diào)用序列作為訓練樣本,利用機器學習算法對這些調(diào)用序列進行聚類分類學習。
支持向量機(Support Vector Machines,SVM)是由Vapnik于1995年在統(tǒng)計學習理論基礎上提出的一種新的機器學習方法[4]。它以VC維理論和結(jié)構(gòu)風險最小化原則為基礎,其算法是一個凸二次優(yōu)化問題,能夠保證找到的極值解就是全局最優(yōu)解,在解決非線性及高維模式識別問題中表現(xiàn)出了許多特有的優(yōu)勢,非常適用于解決小樣本問題等。
由于支持向量機具有非常強的分類能力,因此利用支持向量機來作為分類器,進行惡意程序和良性程序的識別。基于支持向量機的惡意程序識別的一般流程如圖3所示。
(1) 特征的選擇及提取
特征選擇和提取是支持向量機模式識別系統(tǒng)的必要環(huán)節(jié),如果所選取的特征能夠比較全面反映類的本質(zhì)特征,那么分類器就比較容易設計;否則,分類器設計的難度就增加。
構(gòu)建基于支持向量機的惡意程序識別模型,首先需要確定訓練樣本。特征提取對于惡意程序的識別效果有著重要的影響,因此這是一個難點和關鍵問題。本文將程序運行時產(chǎn)生的系統(tǒng)調(diào)用流作為檢測的原始信號,使用前文數(shù)據(jù)采集中觸發(fā)事件對應的模糊序列作為特征信號,對程序運行的特征進行提取。
(2) SVM模式識別
SVM模式識別就是根據(jù)特征信號、信息存儲庫中的標準模式和某種判別準則,由提前訓練好的支持向量機模型(支持向量機分類器)自動識別,確定是否存在惡意程序。
SVM的最優(yōu)分類函數(shù)為:
[f(x)=sgni=1nαiyiK(xi,x)+b] (1)
式中:[αi≥0]為拉格朗日乘子;[K(xi,x)]為核函數(shù),可以構(gòu)造實現(xiàn)輸入空間不同類型的非線性決策面的學習機器。核函數(shù)[K(xi,x)]的形式可以是:[K(xi,x)=xTix](線性核);[K(xi,x)=exp-x-xi2σ2](徑向基核)。
3.4 測試分析
已有研究者收集了1 260個程序樣本[5],從其中選取40個樣本作為惡意程序,從Android市場下載60個良性程序,將這100個程序作為分析服務器的訓練樣本,選取SVM的核函數(shù)為RBF核函數(shù),其寬度參數(shù)為2.3,規(guī)則化參數(shù)為800,有相似系統(tǒng)調(diào)用流的程序?qū)鄢梢活悾?00個訓練樣本惡意程序和良性程序的分類結(jié)果如圖4所示。實驗另外選取20個惡意程序和30個良性程序在MOTO ME525手機上安裝進行測試,分析服務器對程序的系統(tǒng)調(diào)用流與前面100個訓練樣本的分類結(jié)果進行比對判別。經(jīng)過測試:20個惡意程序,其中有19個判別正確,1個判別錯誤;30個良性程序,其中有29個判別正確,1個被錯判為惡意程序。
圖4 分類結(jié)果示意
從實驗結(jié)果來看,提取程序的系統(tǒng)調(diào)用流,使用SVM對系統(tǒng)調(diào)用流進行聚類學習,對于解決小樣本的惡意程序識別具有特別好的識別效果,誤判問題可以通過大量樣本學習來改善,該檢測方法對惡意程序具有良好的檢測能力。
4 結(jié) 語
本文通過對Android系統(tǒng)安全模型和安全隱患的深入研究分析,提出了基于事件的惡意程序檢測方法,通過實驗驗證,該檢測方法對未知惡意程序具有良好的檢測能力。本文所采用C/S結(jié)構(gòu)設計,雖然減輕了Android客戶端的系統(tǒng)資源消耗,但檢測必須在服務器端進行,易受網(wǎng)絡速度限制,用戶等待檢測時間較長,隨著Android平臺硬件性能的大幅提升,在以后的檢測系統(tǒng)設計中,可將惡意程序檢測功能模塊運行在客戶端,適應各種類型用戶需求。
參考文獻
[1] Anon. What Is Android? [EB/OL]. [2012?03?20]. http:// www.cnblogs.com/activi.
[2] SHABTAI Asaf, FLEDEL Yuval, ELOVICI Yuval. Securing android?powered mobile devices using SELinux [J]. IEEE Security & Privacy, 2010, 8(3): 36?44.
[3] ENCK William, ONGTANG MacHigar, MCDANIEL Patrick Understanding android security [J]. IEEE Security & Privacy, 2009, 7(1): 50?57.
[4] VAPNIK V. N. Statistical learning theory [M]. New York: John Wiley, 1998.
[5] ZHOU Ya?jin, JIANG Xu?xian. Dissecting Android malware: characterization and evolution [C]// Proceedings of IEEE Symposium on Security and Privacy. Washington DC: IEEE Computer Society, 2012: 95?109.
[6] SHABTAI Asaf, FLEDEL Yuval, KANONOV Uri, et al. Googleandroid: A comprehensive security assessment [J]. IEEE Security & Privacy, 2010, 8(2): 35?44.
[7] 廖明華,鄭力明.Android安全機制分析與解決方案初探[J].科學技術(shù)與工程,2011(26):6350?6355.
[8] [美] DARCEY Lauren,CONDER Shane.Android應用開發(fā)入門經(jīng)典[M].袁國忠,譯.2版.北京:人民郵電出版社,2012.