移動(dòng)智能終端安全課件:權(quán)限提升攻擊_第1頁(yè)
移動(dòng)智能終端安全課件:權(quán)限提升攻擊_第2頁(yè)
移動(dòng)智能終端安全課件:權(quán)限提升攻擊_第3頁(yè)
移動(dòng)智能終端安全課件:權(quán)限提升攻擊_第4頁(yè)
移動(dòng)智能終端安全課件:權(quán)限提升攻擊_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

權(quán)限提升攻擊9.1權(quán)限提升攻擊的分類9.2權(quán)限機(jī)制漏洞挖掘9.3權(quán)限提升攻擊實(shí)例小結(jié)

9.1權(quán)限提升攻擊的分類

Android操作系統(tǒng)是權(quán)限分離的系統(tǒng),即應(yīng)用程序如果需要使用涉及相關(guān)系統(tǒng)權(quán)限的功能,必須獲取相應(yīng)的系統(tǒng)權(quán)限。權(quán)限獲取后,程序在后臺(tái)對(duì)權(quán)限的調(diào)用就可能會(huì)涉及通信錄、短信、位置信息等各種隱私。Android系統(tǒng)同時(shí)有多個(gè)應(yīng)用在運(yùn)行,各個(gè)應(yīng)用也設(shè)置了對(duì)應(yīng)的訪問(wèn)權(quán)限,應(yīng)用之間也可以互相訪問(wèn),因此就會(huì)出現(xiàn)由于某個(gè)應(yīng)用權(quán)限擴(kuò)展導(dǎo)致的權(quán)限提升漏洞。

該漏洞的存在使得一部分沒(méi)有特定API訪問(wèn)權(quán)限的應(yīng)用可以通過(guò)對(duì)第三方應(yīng)用的訪問(wèn)間接實(shí)現(xiàn)某些超越自身權(quán)限的功能,這就是權(quán)限提升攻擊。權(quán)限提升攻擊具體分為混淆代理人攻擊和共謀攻擊,如圖9-1所示。圖9-1

Android權(quán)限提升攻擊分類

9.1.1混淆代理人攻擊

混淆代理人攻擊是指惡意程序利用其他程序的未保護(hù)接口間接獲得特權(quán)的功能,普遍存在于Android缺省程序(例如電話、鬧鐘、音樂(lè)和設(shè)置程序)及第三方程序中。一個(gè)計(jì)算機(jī)程序被惡意程序欺騙,以至于錯(cuò)誤地使用自身的權(quán)限來(lái)使惡意程序獲得特權(quán)功能,是一種特權(quán)擴(kuò)大的典型攻擊方式。

在此情況下,受攻擊者控制的應(yīng)用程序可以利用良性應(yīng)用程序中未受保護(hù)的接口進(jìn)行權(quán)限提升。

9.1.2共謀攻擊

共謀攻擊是應(yīng)用層權(quán)限提升攻擊的一種方式,指惡意程序可以通過(guò)共謀來(lái)合并權(quán)限從而執(zhí)行超出各自特權(quán)的動(dòng)作的行為。此情況下發(fā)起攻擊的應(yīng)用程序和被利用的應(yīng)用程序都是惡意的,它們通過(guò)共謀來(lái)獲取更大的權(quán)限。共謀攻擊在兩個(gè)應(yīng)用程序之間可以采用直接通信和間接通信兩種方式。對(duì)于直接通信來(lái)說(shuō),共謀攻擊建立起直接的ICC信道,或者通過(guò)socket連接;對(duì)于間接通信來(lái)說(shuō),共謀攻擊通過(guò)共享文件的方式或者通過(guò)一個(gè)中間的組件提供隱蔽信道(例如通過(guò)電量管理器)或顯式信道(例如通過(guò)用戶聯(lián)系人數(shù)據(jù)庫(kù))來(lái)完成應(yīng)用程序間的通信。

9.2權(quán)限機(jī)制漏洞挖掘

權(quán)限機(jī)制是操作系統(tǒng)的安全保護(hù)機(jī)制。為保護(hù)用戶免于遭受第三方代碼的威脅,最新的平臺(tái)通常采用的方式是對(duì)與應(yīng)用程序安全和隱私相關(guān)的API進(jìn)行訪問(wèn)控制,由用戶決定是否允許應(yīng)用程序訪問(wèn)該敏感資源。

權(quán)限機(jī)制可以分為安裝時(shí)期權(quán)限和實(shí)時(shí)權(quán)限兩種。實(shí)時(shí)權(quán)限要求用戶在應(yīng)用程序運(yùn)行時(shí)對(duì)應(yīng)用程序所需的訪問(wèn)請(qǐng)求進(jìn)行批準(zhǔn),在iOS操作系統(tǒng)中應(yīng)用廣泛。安裝時(shí)期權(quán)限要求開(kāi)發(fā)者預(yù)先聲明權(quán)限請(qǐng)求,使用戶可以在安裝時(shí)期對(duì)這些權(quán)限請(qǐng)求進(jìn)行授權(quán)。安裝時(shí)期權(quán)限是Android平臺(tái)所采用的重要安全機(jī)制。在Android系統(tǒng)中,不同開(kāi)發(fā)者開(kāi)發(fā)的Android應(yīng)用程序被分別分配唯一的用戶ID,使得任何一個(gè)應(yīng)用程序在默認(rèn)情況下都無(wú)法直接訪問(wèn)其他應(yīng)用程序。

訪問(wèn)其他應(yīng)用程序的操作包括讀寫用戶的私有數(shù)據(jù)、讀寫其他應(yīng)用程序的文件、進(jìn)行網(wǎng)絡(luò)訪問(wèn)或者喚醒設(shè)備等。權(quán)限機(jī)制是在組件間通信的基礎(chǔ)上,為限制不同組件間的隨意訪問(wèn)而建立的訪問(wèn)控制機(jī)制。

權(quán)限機(jī)制漏洞分析分為安裝時(shí)期權(quán)限機(jī)制漏洞分析和運(yùn)行時(shí)期權(quán)限機(jī)制漏洞分析。

9.2.1安裝時(shí)期權(quán)限機(jī)制漏洞分析

Android安裝時(shí)期的權(quán)限機(jī)制是指應(yīng)用程序在安裝時(shí)期將該程序需要使用的全部權(quán)限顯示給用戶,由用戶進(jìn)行授權(quán)工作。在安裝時(shí)期權(quán)限的設(shè)計(jì)中存在以下三個(gè)問(wèn)題:

(1)用戶如果希望安裝并使用該應(yīng)用程序的功能,就必須對(duì)應(yīng)用程序所申請(qǐng)的全部權(quán)限進(jìn)行授權(quán),如果拒絕,則應(yīng)用程序包安裝器將拒絕安裝該應(yīng)用。

(2)

Android權(quán)限機(jī)制在安裝時(shí)期確定,無(wú)法根據(jù)運(yùn)行時(shí)環(huán)境的不同動(dòng)態(tài)修改應(yīng)用程序訪問(wèn)資源的能力。例如用戶在某個(gè)秘密場(chǎng)合下,希望所有應(yīng)用程序的互聯(lián)網(wǎng)連接、錄音等權(quán)限都被禁止授予,因此,需要一個(gè)能根據(jù)上下文(例如位置、時(shí)間、溫度、噪聲等因素)來(lái)實(shí)施細(xì)粒度訪問(wèn)策略的訪問(wèn)控制系統(tǒng)。

(3)

Android已有權(quán)限機(jī)制缺少對(duì)已安裝應(yīng)用程序的保護(hù),這樣在權(quán)限機(jī)制設(shè)計(jì)上的疏忽容易使惡意程序利用已安裝應(yīng)用程序的權(quán)限完成自身權(quán)限的擴(kuò)大。

9.2.2運(yùn)行時(shí)期權(quán)限機(jī)制漏洞分析

Android在安裝時(shí)期完成對(duì)不同應(yīng)用程序的權(quán)限授權(quán),并在運(yùn)行期間對(duì)應(yīng)用程序發(fā)起的敏感API訪問(wèn)進(jìn)行訪問(wèn)控制。Android權(quán)限框架由Android中間件提供,包含一個(gè)對(duì)進(jìn)程間通信(Android系統(tǒng)中的組件間通信)實(shí)施強(qiáng)制訪問(wèn)控制的引用監(jiān)視器,安全敏感的API受到在安裝時(shí)期賦予的權(quán)限保護(hù)。引用監(jiān)視器側(cè)重于檢測(cè)哪些應(yīng)用直接引用了該敏感API,而無(wú)法檢測(cè)最終是哪個(gè)應(yīng)用程序應(yīng)用了該敏感API的功能,因此Android權(quán)限機(jī)制存在權(quán)限提升攻擊的缺陷。

Android權(quán)限提升攻擊是指一個(gè)擁有少量權(quán)限的應(yīng)用程序(沒(méi)有特權(quán)的調(diào)用者)允許訪問(wèn)擁有更多權(quán)限的應(yīng)用程序的組件(有特權(quán)的被調(diào)用者)。由于沒(méi)有授予相應(yīng)的權(quán)限API,調(diào)用者沒(méi)有權(quán)限去訪問(wèn)被調(diào)用者的位置等信息,但通過(guò)被調(diào)用者的組件,調(diào)用者不需要權(quán)限即可訪問(wèn)被調(diào)用者。如果被調(diào)用者擁有訪問(wèn)位置資源等權(quán)限,則調(diào)用者可通過(guò)與被調(diào)用者的交互達(dá)到訪問(wèn)位置等信息的目的。

9.3權(quán)限提升攻擊實(shí)例

9.3.1混淆代理人攻擊實(shí)例Android系統(tǒng)擁有位置信息服務(wù),包含GPS定位、WiFi定位、基站定位和AGPS定位四種方法。以下對(duì)Android位置信息服務(wù)的調(diào)用做具體分析,LocationManager為整個(gè)定位服務(wù)的入口類。在LocationManager.java(frameworks/base/location/java/android/location/)中可以看到,LocationManager類中所有功能的實(shí)現(xiàn)依賴于名為mService的字段,該字段的類型為ILocationManager。ILocationManager由LocationManagerService實(shí)現(xiàn)。

定位服務(wù)的真正實(shí)現(xiàn)類是LocationManagerService,該類位于frameworks/base/services/

java/com/android/server/LocationManagerService.java中。LocationManagerService.java的另一個(gè)作用是對(duì)申請(qǐng)使用位置信息的應(yīng)用進(jìn)行權(quán)限檢查。本實(shí)例的混淆代理人攻擊需要繞過(guò)的第一個(gè)訪問(wèn)控制便在此處。

事實(shí)上,在移動(dòng)設(shè)備中可真正用于定位服務(wù)的方法通常只有兩種:一種是通過(guò)GPS模塊,另一種是通過(guò)網(wǎng)絡(luò)。網(wǎng)絡(luò)定位通過(guò)代理方式來(lái)完成,但代理在運(yùn)行時(shí)可進(jìn)行動(dòng)態(tài)替換,具有一定的不確定性。相反,GPS模塊的定位實(shí)現(xiàn)是確定且可參考的。因此本實(shí)例通過(guò)GPS模塊來(lái)完成定位的實(shí)現(xiàn)類“GpsLocationProvider”(frameworks/base/services/java/com/

android/server/location/GpsLocationProvider.java)。

經(jīng)過(guò)分析可知,硬件檢測(cè)到位置更新后,最初調(diào)用的是GpsLocationProvider.cpp中的location_callback函數(shù),消息通知的流程如下:

(1)

location_callback函數(shù)中對(duì)應(yīng)的是調(diào)用GpsLocationProvider.java中的reportLocation方法。

(2)

GpsLocationProvider.java中的reportLocation方法調(diào)用ILocationManager中的reportLocation方法,再調(diào)用LocationManagerService中的reportLocation方法。

(3)??LocationManagerService中的reportLocation方法會(huì)對(duì)LocationWorkerHandler發(fā)送MESSAGE_

LOCATION_

CHANGED消息。該消息在LocationProviderHandler中的handleMessage方法中被處理。處理方法會(huì)調(diào)用LocationProviderInterface中的updateLocation方法。

(4)??GpsLocationProvider中的updateLocation方法會(huì)對(duì)ProviderHandler發(fā)送消息UPDATE_LOCATION,該消息被ProviderHandler中的handler方法處理,處理方式為調(diào)用handleUpdateLocation方法,handleUpdateLocation方法調(diào)用native_inject_location方法完成注入。

(5)?LocationManagerService中的handleLocationChangedLocked方法將最新的位置存放到mLastKnownLocation中。至此,便可以通過(guò)LocationManagerService中的getLastKnownLocation方法獲取到最近更新的位置信息了。

本實(shí)例編寫了nativeGpsTest以實(shí)現(xiàn)GpsLocationProvider.cpp的功能,并作為應(yīng)用程序的自帶原生庫(kù)安裝進(jìn)入手機(jī),該方法流程可簡(jiǎn)述如下:

(1)

nativeGpsTest使用dlopen函數(shù)調(diào)用libhardware.so中Hal層入口函數(shù)get_module_t以獲得gps.xxxx.so路徑并調(diào)用初始化接口。

(2)編寫的回調(diào)函數(shù)GpsCallback結(jié)構(gòu)體作為init函數(shù)的參數(shù),通過(guò)gps.xxxx.so調(diào)用Linux內(nèi)核層,設(shè)備驅(qū)動(dòng)打開(kāi)設(shè)備并啟動(dòng)數(shù)據(jù)接收線程。在獲得GPS數(shù)據(jù)后,該nativeGpsTest作為攻擊者開(kāi)發(fā)的程序通過(guò)gps.xxxx.so文件直接調(diào)用底層代碼,繞過(guò)中間層的檢驗(yàn)機(jī)制,獲得GPS數(shù)據(jù),并把所獲GPS數(shù)據(jù)返回給該程序,再返回至nativeGpsTest。

接下來(lái)描述攻擊的具體實(shí)現(xiàn)方案:為成功調(diào)用Android底層數(shù)據(jù),攻擊程序參照了GpsLocationProvider.cpp,結(jié)構(gòu)上與GpsLocationProvider.cpp源代碼完全相同,功能上也可以替代源代碼。

GpsLocationProvider.cpp源碼由兩部分組成,一部分是實(shí)現(xiàn)其功能的普通函數(shù),另一部分是回調(diào)函數(shù)。普通函數(shù)的編寫替換可以參照源碼,回調(diào)函數(shù)必須自行編寫并對(duì)源碼進(jìn)行替換?;卣{(diào)函數(shù)主要通過(guò)調(diào)用上層Java方法的方式來(lái)實(shí)現(xiàn)數(shù)據(jù)、命令等在兩層間的傳遞。由于本實(shí)例設(shè)計(jì)的攻擊直接穿過(guò)Framework層,所有的功能使用原生方法實(shí)現(xiàn),因此不需要向上層傳遞信息,即不需要調(diào)用上層Java方法,只需編寫空的回調(diào)函數(shù)即可。但create_thread_callback作為關(guān)鍵回調(diào)函數(shù)需要特殊處理,其主要功能是調(diào)用系統(tǒng)函數(shù)createJavaThread來(lái)創(chuàng)建線程,是整個(gè)GpsLocationProvider.cpp中唯一一個(gè)需要Java代碼來(lái)實(shí)現(xiàn)的功能,需要通過(guò)使用dlopen來(lái)調(diào)用createJavaThread函數(shù)。

在完成攻擊的具體實(shí)例之后,還要對(duì)攻擊效果進(jìn)行如下驗(yàn)證:本實(shí)例以Android4.1.2系統(tǒng)為例來(lái)說(shuō)明,方案將攻擊程序運(yùn)行在Android虛擬機(jī)上,然后利用eclipseEmulatorControl模擬生成GPS數(shù)據(jù),以此模擬現(xiàn)實(shí)的GPS數(shù)據(jù)接收。攻擊程序獲得GPS數(shù)據(jù)成功之后通過(guò)Log向控制臺(tái)輸出獲得的結(jié)果,并與模擬生成的GPS數(shù)據(jù)進(jìn)行比較。實(shí)驗(yàn)結(jié)果是編寫的攻擊程序在Android虛擬機(jī)上攻擊成功。

9.3.2共謀攻擊實(shí)例

假設(shè)某惡意應(yīng)用程序具有對(duì)麥克風(fēng)的訪問(wèn)權(quán)限,但沒(méi)有網(wǎng)絡(luò)連接和其他可能帶來(lái)風(fēng)險(xiǎn)的權(quán)限,由于該惡意應(yīng)用程序沒(méi)有其他的高級(jí)權(quán)限,如攔截電話等權(quán)限,因此需要獲取必要的信息來(lái)完成攻擊操作,例如利用被叫的電話號(hào)碼,通過(guò)分析電話錄音等為攻擊操作做準(zhǔn)備。

該惡意應(yīng)用程序的目的是從私人數(shù)據(jù)電話交談中提取出少量高價(jià)值的信息并將提取出的信息傳送給惡意攻擊者。達(dá)到這種目的需要兩個(gè)關(guān)鍵組件:上下文感知數(shù)據(jù)收集器(簡(jiǎn)稱收集器)和數(shù)據(jù)發(fā)送器(簡(jiǎn)稱發(fā)送器)。收集器監(jiān)視電話狀態(tài)并為有價(jià)值的電話信息做簡(jiǎn)短記錄,建立檔案數(shù)據(jù)庫(kù)。根據(jù)簡(jiǎn)短記錄提取出高價(jià)值信息發(fā)送給惡意攻擊者。由于該惡意應(yīng)用程序沒(méi)有直接訪問(wèn)互聯(lián)網(wǎng)的權(quán)限,所以需要通過(guò)另一個(gè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論