• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      針對安卓系統(tǒng)位置信息服務的權限提升攻擊

      2017-09-30 20:48:21王慶袁珺沈嘉薈穆楠
      網絡空間安全 2017年9期
      關鍵詞:安全機制訪問控制

      王慶+袁珺+沈嘉薈+穆楠

      摘 要:Android 平臺的安全問題越來越引起關注,盡管權限機制、隔離機制、應用簽名等方式被用來保護平臺的安全性,但是這種以應用開發(fā)者為中心、依托用戶完成的粗粒度授權和訪問控制機制存在諸多缺陷,導致系統(tǒng)安全性大大降低,容易受到權限提升攻擊。針對這種攻擊,現(xiàn)有的解決方案主要集中在加強中間層的防護措施,意味著攻擊者如果能夠跨越中間層,直接在應用層和內核層之間進行通信,則可以繞開 Android 系統(tǒng)中間軟層的若干安全機制,實現(xiàn)對應用層的權限提升攻擊。為了驗證這種設想,論文提出了一種針對Android系統(tǒng)位置信息服務的權限提升攻擊方案,通過編寫可以在普通應用進程中運行的且可替代 Android 位置信息服務原生庫的動態(tài)鏈接庫,使得應用層請求只要調用該動態(tài)鏈接庫就可以在沒有權限的情況下繞過 Android 權限機制到達底層,并獲得位置信息數據,實驗結果表明此方案可以實現(xiàn)權限提升,證實了現(xiàn)有Android 平臺安全機制的不足。

      關鍵詞:Android; 訪問控制; 安全機制; 權限提升攻擊

      中圖分類號: TP302 文獻標識碼:A

      Abstract: With the continuous extension of application fields, the security problem of Android platform is more and more obvious. Although adopting the authority mechanism, isolating mechanism and application of signature, there are still lots of drawbacks in Android coarse-grained authorization and access control mechanism, which is developer-oriented and is based on users. This results in greatly lower security and being vulnerable to privilege escalation attack in application layer. For this type of attack, existing solutions are mainly concentrated on strengthening the security protection in the middleware. If the communication can be carried out between application layer and kernel layer directly, then privilege escalation attack can obtain success as bypassing those security mechanisms in the middle layer. In this paper, we proposes a privilege escalation attack scheme against Android Location Information service. we built a Dynamic Link Library, which can be run in common application process, to replace the native library. Through calling the Dynamic Link Library, requests in the application layer can bypass the Android access mechanism to reach the bottom and gain the location information data. The experimental results show that this scheme can realize elevated privileges, confirmed the shortage of the existing Android platform security mechanism.

      Key words: android; access control; security mechanism; privilege escalation attack

      1 引言

      自2009年谷歌正式發(fā)布安卓(Android)系統(tǒng)第一版至今,Android出現(xiàn)已經是第九個年頭了,其憑借開放平臺的特征帶來了大量的市場占有率,根據StatCounter監(jiān)測機構公布的最新數據,2017年3月,使用Android系統(tǒng)的用戶占比達37.93%[1],其使用量首次超過Windows系統(tǒng),成為全球最常使用的操作系統(tǒng)。隨著使用量的增加,其安全性也受到了越來越多的關注。騰訊安全實驗室發(fā)布的2016手機安全報告也指出,手機遭遇安全危害的Android系統(tǒng)用戶占比37.2%,位居第一[2],CVE Details公布的2016年報告顯示,存在安全漏洞最多的軟件產品是Android系統(tǒng),共計為523處[3]。以上數據表明Android系統(tǒng)安全隱患不容忽視。

      Android系統(tǒng)主要存在于移動通信中,目前用戶對計算機安全認知程度非常高,而對移動通信的認知很低,甚至不少用戶還沒有意識到移動通信端存在安全問題。如手機上存儲著隱私性的移動通信用戶個人信息,惡意操作多以資費消耗、隱私竊取和系統(tǒng)破壞為主,有時還通過自動聯(lián)網、自動撥號和自動發(fā)送短信注冊服務,使用戶蒙受經濟損失。另外,在用戶不知情的情況下獲取用戶通訊錄、地理位置及信用卡等敏感數據,會造成不可估量的損失[4]。所以,對移動通信安全性的有效檢測和評估,來提高安全性至關重要。endprint

      Android系統(tǒng)存在如此嚴重安全隱患的主要原因就是,它是一種權限分離的操作系統(tǒng),即一個應用程序想實現(xiàn)功能,就必須獲取相應的系統(tǒng)權限。權限獲取后,程序在后臺對權限的調用就可能會涉及到通信簿、短信、位置信息等各種隱私[5]。Android系統(tǒng)同時有多個應用在運行,多個應用也設置了對應的訪問權限,應用之間可以互相訪問,就出現(xiàn)了權限擴展導致的提權漏洞。正是這個漏洞的存在,有些沒有特定API訪問權限的應用可以通過對第三方應用的訪問,間接實現(xiàn)某些超越自身權限的功能,這就是權限提升攻擊,這種攻擊具體可以分為混淆代理人攻擊(Confused Deputy Attack)和共謀攻擊(Collusion Attack)[6-8]。混淆代理人攻擊是指惡意程序利用其它程序的未保護接口來間接獲得特權功能,普遍存在于 Android缺省程序(如電話、鬧鐘、音樂和設置程序)以及第三方程序中。共謀攻擊是應用層權限提升攻擊的另外一種方式:惡意程序可以通過共謀來合并權限,從而執(zhí)行超出各自特權的動作。Davi L等人[9]實現(xiàn)了一個短信劫持的混淆代理人攻擊。文獻[10]利用兩個分別具有錄音和網絡權限的應用,實現(xiàn)了應用間權限提升共謀攻擊。

      針對Android 系統(tǒng)的安全采取的措施層出不窮,根據應用于系統(tǒng)位置的不同劃分為三類,分別是內核層保護、中間層保護(系統(tǒng)庫和運行環(huán)境、應用框架)和應用層保護。Android系統(tǒng)內核是Linux 內核,安全增強工作普遍基于安全模塊 LSM( Linux Security Module)實現(xiàn)。SELinux on Android[11]關注內核層的權限提升攻擊,SEAndroid使得 SELinux 在 Android 上的實現(xiàn)成為可能。TrustDroid[12]提出了Android 軟件棧中不同層域孤立問題的解決方法,其依賴 Linux 文件權限機制來執(zhí)行內核層的孤立。中間層通過應用層權限管理、運行時動態(tài)權限檢測等機制對抗應用層權限提升攻擊。例如IPC Inspection[13]將被調用者的有效權限減少為調用者與被調用者權限的交集;Quire[14]跟蹤IPC 的調用鏈來減少權限,并提出一種輕量級的簽名方案,通過創(chuàng)造簽名語句來抵抗混淆代理人攻擊。

      Apex[15]是一個政策執(zhí)行Framework,運行用戶在安裝時選擇的同意權限并且對APP運行時的行為強加限制。應用層應用程序的靜態(tài)分析是Android系統(tǒng)應用層的主要權限保護機制,用于識別 Android 應用程序是否申請多余權限或提供未保護的開放特權接口等安全缺陷。

      上述安全機制只關注各層對權限的分別保護,忽略了層間的配合,對上下文不敏感。這也為應用層權限提升攻擊提供了可乘之機。經過深入調研發(fā)現(xiàn)Android系統(tǒng)的安全機制存在幾個缺陷:以用戶為中心,依托用戶完成授權工作,極大地降低了系統(tǒng)的安全性;解決方案過度依賴于中間層,如靜態(tài)分析很多成果依賴于Android權限機制,該機制是在中間層中實現(xiàn)的。

      解決方案的不足導致存在這樣一種情況,即如果一種攻擊方法可以直接穿透中間層到達底層,則可以繞過安卓中間層的安全方案和所有層的權限管理機制?;诖朔N假設,為驗證Android仍然存在安全漏洞,本文提出了一種針對Android系統(tǒng)位置信息服務的權限提升攻擊方案,通過編寫可以在普通應用進程中運行的且可替代 Android位置信息服務原生庫的動態(tài)鏈接庫,使得應用層請求只要調用該動態(tài)鏈接庫就可以在沒有權限的情況下繞過 Android 權限機制到達底層,并獲得位置信息數據。

      2 攻擊方案

      2.1 Android定位服務流程

      Android 系統(tǒng)擁有位置信息服務,定位方法包括四種,分別是GPS定位、WiFi定位、基站定位、AGPS定位。Android 位置信息服務的調用流程分析如下。LocationManager為整個定位服務的入口類。在LocationManager.java (位于:frameworks/base/location/java/android/ location/)中可以看到,LocationManager類中所有功能的實現(xiàn)都依賴于一個名為mService的字段來實現(xiàn),這個字段的類型是ILocationManager。ILocationManager由LocationManagerService實現(xiàn)。

      定位服務的真正實現(xiàn)類是LocationManager Service,該類位于frameworks/base/services/java/com/android/server/LocationManagerService.java中。LocationManagerService.java的另外一個作用就是對申請使用位置信息的應用進行權限檢查。本文提出的攻擊所需要繞過的第一個訪問控制便在此處。

      實際上,在移動設備上可真正用于定位服務的通常只有兩種實現(xiàn)方法:一種是通過GPS 模塊,一種是通過網絡。網絡定位是通過代理方式來完成的,但代理在運行時可以進行動態(tài)替換,具有一定的不確定性[16]。相反,GPS模塊的定位實現(xiàn)是確定的,是可以參考的[17]。所以,本文通過GPS模塊來完成定位的實現(xiàn)類:GpsLocation-Provider(位于:frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java)。

      經過分析可知,當硬件檢測到位置更新后,最初調用的是GPS LocationProvider.cpp中的location_callback函數,消息通知的流程。

      (1)location_callback函數中對應的是調用GpsLocationProvider.java中的reportLocation方法。endprint

      (2)GPS LocationProvider.java 中的report Location方法會調用ILocation-Manager的report Location方法,然后是調用LocationManagerService的reportLocation方法。

      (3)LocationManagerService的reportLocation方法中會對LocationWorkerHandler發(fā)送消息MESSAGE_LOCATION_CHANGED。該消息在LocationWorkerHandler的handleMessage方法中被處理。處理方法中會調用LocationProviderInterface的updateLocation方法和LocationManagerService的handleLocationChangedLocked的方法。前者對于Gps模塊來說就是調用GpsLocationProvider的updateLocation方法。

      (4)GPS LocationProvider的updateLocation 方法會對ProviderHandler發(fā)送消息UPDATE_ LOCATION,該消息在ProviderHandler的handler方法中被處理,處理的方法是調用handleUpdateLocation方法,該方法中會調用native_inject_location方法以注入。

      (5)而LocationManagerService的handle Location Changed Locked的方法會將最新的位置存放到mLastKnownLocation中。至此,便可以通過Location-ManagerService的getLastKnown Location方法獲取到最新更新的位置信息了。

      2.2 Android定位服務流程

      根據對Android GPS正常調用流程的分析發(fā)現(xiàn),應用程序的權限在Framework層的Java代碼部分檢查,但Android GPS數據的獲取可以完全由原生方法實現(xiàn)。即在Android的原生方法實現(xiàn)的源文件GPS LocationProvider。

      CPP中能夠實現(xiàn)對GPS設備的初始化、調用獲取數據和數據的更新與傳遞。于是本文開發(fā)一個native_GpsTest.cpp實現(xiàn)GPS LocationProvider.cpp中的功能,編譯為malicious.so作為應用程序自帶的動態(tài)鏈接庫替代libandroid_servers.so。這樣攻擊程序只需要在本進程中調用malicious.so就可以實現(xiàn)對底層設備的調用,從而可以繞過Framework層的權限檢查。

      基于此思路編寫的攻擊程序不需要在AndroidManifest.xml中顯示聲明GPS相關權限, Android系統(tǒng)也不能通過權限檢查機制來限制其攻擊行為。這樣就可以將該程序在用戶完全不知情的情況下安裝進入用戶手機,并竊取其GPS數據。

      本文編寫了NativeGpsTest以實現(xiàn)GPS Location Provider.cpp的功能,并作為應用程序的自帶原生庫安裝進入手機。

      (1)隱藏在攻擊程序正常功能中,在程序運行過程中會自動調用NativeGpsTest,自動發(fā)起攻擊。

      (2)NativeGpsTest會使用的dlopen函數先調用libhardware.so中Hal 層入口函數get_module_t獲得gps.XXXX.so路徑并調用初始化接口。

      (3)編寫的回調函數GPS Callback結構體作為init函數的參數。通過gps.xxxx.so調用Linux 內核層中設備驅動打開設備并啟動數據接收線程,獲得GPS數據后,返回至nativeGpsTest。

      2.3 攻擊實現(xiàn)方案

      為成功調用Android底層數據,攻擊程序的編寫參照了GPS LocationProvider.cpp,結構上與GPS LocationProvider.cpp源代碼完全相同,功能上也可以完全替代源代碼。

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

      3 攻擊方案驗證

      3.1 模擬器實驗

      本文的源碼分析在Android虛擬機的各個版本上都進行了實驗,以Android 4.1.2系統(tǒng)為例說明。方案將攻擊程序運行在Android虛擬機上,然后利用eclipse Emulator control模擬生成GPS數據,以此來模擬現(xiàn)實的GPS數據接收。

      攻擊程序獲得GPS數據成功之后便通過Log向控制臺輸出獲得的結果,并與模擬生成的GPS數據進行比較。實驗結果是我們的攻擊程序在各個版本的Android虛擬機上都取得了成功。

      3.2 真機實驗

      模擬器實驗成功后,按照模擬器上相同的流程繼續(xù)在Galaxy Nexus和Nexus_s_4g手機,Android 4.1.2系統(tǒng)上進行真實試驗。但是真機上的實驗卻并沒有取得預料的結果,如圖5。endprint

      從輸出的Log信息可以看出攻擊程序按照方案設想已經成功穿透中間軟層進入到了硬件抽象層,但是在調用硬件抽象層中的實現(xiàn)庫gps.XXXX.so時,出現(xiàn)了錯誤。很可惜的是在遇到的問題沒有辦法通過源碼來分析。因為程序失敗的代碼位于gps.xxxx.so中,而該部分代碼除了高通公司較早的開源版本外,其余完全不開源。只能通過分析程序調試中輸出的Log信息來分析報錯原因。

      通過輸出信息可以看到我們遇到的問題主要分為兩類,一類是硬件啟動失敗,另一類是權限不足。Galaxy Nexus中的實驗結果顯示,設備啟動失敗總是在GPS數據接收線程開啟之前,且線程可以開啟成功。Nexus_s_4g的實驗結果顯示,設備可以成功啟動,但是在線程間通信過程中存在權限問題。

      3.3 實驗驗證

      在Android的Linux內核層,內核檢查進程的uid、gid以判斷進程是否擁有相應設備的調用權限。Android系統(tǒng)中所有硬件設備默認為系統(tǒng)進程SystemServer的資源,Android應用程序只能通過System Server才能調用它們。因此判斷,雖然成功的穿透了Android中間層及其權限機制,但是Android系統(tǒng)內核層的訪問控制和Android系統(tǒng)的隔離機制仍然存在。這是使得無法在真機上攻擊成功的原因。于是本文進行了以下的嘗試性方案。

      本文嘗試利用Android系統(tǒng)提供的進程間共享數據的機制來調用底層設備。使用一臺Root過的手機,修改系統(tǒng)文件/data/system/packages.xml中攻擊程序的相關字段。將攻擊程序的sharedUserID更改為1000—SystemServer的UID;攻擊程序的證書修改為圖6:

      這樣就可以強行將攻擊程序加入System Group,這使得攻擊程序可以調用System Server進程的文件,擁有調用硬件設備的權限。實驗結果通過授予攻擊程序相應的權限,但是仍然未能成功的獲得Gps數據,且輸出的Log信息并沒有改變。

      4 結束語

      本文以 Android 4.1.2版本的源碼為基礎,對 Android平臺進行了系統(tǒng)分析,對于 Android位置信息服務提出了權限提升攻擊方案,該方案主要利用了 Android位置信息服務的兩個特點:一是 Android位置信息服務的c/c++代碼可以在不依賴上層Java代碼的情況下實現(xiàn)所有功能,但是權限檢測的功能卻是在上層Java代碼中實現(xiàn)的;二是Android系統(tǒng)運行應用程序調用系統(tǒng)庫(如 libhardware.so)并且沒有任何的安全檢查。

      利用以上兩點,本文編寫的攻擊程序,通過直接調用 Android系統(tǒng)庫實現(xiàn)Android位置信息服務系統(tǒng)的功能,從而在不需要通過System Server進程的情況下在本進程內直接穿過中間層,打破Android系統(tǒng)的層次結構,實現(xiàn)權限提升攻擊,驗證了系統(tǒng)此類安全漏洞的存在。由于時間和精力等原因,攻擊并沒有做到盡善盡美,這里提出一些可以改進的方向,這也將是后續(xù)主要工作。

      (1)針對真機上的攻擊不成功的原因的分析,進行更多的實驗和更廣泛的調研,以期查明原因。

      (2)Android位置信息服務并不只限于GPS定位這一種方式,其他的定位方式也可以進行攻擊嘗試,目前已經展開對于基于基站的定位方式的分析。

      (3)攻擊方法很可能并不只限于Android位置信息服務者一種情況,將嘗試將攻擊方法推廣到Android平臺下的其他敏感資源中。

      基金項目:

      戰(zhàn)略合作專項AQ1703 AQ1708。

      參考文獻

      [1] StatCounter. Operating System Market Share Worldwide[EB/OL].http://gs.statcounter.com/os-market-share.html, 2017–03–31/2017–04–27.

      [2] 企鵝智酷. 2016年手機安全報告[EB/OL]. https://m.qq.com/security_lab/news_detail_362.html, 2016–08–03/2017–04–27.

      [3] CVE Details. Top 50 Products By Total Number Of "Distinct" Vulnerabilities in 2016 [EB/OL]. https://www.cvedetails.com/top-50-products.php?year=2016.html, 2017–02–12/2017–04–27.

      [4] 龔利.Android系統(tǒng)手機安全機制研究[J].網絡安全技術與應用, 2015(3):85-86.

      [5] 鄭冠仕, 張錚, 張為華.面向移動系統(tǒng)安全的應用分析技術綜述[J].計算機系統(tǒng)應用, 2016, 25(9):17-26.

      [6] M. Ongtang W. Enck and P. McDaniel. Mitigating android software misuse before it happens[R]. Technical Report NAS-TR-0094-2008, Seq 2008.

      [7] J. Jung S. Schechter P. Hornyack, S. Han and D. Wetherall. These arent the droids youre looking for: retrotting android to protect data from imperious applications[C]. In Proceedings of the 18th ACM conference on Computer and communications security, pages 639–652, ACM, 2011.endprint

      [8] X.-y. Zhou M. Intwala A. Kapadia R. Schlegel, K. Zhang and X. Wang. Paranoid android: versatile protection for smartphones[C]. In Soundcomber: A stealthy and context-aware sound trojan for smartphones, volume 11, pages 17–33, 2010.

      [9] Hasswa A, Nasser N, Hossanein H. Generic vertical handoff decision function for heterogeneous,wireless, networks[C]∥ The Second IFIP International Conference on Wireless and Optical Communications, 2005:239 -243.

      [10] Yang T, Rong P. A fuzzy logic vertical handoff algorithm with motion trend decision[C]∥2011 the 6th International Forum on Strategic Technology( IFOST) , 2011:1280-1283.

      [11] Y. Fledel A. Shabtai and Y. Elovici. Securing android-powered mobile devices using selinux. Security & Privacy, IEEE, 8(3):36-44, 2010.

      [12] A. Dmitrienko S. Heuser A.-R. Sadeghi S. Bugiel, L. Davi and B. Shastry. Practical and lightweight domain isolation on android. In Proceedings of the 1st ACM workshop on Security and privacy in smartphones and mobile devices, pages 51–62, ACM, 2011.

      [13] A. Moshchuk S. Hanna A. P. Felt, H. J. Wang and E. Chin. Permission redelegation: Attacks and defenses. In USENIX Security Symposium, 2011.

      [14] Y. Pisetsky A. Shu M. Dietz, S. Shekhar and D. S. Wallach. Quire. Lightweight provenance for smart phone operating systems. In USENIX Security Symposium, 2011.

      [15] S. Khan M. Nauman and X. Zhang. Apex. extending android permission model and enforcement with user-dened runtime constraints. In Proceedings of the 5th ACM Symposium on Information, Computer and Communications Security, pages 328–332, ACM, 2010.

      [16] 崔虎.基于Android平臺的移動終端設備的定位[J].科技信息, 2011(35):719-720.

      [17] 倪紅軍.基于Android平臺的移動終端GPS研究[J].計算機技術與發(fā)展, 2012, 22(5):198-201.endprint

      猜你喜歡
      安全機制訪問控制
      ONVIF的全新主張:一致性及最訪問控制的Profile A
      關于稅收應用中的數據庫安全機制淺析
      Domino安全策略研究
      鐵路信號設備維護與安全機制分析
      論10kV配電線路接地故障分析及預防
      動態(tài)自適應訪問控制模型
      通信學報(2016年11期)2016-08-16 03:20:32
      淺析云計算環(huán)境下等級保護訪問控制測評技術
      大數據平臺訪問控制方法的設計與實現(xiàn)
      天祝| 信阳市| 固阳县| 绥芬河市| 怀集县| 通山县| 赤壁市| 延长县| 从江县| 新龙县| 兴山县| 泰宁县| 静海县| 广东省| 赤水市| 永和县| 焦作市| 婺源县| 南郑县| 平南县| 留坝县| 司法| 日土县| 丰顺县| 彩票| 白朗县| 洪雅县| 东海县| 松溪县| 华坪县| 隆安县| 苍南县| 德惠市| 阳朔县| 社旗县| 中阳县| 连州市| 禹城市| 昌宁县| 洞口县| 沽源县|