鄭吉宏 王魯寧
(杭州電子科技大學,浙江 杭州 310000)
基于安卓權限管理的病毒防御研究
鄭吉宏 王魯寧
(杭州電子科技大學,浙江 杭州 310000)
如今,安卓操作系統已經成為市場占有率第一的移動設備操作系統。同時,安卓系統上各種惡意軟件,病毒橫行。給用戶的安全造成了很大的威脅。隨著智能手機成為人們日常生活的一部分。安卓系統的安全成為一個非常嚴重的問題。文章從安卓權限管理的角度談一談如何對安卓病毒進行有效的防御。
安卓;病毒;系統;網絡安全
安卓操作系統是由谷歌公司開發的開源操作系統。安卓操作系統基于linux內核開發,廣泛的應用于移動設備,比如平板電腦和智能手機中。截至2015年第四季,安卓系統在智能手機上的占有率已經高達80.7%。成為智能手機操作系統的霸主。
隨著越來越多人選擇使用安卓手機。安卓手機的安全問題也變得越來越重要。由于安卓操作系統開放,自由的生態環境,使得任何人可以輕易的獲取并且修改操作系統代碼。這樣的開發環境固然能夠吸引更多的開發者加入安卓的陣營,但是這也引發了許多安全問題。其中最為突出的莫過于安卓手機上各種病毒以及勒索軟件的傳播。這里就從安卓操作系統自身權限管理的角度,談一談安卓系統上病毒擴散傳播的條件以及危害。
安卓的基本構架很好的體現出linux操作系統所一直所提倡的分層思想。通過將操作系統各個層次隔離開來,減少層與層之間的依賴性。使得操作系統的各個部分開發可以獨立開來。

圖1 安卓系統結構
安卓操作系統主要由4個層次組成。其中包括linux內核,基礎函數庫,安卓運行時框架,以及最上層的應用層。4個層次之間相互隔離,通過公用的api進行相互的調用。
1.1 安卓內核層
安卓內核基于linux 內核開發而成。但是為了使安卓能在性能較低的移動設備上使用,谷歌對linux內核做了許多的裁剪。刪除的許多無用的模塊。這使得安卓內核更加的輕便。當然,由于是基于linux內核開發,所以許多linux內核的安全問題在安卓上同樣存在。
1.2 安卓基礎函數庫
這一層主要是一些 C/C++運行庫。它們通過安卓運行時框架為APP提供各種基礎服務器。主要功能包括提供標準C庫,多媒體支持庫,瀏覽器內核,ssl連接支持庫等等。它們給開發者們提供了完善的支持。同樣,java運行所必須的Dalvik虛擬機也屬于這一層。
當然由于各個基礎組件都源自其他公共的開源項目。所以也給安卓系統的安全留下了很多不確定性。
1.3 安卓運行時框架
安卓運行時框架是開發人員最常接觸的一層。開發安卓APP所需要各種 API,包括安卓的四大組件都屬于這一層。安卓運行時框架封裝了開發APP所需要的絕大部分功能。只需要簡單的API調用。安卓APP就可以通過它來訪問系統底層的資源。
1.4 安卓應用層
安卓應用層運行的就是常用的APP了。所有安卓應用都運行在應用層,運行在相對隔離的Dalvik虛擬機中,受到安卓權限機制的管理。
安卓的權限管理除了基于linux的權限管理機制之外,因為安卓的應用全部運行與Dalvik虛擬機中。所以安卓系統能夠對應用的訪問權限做更加細致的劃分和管理。
2.1 安卓應用層的權限管理
在默認的情況下,運行在Dalvik虛擬機中的安卓應用是沒有權限進行網絡訪問,修改本地文件,讀取用戶隱私信息等操作的。如果應用為了實現自己的功能需要某個權限,比如應用需要讀取用戶的短信信息,則必須要在程序開發的時候就寫明應用需要哪些權限。在安裝應用的時候,安卓的應用安裝器會檢查程序簽名中所提及的權限,并且告知用戶。只有經過用戶的確認之后,安卓系統才會給予應用相應的權限。如果一個應用程序企圖進行一些非授權的操作。會立即被安卓系統終止運行。
2.2 安卓內核的權限管理
安卓繼承了linux的權限管理機制,但是與一般linux不同,安卓系統并不提供root權限用戶給用戶。普通用戶和應用程序無法通過正常手段獲取安卓系統的root權限。因此一般的應用很難修改內核或者是一樣安卓的核心配置。安卓的root權限僅限安卓自己的核心組件才能使用,這加大了惡意軟件對操作系統進行破壞和監聽的難度。
3.1 對用戶提醒不足
安卓系統雖然默認禁止應用擁有高權限。但是應用可以在安裝的時候聲明自己需要什么權限。而是否給予應有權限的選擇權是在用戶手里的。由于各種各樣的原因。許多的用戶可能并不會對應用安裝是申請的權限做太多關注直接同意。這就導致安卓應用安裝器對應用權限的管理形同虛設。很多情況下,及時是一個請求了很多危險權限的惡意應用也會被輕易放行。
3.2 可獲取權限太多太高
安卓雖然默認情況下權限較低,但是應用程序可以申請到的權限卻非常高。比如安卓應用可以通過接受全局廣播包的方式來攔截用戶短信,或者是通過劫持Activity使得系統無法正常使用。這些都是因為程序可以獲得的權限權限過高導致的。
而且只要聲明了權限,安卓系統的底層文件系統是可以被訪問到的。而且因為所有應用的用戶,用戶組,以及權限是一樣的。所以一個安卓應用可以訪問到其他應用程序的數據。而且安卓上存放數據默認的數據庫是sqlite,這個輕量級數據庫儲存數據的方式就是存儲在文件系統當中,而且是明文存儲信息的。這就導致如果應用的開發者沒有安全意識,草率的將用戶的賬戶密碼等敏感信息存儲在 sqlite數據庫中的話。這些數據很容易就會被惡意應用獲取到。
而且安卓操作系統的 server組件,可以很輕易的讓應用運行在系統的后臺。這樣使得病毒可以很輕易的常駐在移動設備上,獲取個人的短信,通話記錄,甚至位置等敏感信息。
3.3 第三方殺毒軟件很難檢查
雖然安卓基于沙箱的機制可以阻止病毒獲得沒有被授權的訪問。但是這也使得三方殺毒軟件很難對系統進行防護。因為安卓一般情況下無法取得root權限,而且每個應用運行在獨立的沙箱中。由于各個沙箱之間相互隔離的特點。使得殺毒軟件很難能夠對系統進行全方位的保護。而且無法對其他應用的行為做檢測。由于linux系統內核和其上的應用層完全隔離的特點,沒有獲得root的情況下殺毒軟件也沒有方法通過hook系統函數,
雖然安卓系統默認不提供root權限。但是現在卻有各種方法獲取到安卓手機的root權限。雖然root之后可以給用戶帶來很多的便利,比如可以使用一些底層的功能。對于開發者來說,root之后的安卓系統可以更方便的進行開發和調試。但是root對于安卓系統的安全是不利的。
4.1 root的獲取方式
現在對安裝安卓系統的移動設備,獲取root權限的方法主要由有兩種。
4.1.1 使用第三方rom
由于安卓系統是一個開源的操作系統,任何人都可以更改其源代碼。所以有許多個人或者是生產移動設備的公司會更改原生安卓系統的部分功能,以及添加新的功能。當然,也有一些rom提供者會將原本鎖住的root權限向用戶開放。所以用戶可以選擇這些第三方的rom包來安卓操作系統,從而獲取root權限。
4.1.2 使用各種root軟件
現在互聯網上還有各種各樣的root軟件。他們獲得系統root的權限的方法是通過一些本地提權的漏洞。通過安卓內核或者是一些以root運行的組件的漏洞,通過本地提權的方式獲取系統的root權限。由于安卓生態系統的龐大和混亂。所以很多時候,一個致命系統漏洞的更新可能需要很長的時間才能到達用戶的手中。對于很多第三方更改過的安卓系統,如果用戶不主動更新。可能永遠一個漏洞的更新補丁永遠也不可能到達用戶手中。這就導致對安卓系統上往往存在一個甚至多個可以直接獲取到安卓root權限的高危漏洞。
4.2 root后手機缺少管控
由于安卓系統默認沒有root,所以刪除了一些對root的保護措施。例如普通的linux系統如果想要切換到root用戶,必須使用root賬戶與密碼。或者是由root用戶通過sudo命令給予普通用戶一些root的權限。但是由于安卓默認不給予用戶root權限。所以相應的對root權限的保護與管理也都被一處了。這就導致重新獲得的root權限不能很好的被管理。任何應有都可以很輕易的獲得root的權限。而病毒一旦感染了已經root過的手機,就很容易獲得root權限,從而進入安卓內核,更難以發現和清除。
4.3 本地提權漏洞引發的問題
由于一些原因,即使是國內的安卓操作系統無法收到來自谷歌官方的更新推送。這就導致許多高危漏洞無法及時的被修補。這就導致國內很多移動設備上運行的安卓系統還是不安全的。而且因為安卓在發布漏洞補丁一段時間之后,漏洞的詳情和利用方式就會公開。所以對于老版本安卓的 root漏洞的利用方法其實是很容易就能在互聯網上搜索到的。所以對于惡意軟件或者病毒制作者來說,完全有能力在自己的病毒中內置本地提權漏洞的利用代碼。從而將自己的權限提升到root。
一旦病毒能夠提權到root等級,那么安卓系統的所有權限管理就會全部失效。病毒能夠很輕易的監控用戶的通話,短信等信息。甚至能夠讀取一些金融交易軟件的機密數據。
雖然安卓的權限管理存在一些問題,但是只要合理的配置。就可以杜絕大部分的隱患。通過各種權限的合理設置,以及一些權限管理的APP。就能夠防止病毒的入侵。
5.1 安卓應用層面的權限管理
一般的安卓應用都是用java編寫,然后運行在Dalvik虛擬機中。剛才提及過,Dalvik虛擬機對程序APP的敏感調用,比如讀寫磁盤文件,網絡請求等都會做權限檢查。所有需要的權限都需要在安裝的時候賦予。所以在應用安裝的時候就需要對應用需要的權限做嚴格的審查。比如收發短信,撥打電話等權限就不應該輕易的給予。
而且隨著技術的發展,現在的安卓操作系統已經能夠做到動態的檢查程序的敏感操作并且告知用戶了。在安卓4.3版本之后,google給安卓增加了動態權限管理的功能。以前的安卓系統,對于應用請求的權限要不全部同意,要不就不允許安裝。但是在新版的安卓操作系統中,已經實現了在應用運行過程中試試的檢查程序的權限使用情況。并且能夠根據預先設定好的設置來覺得是放行,還是禁止應用的權限請求。或者是提示用戶是否允許。
這就大大緩解了安卓應用安裝時候的對高危權限的提醒不足的問題。而且可以讓用戶選擇給予應用哪些權限。這在一定程度上緩解的安卓市場上一些惡意廣告應用的推廣和傳播。
5.2 非root用戶阻止病毒的危害
由于一些原因,原生的安卓系統沒有辦法得到及時的更新推送。不過好在安卓開放的政策。國內的手機廠商們都紛紛推出了自己的修改的安卓rom。這些系統在美化原生系統界面的同時,也承擔起了對系統及時更新,修復漏洞的工作。用戶可以選擇可靠的第三方公司發布的安卓系統。可以在一定程度上阻止因為系統更新不及時而導致的安全問題。
5.3 對已root系統的root權限管理
由于很多原因,許多的用戶最終選擇的解開google對安卓系統root權限的鎖定。正如前文所述,已經root的安卓系統有很多的安全隱患。所以對root權限需要進行更加嚴格的管理。
目前普遍的做法是直接對安卓的內核進行修改,在內核層面上阻止任何應用程序對系統關鍵目錄,即系統根目錄下的system目錄進行修改。由于這個操作是在內核層面上完成的,在系統自舉啟動之后,system的可寫權限就被鎖死。
由于system被鎖死,只有在安裝安卓系統的時候就付帶的一些應用才可能存在與system中,而且不能被修改。大多數提供root權限的rom的提供商都會在system目錄中安裝一些管理root權限的工具。系統的root權限都通過這些工具才能夠取得,再加上linux內核對root權限的管理方案。通過這樣的方法,讓只有被用戶認可的應用程序才能夠獲得系統的root權限。保證系統的安全性。
安卓開源的操作系統,開放的生態環境使得越來越多的移動設備廠商使用了安卓系統。當然開放的環境也導致了更多的安全問題。安卓權限管理上有很多的不足之處,給予了普通應用程序過多權限是一把雙刃劍。為了管理好這些敏感的權限。需要各種第三方安全軟件的協助和設置。但是只要控制得當,就能夠杜絕各種病毒,惡意軟件的侵害。
[1] 郭霖.第一行代碼—Android[M].北京:人民郵電出版社, 2014.
[2] 豐生強.Android軟件安全與逆向分析[M].北京:人民郵電出版社,2013.
[3] 李剛.瘋狂Android講義[M].北京:電子工業出版社,2013.
Virus defense research based on Android rights management
Today, Android operating system has become the market share of the first mobile device operating system. At the same time, a variety of malicious software and virus are rampant on Android system. They are a big threat to the safety of the user. As smart phones becoming a part of daily life, the security of Android systems has become a very serious problem. This article from the perspective of Android rights management to talk about how to effectively defend the Android virus. It is divided into parts: the basic framework of the Android system, the general application of the authority management, the authority management negligence, the root hazard, through the authority management to the virus defense, rights management advantages and disadvantages of the six parts of the discussion. It will briefly explain the Android system architecture and authority management rules, as well as the resulting problems, and finally put forward some solutions and methods, designed to further enhance the safety of Android systems.
Android; virus; system; network security
TP309
A
1008-1151(2016)09-0020-03
2016-08-10
鄭吉宏,男,杭州電子科技大學學生,研究方向為計算機病毒分析與防御;王魯寧,男,杭州電子科技大學學生,研究方向為網絡編程。