摘 要: 從Android系統(tǒng)的系統(tǒng)框架入手,全面深入地分析了Android系統(tǒng)的安全機制與組成部分,進而得出Android面臨的安全隱患與攻擊行為。為增強Android的安全性,針對應(yīng)用程序級攻擊與內(nèi)核級攻擊行為,研究了XManDroid框架與基于logcat模式的內(nèi)核行為分析框架,檢測并阻止針對Android的惡意攻擊行為,有效地保護了Android系統(tǒng)的安全。
關(guān)鍵詞: Android OS; 安全機制; 特權(quán)提升攻擊; logcat
Android是一種源碼開放的操作系統(tǒng),為應(yīng)用開發(fā)者提供了更多的功能接口,任何人都可以書寫并發(fā)布自己的應(yīng)用程序,因此,這為惡意應(yīng)用程序提供了便利,增加了安全隱患。
鑒于目前Android系統(tǒng)的巨大發(fā)展?jié)摿Γ瑸樘岣咂浒踩捎眯?,針對Android的安全機制與安全缺陷進行研究,具有重要意義。
1 Android系統(tǒng)架構(gòu)與組件模型
1.1 Android系統(tǒng)架構(gòu)
Android平臺從架構(gòu)看,采用了分層的體系結(jié)構(gòu),自上到下依次是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層和Linux內(nèi)核層,如圖1所示。
(1)應(yīng)用程序?qū)?。Android的應(yīng)用程序?qū)又饕怯脩艚缑妫ㄏ到y(tǒng)捆綁的各種資源文件,如聯(lián)系人、電話、瀏覽器和第三方應(yīng)用程序等。
(2)應(yīng)用程序框架層。該層實際上是一個應(yīng)用程序的框架,為開發(fā)者提供API實現(xiàn)自己的程序。
(3)本地庫和Android運行環(huán)境。本地庫是以系統(tǒng)中間件的形式提供的,包含C/C++庫,供系統(tǒng)不同的組件調(diào)用,并為上層提供服務(wù);Android運行環(huán)境包括Android運行時的核心組件Dalvik虛擬機和基礎(chǔ)的Java類庫。
(4)Linux內(nèi)核層。Android使用Linux2.6作為操作系統(tǒng),Linux kernel提供包括存儲器管理、程序管理、驅(qū)動程序模型、能源管理等服務(wù)。
1.2 Android組件模型
Android應(yīng)用程序由Java編寫,運行在Dalvik虛擬機,使用單一的文件安裝,其文件擴展名為.apk。所有的Android應(yīng)用程序在其APK中都需要包含一個程序配置文件AndroidManifest.xml,告訴系統(tǒng)如何處理應(yīng)用程序中的頂層組件,包括Activities、Services、Content Providers、Broadcast Receivers。Activities是指獨立的、以用戶為中心的任務(wù)代碼,通常為用戶展示可視化界面;Service是運行在后臺的功能模塊,沒有可視化用戶界面;Content Provider是Android平臺應(yīng)用程序間數(shù)據(jù)共享的一種標(biāo)準(zhǔn)接口,將一些特定的應(yīng)用程序數(shù)據(jù)交給其他應(yīng)用程序使用;Broadcast Receiver是一個專注于接收廣播通知信息并做出對應(yīng)處理的組件。 各組件之間的關(guān)系如圖2所示。
2 Android安全機制
Android安全機制中既有傳統(tǒng)的Linux安全機制,又有Dalvik虛擬機的安全機制。同時,Google還設(shè)計了Android特有的安全機制。
(1)沙箱:Android系統(tǒng)是一個權(quán)限分離的操作系統(tǒng),每一個應(yīng)用程序都運行在屬于自己的進程中。一個應(yīng)用程序可以訪問它自己的文件或者明確地標(biāo)注為可讀/可寫/可執(zhí)行的其他應(yīng)用程序文件。這為每一個應(yīng)用程序提供一個沙箱,把它與其他應(yīng)用程序和系統(tǒng)隔離,從而有效地阻止了應(yīng)用程序?qū)ζ渌麘?yīng)用程序或者系統(tǒng)其他部分施加惡意影響。
(2)應(yīng)用程序簽名:每個應(yīng)用程序都必須由它的開發(fā)者使用一個合適的私人密鑰作為數(shù)字證書。數(shù)字證書是用來區(qū)分應(yīng)用程序作者的,不需要由數(shù)字證書權(quán)威機構(gòu)來發(fā)布。該證書包含在其APK文件中,在安裝時由開發(fā)商驗證簽名。
(3)權(quán)限機制:Android應(yīng)用程序的安全核心機制是權(quán)限機制,通過權(quán)限機制額外提供的細(xì)粒度安全功能,強制限制一個特定的進程可以執(zhí)行的具體操作,每個URI權(quán)限授予訪問特定的數(shù)據(jù)塊。要與其他應(yīng)用程序共享資源和數(shù)據(jù)時,應(yīng)用程序必須聲明它所需要的基本的沙箱所沒有提供的權(quán)限,應(yīng)用程序要求的權(quán)限都必須在AndroidManifest.xml文件中聲明。權(quán)限的申請只能在安裝時得到批準(zhǔn)或拒絕,在運行過程中不能申請其他權(quán)限。
(4)組件的可訪問性:應(yīng)用程序組件可以被分為公共的和私有的,一個公共的組件可以被其他的應(yīng)用程序訪問,然而它仍然要求檢查訪問的應(yīng)用程序是否具有要求的權(quán)限,才可以被應(yīng)用程序訪問。另一方面,一個私有的組件只能被包含它的應(yīng)用程序訪問[1]。
3 安全缺陷與威脅
Android系統(tǒng)的安全機制實現(xiàn)了系統(tǒng)的安全,但由于Android平臺的開源特性和本身存在的安全漏洞,針對Android系統(tǒng)的攻擊越來越多, 其面臨的安全問題主要包括惡意軟件、網(wǎng)絡(luò)攻擊和其他攻擊行為。
3.1 惡意軟件
針對Android平臺的惡意軟件主要包括病毒和木馬程序。Android平臺開源的特性和具有的安全漏洞使惡意軟件開發(fā)者通過植入惡意代碼等方式將目前市場上比較流行的App進行重新封裝,發(fā)布在第三方應(yīng)用市場,騙取用戶授予下載安裝時所需的權(quán)限,一旦成功便通過這些權(quán)限執(zhí)行一些特定行為[2],為攻擊者升級特權(quán),給用戶造成危害與損失。
3.2 網(wǎng)絡(luò)攻擊
這類攻擊主要是推出受攻擊的合法網(wǎng)站或者惡意網(wǎng)站。攻擊者首先入侵合法網(wǎng)站,然后在其中植入惡意代碼,從而生成指向惡意軟件服務(wù)器的鏈接,當(dāng)用戶訪問該網(wǎng)站時,瀏覽器就會在加載合法代碼的同時自動下載惡意軟件,或者對用戶的隱私及敏感信息進行泄露,從而對用戶造成損失[3]。
3.3 其他攻擊行為
目前,Android系統(tǒng)沒有提供內(nèi)置、默認(rèn)的加密功能,而是依賴隔離與權(quán)限模式來確保數(shù)據(jù)安全。因此,盜取手機SD卡就可能導(dǎo)致大量敏感數(shù)據(jù)丟失,或者是破壞和修改設(shè)備上的數(shù)據(jù)而不經(jīng)過所有者的許可,給用戶造成損失。
4 對Android安全問題的研究現(xiàn)狀
目前,對Android平臺的安全性要求越來越高,安全研究人員對其安全增強性的工作展開了多方面的研究,并已有很多實現(xiàn)成果。下面針對應(yīng)用程序級攻擊與內(nèi)核級攻擊行為,提出安全解決方案。
4.1 針對特權(quán)提升攻擊解決方案
近幾年,針對Android的一些安全框架已經(jīng)提出,Android應(yīng)用程序按所需的權(quán)限訪問系統(tǒng)資源或與其他應(yīng)用程序進行通信,如果沒有正確的權(quán)限,應(yīng)用程序是不能訪問特權(quán)資源的。在參考文獻[4]中提出了一個針對惡意應(yīng)用程序的Android平臺特權(quán)提升攻擊的解決方案XManDroid的設(shè)計與實施,擴展了Android的監(jiān)控機制。通過XManDroid維護系統(tǒng)狀態(tài),包含安裝的應(yīng)用程序及它們之間的通信鏈路,默認(rèn)的Android參考監(jiān)視器授予一個ICC調(diào)用時,XManDroid被調(diào)用,并驗證是否要求的ICC調(diào)用可能會被利用為提升攻擊,其體系結(jié)構(gòu)如圖3所示。
XManDroid的結(jié)構(gòu)擴展了Android應(yīng)用程序框架,同時加強了內(nèi)核級模塊,并由運行監(jiān)控、安裝申請、系統(tǒng)策略安裝3個模塊組成。運行監(jiān)控提供了XManDroid的核心功能,涉及組件的參考監(jiān)視器、DecisionEngine、系統(tǒng)視圖、系統(tǒng)策略與決定。安裝申請?zhí)岣逜ndroid應(yīng)用程序的安裝標(biāo)準(zhǔn),它涉及標(biāo)準(zhǔn)的Android組件PackageManager和新的SystemView組件。安裝之后,改變系統(tǒng)狀態(tài),擴展到PackageManager組件與SystemView的溝通。系統(tǒng)策略安裝提供了一種機制來更新到Android中間件以及涉及的PolicyInstaller、SystemPolicy和SystemView組件。此框架架構(gòu)與組件相互作用:IPC呼叫處理(步驟1-11),應(yīng)用程序安裝與否(步驟a-b),文件/套接口創(chuàng)建(步驟),文件/套接口讀/寫訪問(步驟i-iv),策略安裝(步驟I-III)。在測試中,利用惡意軟件通過傳遞的權(quán)限方法執(zhí)行對用戶隱私的攻擊,或獲得未經(jīng)授權(quán)的訪問受保護的系統(tǒng)接口,特意選取了近期出現(xiàn)的特權(quán)提升攻擊,所有的測試均在Nexus One開發(fā)平臺上測試運行,經(jīng)測試,所有的攻擊均被XManDroid偵破和阻止。
4.2 內(nèi)核行為分析解決方案
在參考文獻[5]中,提出一個基于內(nèi)核行為分析的Android惡意軟件檢測系統(tǒng),系統(tǒng)包括Android設(shè)備上的日志收集器和PC上的日志分析器。日志收集器記錄了應(yīng)用程序內(nèi)核層的活動,日志分析器匹配正則表達式描述的簽名活動,以檢測惡意活動。系統(tǒng)結(jié)構(gòu)如圖4所示,其中內(nèi)核水平的日志由操作系統(tǒng)產(chǎn)生,收集了發(fā)生在操作系統(tǒng)上的所有活動數(shù)據(jù)。這些數(shù)據(jù)大部分與惡意活動無關(guān),因此,本文只收集惡意軟件攻擊相關(guān)的感興趣的系統(tǒng)調(diào)用日志數(shù)據(jù)。采取附加的方法,從收集的日志數(shù)據(jù)中移除不感興趣的進程日志數(shù)據(jù)。為達到要求,首先要實現(xiàn)獲取感興趣進程的進程樹,這里用Android日志系統(tǒng)提供的收集系統(tǒng)調(diào)試輸出機制logcat來達到,產(chǎn)生的日志信息可以由命名為Android調(diào)試橋的調(diào)試支持工具通過logcat命令查看,找到感興趣應(yīng)用程序進程PID,同時使用輔助的關(guān)鍵字和有規(guī)則的表達式的方法產(chǎn)生簽名來進行惡意檢測,一個輔助的關(guān)鍵字是執(zhí)行程序系統(tǒng)調(diào)用名或系統(tǒng)文件路徑名。
這種方法適用于系統(tǒng)通過執(zhí)行目標(biāo)應(yīng)用程序檢測威脅,通過系統(tǒng)收集運行應(yīng)用程序時產(chǎn)生的系統(tǒng)調(diào)用事件并分析,生成感興趣的標(biāo)簽來檢測廣泛種類的威脅。實驗證明,基于內(nèi)核行為分析可以應(yīng)用于Android應(yīng)用程序的安全檢測。
4.3 其他解決方案
在參考文獻[6]中,Enck等提出一個安全框架TaintDroid,它可以檢測未經(jīng)授權(quán)的敏感數(shù)據(jù)的泄露。TaintDroid利用動態(tài)污點分析對污染數(shù)據(jù)跟蹤審查,通過此系統(tǒng)傳播并提醒用戶。TaintDroid主要解決數(shù)據(jù)流,利用隱蔽通道檢測泄露敏感信息的攻擊。參考文獻[7]介紹了細(xì)粒度的訪問控制模型,允許應(yīng)用程序保護自己不被濫用。它要求應(yīng)用程序開發(fā)人員添加安全特性到其應(yīng)用中并擴展基本的Android許可制度,通過允許系統(tǒng)執(zhí)行基于簽名、配置和上下文的安全決策擴展基本的Android許可制度,而安全決定無論是在安裝時還是在運行時均執(zhí)行。
Android系統(tǒng)為移動設(shè)備提供了一個開源應(yīng)用環(huán)境,隨著Android系統(tǒng)的日益推廣,越來越多的開發(fā)商開始關(guān)注其安全性能,對Android系統(tǒng)的安全性要求越來越高。在未來工作中,將通過具體案例分析和攻擊分類,對Android的安全機制進行設(shè)計改進,加強Android的安全架構(gòu)。相信隨著時間的推移和技術(shù)的進步,針對Android的安全威脅會越來越少。
參考文獻
[1] CHAN P P F,HUI L C K,YIU S M. A privilege escalation vulnerability checking system for Android applications[C].IEEE 13th International Conference on Commnication Technology,2011:681-684.
[2] 丁麗萍. Android操作系統(tǒng)的安全性分析[J].信息網(wǎng)絡(luò)安全,2012,12(3):28-29.
[3] 美麗安卓設(shè)備遭網(wǎng)絡(luò)攻擊比例超普通PC[OL].[2012-12-05](2013-05-15).http://news.itxinwen.com/it_industry/business_software/2012/1205/463481.html
[4] BUGIEL S,DAVI L,DMITRIENKO A,et al.XManDroid: a new Android evolution to mitigate privilege escalation attacks[C]. Technische Universat Darmstadt Center for Advanced Security Research Darmstadt,2011:4-6.
[5] ISOHARA T,TAKEMORI K, KUBOTA A. Kernel-based behavior analysis for Android malware detection[C]. IEEE International Conference on Computational Intelligence and Security,2011:1012-1014.
[6] ENCK W,GILBERT P,CHUN B,et al. TaintD roid:An information-flow tracking system for realtime privacy monitoring on Smartphones[C]. Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation,2010:1-5.
[7] ONGTANG M,MCLAUGHLIN S,ENCK W,et al.Semantically rich application-centric security in Android[C].IEEE Annual Computer Security Applications Conference,2009:344-348.