高華林+曹金璇+楊晶
摘要:Android串謀攻擊是指多個應用通過某種方式進行權限共享或通信,相互配合,協(xié)作完成惡意攻擊。由于其實現(xiàn)的方式是由多個應用互相配合,組成一個權限整體,因此容易繞過傳統(tǒng)的針對單一應用的權限檢測,隱蔽性較強。Google 應用商店以及其他App發(fā)布平臺沒有對應用權限進行有效的審計,具有串謀攻擊的應用可以被隨意上傳到App市場中,具有很大的潛在危害。該文論述了Android平臺上應用程序串謀攻擊的原理和實現(xiàn)方法,并提出了有效的檢測策略。
關鍵詞: Android; 權限; 串謀攻擊
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2016)27-0020-03
1 引言
Google公司發(fā)行的Android操作系統(tǒng)是目前最為廣泛使用的智能設備操作系統(tǒng),尤其在智能手機市場更是占據了主導地位。Android操作系統(tǒng)的開放性吸引了大批的開發(fā)者開發(fā)并發(fā)布他們的Android應用程序(App)。然而,Google商店及其他主要的App發(fā)布平臺并沒有對開發(fā)者上傳的App進行有效的權限審計,這造成攻擊者能夠發(fā)行隱藏惡意活動的應用。
目前,Android操作系統(tǒng)將應用權限的批準是由用戶決定的,即應用程序在安裝時或運行時(Android 6.0 版本以后)讓用戶選擇接受還是拒絕應用程序所申請的所有權限。然而,大部分用戶對應用程序所需要的權限并不了解,盲目的相信并接受權限申請,使得具有惡意目的的應用程序輕易獲取了所需的權限。授予應用過多的權限使得它能夠進行惡意活動,如泄露敏感信息,發(fā)送帶有惡意鏈接的短信,擾亂設備正常功能等等,給用戶造成嚴重的危害。
為了對應用程序的權限是否合理進行檢測,Enck[1]等人提出著名的Kirin方法,通過將應用所需的權限與一組預定義的安全策略規(guī)則進行比較,從而讓用戶知道該應用是否請求過多的權限而進行惡意活動。然而,Kirin只能對單一的應用進行檢查。如果同一個開發(fā)者開發(fā)了多個惡意應用,每個應用都能單獨通過檢測,然后通過權限共享或應用間通信的方式形成一個串謀真題,Kirin方法就不能夠有效將它們檢測出來。下面本文從Android基本的安全機制、應用程序串謀攻擊的原理以及串謀攻擊的檢測等方面進行論述。
2 Android串謀攻擊
2.1 Android安全機制
Android應用程序主要由四大組件組成:Activities(活動),Services(服務),Content providers(內容提供者)和Broadcaster receivers(廣播接受者)。Activities是應用中負責與用戶交互的組件,為應用提供可視化的用戶界面;Services組件沒有圖形界面,在后臺運行,一般不與用戶直接交互,而是為其他組件提供后臺服務或監(jiān)控其他組件的運行狀態(tài);Content providers是應用間共享數(shù)據提供一種標準的機制;Broadcaster receivers組件接收廣播消息,并讓應用對外部事件做出響應。當然,并不是所有的Android應用都必須包含這四個組件,可以只包含其中的一個或幾個。
Android是一種權限分離的操作系統(tǒng),每個應用都運行在一個叫Sandbox(沙箱)的獨立環(huán)境中,Sandbox實現(xiàn)了應用與系統(tǒng)及其他應用間的相互隔離。每個應用擁有唯一的身份ID和Dalvik虛擬機,它只能訪問自己或共享的文件,從而實現(xiàn)應用的安全隔離。Android安全機制要求所有的開發(fā)者使用所持有的證書和私鑰對他們開發(fā)的應用進行數(shù)字簽名。采用相同數(shù)字證書的App被Android系統(tǒng)認為是同一個應用。
權限規(guī)定了Android系統(tǒng)中應用所能夠訪問的API及資源,是Android系統(tǒng)安全的核心機制之一。Android定義了135種權限共4個類別:normal,dangerous,signature和signature or system。應用的權限需要在AndroidManifest.xml文件中的Uses-permission標簽進行聲明。應用在安裝時向用戶申請權限,一旦授權后,除非將此應用刪除,否則權限不會被移除。因此,這種權限機制將安全風險轉移給了用戶。
2.2 串謀攻擊分析
2.2.1 應用程序間的數(shù)據共享
Android操作系統(tǒng)提供了多種應用間通信的方式,進行串謀攻擊的應用可以使用這些通信方式進行協(xié)調和共享數(shù)據,從而進行惡意活動。這里我們介紹最常用的4中應用間的通信方式:
⑴ Intents是用來向其他應用組件(Activities, Services or Broadcast Receivers)發(fā)出動作請求的消息對象,主要包括目標組件的名稱、要執(zhí)行的動作、數(shù)據等內容。Intents可以分為兩種類型:顯示Intents和隱式Intents。其中顯示Intents通過名稱指定目標組件,而隱式Intents并不指定目標名字,常用語激活其他應用程序中的組件。串謀的應用可以將竊取的消息存儲在Intents的數(shù)據部分發(fā)送給另外一個應用執(zhí)行其他的操作。
⑵ Content Providers為不同應用程序之間共享數(shù)據提供了統(tǒng)一的接口。與關系數(shù)據庫類似,它將信息存儲在表中,應用使用Content Resolver對象訪問Content Providers提供的數(shù)據。訪問Content Providers需要應用程序在其manifest文件中聲明必要的權限。例如,一個應用程序想要訪問用戶的聯(lián)系人列表則需要在它的manifest文件中聲明READ_CONTACTS權限。應用需要URI才能 Content Providers查詢或存儲數(shù)據,Android系統(tǒng)上任何應用程序都可以通過這些URI來訪問或操作數(shù)據,從而實現(xiàn)應用間的數(shù)據共享。
⑶ External Storage是指Android設備的外接存儲,它以文件的形式存儲數(shù)據,任何應用程序都可以通過公共文件或相關API對這些文件進行讀寫。應用訪問外部存儲需要聲明READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE權限。
⑷ Shared Preferences是一種輕型的Android數(shù)據存儲方式,它以鍵-值對的方式存儲數(shù)據,通常用來存儲一些簡單的配置信息。盡管它的主要作用不是用于應用程序間的通信,但如果應用聲明相應的權限也可以通過鍵-值對的方式共享數(shù)據。
2.2.2 串謀攻擊的定義及模型
Android串謀攻擊是指多個應用通過某種方式進行權限共享或通信,相互配合,協(xié)作完成惡意攻擊。通過權限共享或相互通信,多個應用可以組成一個協(xié)作的整體進行惡意活動,而每一個單獨的應用都能夠繞過安全軟件的權限檢測,具有非常高的隱蔽性。
如圖1所示,通訊錄App與在線音樂播放器App通過Shared Preferences的數(shù)據共享方式實現(xiàn)串謀攻擊。通訊錄軟件具有READ CONTACTS權限,在線播放器擁有INTERNET聯(lián)網權限,他們中任何一個單獨使用都不會存在安全威脅,能夠繞過安全軟件的權限檢查。但當它們同時安裝到一個Android系統(tǒng)中,可以實現(xiàn)串謀攻擊:通訊錄首先讀取手機中的聯(lián)系人,然后通過Shared Preferences將聯(lián)系人數(shù)據共享給在線音樂播放器。在線音樂播放器接收到數(shù)據后,通過所連接的互聯(lián)網將聯(lián)系人數(shù)據發(fā)送到遠程的服務器上,造成用戶信息的泄露。
① 權限(Permissions)為某個App所申請的權限例,如讀寫文件、記錄音視頻、發(fā)送網絡數(shù)據,記為Per。
② 串謀攻擊所帶來的威脅(Threaten)是指App對用戶或系統(tǒng)帶來的惡意威脅,也是開發(fā)者希望串謀攻擊所達到的目的,記為Threaten。
③ 規(guī)則(Rules)是預先定義的安全規(guī)則,是產生某種威脅時所必要的權限的集合。例如,竊取聯(lián)系人資料需要讀取聯(lián)系人、向網絡發(fā)送數(shù)據等動作和權限的組合是一條安全規(guī)則,所有安全規(guī)則的集合記為R。
④ 通信(Communication)是指App之間能夠進行數(shù)據共享的方式,包括Shared Preferences、Content Providers、Intents等,所有的通信方式記為C。
根據上述的實例我們可以總結出串謀攻擊的基本模型:
定義:如果集合S中包含兩個以上的App,如果滿足如下條件,則集合S中的App是串謀的:
① S中App存在通信c使得它們之間能夠進行數(shù)據共享。
② 至少存在一條安全策略規(guī)則r∈R是集合S中App權限的并集Per(A) ∪Per(B)的子集
根據上述定義可以來描述例1:
我們將通訊錄應用記為Contact_App,在線音樂播放器應用記為Music_App,那么,Contact_App和Music_App請求的權限為:Per(Contact_APP)={READ CONTACTS} 、Per(Music_APP)={INTERNET}。安全策略規(guī)則為竊取聯(lián)系人數(shù)據規(guī)則(Steal_Contact_Data)r={Steal_Contact_Data}。該安全策略規(guī)則對應的威脅為竊取聯(lián)系人數(shù)據:Threaten ={Steal_Contact_Data}。Contact_App與Music_App數(shù)據共享方式:c={Shared Preferences},則:
{Per(Contact_App) ∪Per(Music_App),c∈C} → r{Steal_Contact_Data}
即Contact_App和Music_App的權限合集匹配竊取聯(lián)系人數(shù)據的安全規(guī)則(Steal_ Contact_Data),因此,這兩個App是串謀攻擊,能夠造成聯(lián)系人數(shù)據泄露的威脅Threaten (Steal_Contact_Data)。
2.3 串謀攻擊的檢測策略
正如引言中所述,傳統(tǒng)的App權限檢測方法只能夠對單一的App進行權限檢測,而對于將權限分散到多個App中的串謀攻擊方式則效果不佳。因此,針對第二節(jié)中我們提到的串謀攻擊的特點,本節(jié)提出了一種檢測串謀攻擊的策略,其主要步驟如下:
① 對于一個應用App1,檢測它是否能夠與其他應用通信,如果能,提取通信方式c和能夠與其通信的App2,與App1組成集合S。
② 檢查集合S中各應用的權限,將所有的權限求并集Per(S)。
③ 將Per(S)逐一與預定義的安全策略規(guī)則集R中的每一條安全策略規(guī)則進行比較。
④ 如果某一安全策略規(guī)則r中所包含的權限集合是Per(S)權限集合的一個子集,則該安全策略規(guī)則r與Per(S)相匹配,S中的應用是串謀關系,能夠進行串謀攻擊。
⑤ 如果不存在(4)中的匹配,則S中的應用不能進行串謀攻擊。
上述步驟中,提取應用的權限和通信方式c、預定義安全策略規(guī)則集R是本方法核心的部分。應用的APK文件中包含一個AndroidManifest.xml文件,這是應用的全局配置文件,其中包含了該應用所請求的所有權限。因此我們可以使用Androguard等工具對APK進行反編譯后提取其中的權限。APP間的通信方式主要有Intents、Content Providers、External storage和Share Preferences。通過對APK反編譯,提取所調用的API,結合已經提取出的權限列表可以確定與其他應用的通信方式。安全策略規(guī)則集則參考Enck等人提出的安全策略規(guī)則,對其進行擴充記錄鍵盤輸入信息、錄制通話等安全策略規(guī)則。
3 結論
Android 串謀攻擊是一種基于權限系統(tǒng)的攻擊方式,由于這種攻擊方式是將進行惡意活動的所需權限和實現(xiàn)操作分布在多個應用中,傳統(tǒng)的權限檢測方法無法很好的檢測出來。本文介紹了串謀攻擊的基本原理,尤其詳細分析應用實現(xiàn)串謀攻擊所使用的主要通信或數(shù)據共享方法,并給出了串謀攻擊的模型定義,便于對此種攻擊方式的研究和分析。針對Android串謀攻擊的特點,本文提出了一種檢測策略,即將能夠互相通信的應用作為一個整體,對這個整體進行權限的檢測,進而據此判斷他們是否能夠串謀進行惡意活動。
雖然本文是初步的分析了串謀攻擊的原理并提出了檢測方法,但是這是在比較理想的境中進行的。在實際的Android應用市場環(huán)境中,應用之間存在各種實現(xiàn)數(shù)據共享的方式,而且用于判定的預定義的安全策略規(guī)則集也不夠完備,這都需要進一步的研究和完善。
參考文獻:
[1] Enck W, Ongtang M, and McDaniel P. On Lightweight Mobile Phone Application[C].Proceedings of the 16th ACM Conference on Computer and Communications Security, Chicago, USA, 2009:235-245,.
[2] Cam N T, Van Hau P, Nguyen T. Android Security Analysis Based on Inter-application Relationships[M]//Information Science and Applications (ICISA) 2016. Springer Singapore, 2016: 689-700.
[3] Kashefi I, Kassiri M, Salleh M. Preventing Collusion Attack in Android[J]. International Arab Journal of Information Technology (IAJIT), 2015, 12.
[4] Marforio C, Francillon A, Capkun S, et al. Application collusion attack on the permission-based security model and its implications for modern smartphone systems[M]. Zürich, Switzerland: Department of Computer Science, ETH Zurich, 2011.
[5] Memon A M, Anwar A. Colluding Apps: Tomorrows Mobile Malware Threat[J]. IEEE Security & Privacy, 2015, 13(6): 77-81.
[6] Chin E, Felt A P, Greenwood K, et al. Analyzing inter-application communication in Android[C]//Proceedings of the 9th international conference on Mobile systems, applications, and services. ACM, 2011: 239-252.
[7] Dicker C. Android Security: Delusion to Collusion[J]. 2014.
[8] 閆梅,彭新光. 基于Android安全機制的權限檢測系統(tǒng)[J]. 計算機工程與設計,2013(3):854-858.
[9] 朱佳偉,喻梁文,關志,陳鐘. Android權限機制安全研究綜述[J]. 計算機應用究,2015(10):2881-2885.
[10] 張金鑫,楊曉輝. 基于權限分析的Android應用程序檢測系統(tǒng)[J]. 信息網絡安全,2014(7):30-34.