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