楊金寶 馬寶澤 葉 清
(1.海軍工程大學信息安全系 武漢 430033)(2.南部戰區海軍參謀部 湛江 524000)
近年來,隨著智能手機、平板電腦等移動終端的普及應用,移動互聯深刻地改變著人們的生活、工作方式。智能移動終端是移動互聯網的前提和基礎,其平臺類型主要有谷歌的Android系統、蘋果的iOS系統、RIM的黑莓系統等。其中由谷歌提出的Android平臺,因其開源性、開放性和可定制性,自推出之日起就引起了業界的廣泛關注,目前Android系統的國內智能手機操作系統市場份額已占到了80%[1]。但是與此同時,由于大量的Android系統用戶的安全意識相對淡薄,缺乏權限保護、流量管理方面的專業知識,導致極易感染各類手機病毒及惡意軟件[2]。
為防止惡意應用程序泄露用戶隱私數據,本文設計了一種面向Android手機應用程序的用戶隱私保護系統,當存在惡意軟件涉嫌竊取用戶敏感數據時,通過對用戶給予提示和警告來實現對用戶的敏感數據進行監控和保護。
本系統主要根據Android的操作系統API調用特點,利用了基于Android的靜態分析技術和重打包、簽名技術,對Android Apk包進行了加固,旨在實現對應用涉及到敏感信息訪問、傳播、修改的權限進行動態管理[2]。利用收集到敏感信息訪問記錄,做一系列數據分析處理,以圖表、日志的形式直觀地顯示給用戶,使用戶更容易去判斷應用的行為是否具有惡意性質。面向Android手機應用程序的用戶隱私保護系統的整體結構如圖1所示。

圖1 系統整體結構
系統分為客戶端和服務器兩大部分。其中,客戶端可以分為客戶端模塊、動態監控模塊、文本分析模塊、網絡通信模塊。客戶端模塊的主要工作是處理客戶端的業務需求,主要包括日志監控、隱私策略、可信度審計、流量監控、權限控制等功能;動態監控模塊主要是配合日志監控和隱私策略模塊,當受控應用嘗試使用敏感權限的時候會向監控模塊發出請求,監控模塊將其提交給隱私策略模塊和日志監控模塊處理。文本分析模塊主要是在應用發送短信、連接網絡、撥打電話的時候自動觸發。如果數據目的地存在風險,系統將對用戶予以警告。網絡通信模塊:該模塊負責未安全化的APK上傳和安全化后的APK下載。當客戶端嘗試連接服務器時,首先要發送自己的應用簽名,服務器完成認證后,再將APK數據包進行上傳[3]。當服務器完成加固后,會給客戶端推送一個消息。客戶端接受消息后,就能連接服務器,下載安全化后的APK。服務器主要由服務器業務模塊和數據通信模塊組成,服務器業務模塊主要處理服務器的業務需求,由服務器安全化、簽名認證組成;數據接收模塊主要監聽來自客戶端的上傳請求。當接收到客戶端的上傳請求時,系統產生一個中斷,服務器將來自客戶端的請求遞交給簽名認證模塊進行處理。
系統選擇使用Android應用加固技術來實現隱私權限動態監控、管理。這種技術和其他安全軟件相比優點在于:技術安全無需ROOT、易部署、實現效果好。利用了Android操作系統API調用方式的特點對應用進行加固,這樣既可以保證用戶能夠實時地管理、監控自己手機上應用的隱私權限使用,又不必擔心安全軟件因為獲取了Root權限可能會導致的權利濫用[4]。
當客戶端上傳未安全化的APK后,服務器首先要對APK進行加固,如圖2所示。服務端選取了基于反編譯技術的代碼語義理解的靜態檢測方法,并以Android APK應用程序文件作為輸入,對APK應用程序文件做逆向工程。通過Smali語法的靜態分析以及Dalvik字節碼的注入[5],分析加固應用風險組件的行為,在風險組件調用敏感資源或API時進行動態權限審核,并獲取其必要的參數和返回值的數據流,通過LocalSocket機制與Android手機端進行通信,從而在動態監控模塊進行后續的分析和篩選,最終將分析結果以多種形式反饋給用戶。

圖2 APK加固過程
當服務器端完成了APK的加固之后,會發送推送給客戶端,通知客戶端拉取云端安全化后的APK到本地,并在本地進行安裝、運行。這時安全化的應用便處于監控系統的監控中,當應用嘗試使用敏感權限時,會觸發加固代碼中的API,導致監控系統在底層捕獲到請求,并根據隱私策略進行裁決,如圖3所示。

圖3 隱私權限動態監控流程
系統利用Google官方提供的流量統計類TranfficStats,該類可用于獲取linux文件目錄/sys/class/net/中相關類別目錄下statistic中的rxbytes和txbytes,獲取收發流量的數據。另外,在/proc/uid_stat/{uid}/tcp_rcv文件里記錄著單個uid應用下載流量的字節,/proc/uid_stat/{uid}/tcp_snd 有該uid應用上傳流量字節,應用通過TransfficStats獲取其中的記錄,經過統計、排序后呈現給用戶。
數據圖形化技術將應用可信度分析后得到的數據進行圖形化的顯示。其中可信度圖形化部分使用了RGB色彩空間的漸變色去表現應用的可信度,在RGB顏色模型中,綠色的RGB為(0,255,0),紅色的RGB為(255,0,0),系統從顏色空間中選取兩點之間的直線作為漸變色來表現應用的可信度,其中綠色代表最安全,紅色代表最不安全。
服務器安全化模塊對未加固的APK包進行安全化加固,使監控系統對該應用實現動態權限管理。其處理流程為:首先對APK包進行靜態分析,使用Google提供的工具apktool。隨后對APK包中的AndroidManifest.xm l進行文本分析,提取出該應用所申請的權限列表。針對可能導致敏感數據訪問或傳播的權限進行權限映射。再根據Smali語法對Dalvik字節碼進行修改,并導入加固代碼。利用apktool工具對其重新編譯,采用jarsigner簽名,最后用zipalign進行字節對齊處理,得到經過加固的APK包。
手機端權限監控/控制模塊可實現權限控制及與加固應用實時通信。其處理流程為:使用Local-Socket與LocalServerSocket通信機制與安全加固應用建立Socket通信,LocalSocket作為客戶端建立與服務端的連接,發送數據。LocalServerSocket作為服務端使用,建立Socket監聽客戶端請求[9]。為了能夠記住用戶上次實施的權限控制策略,該子模塊采用SQLite用于存儲用戶之前配置的權限策略[5]。在手機端后臺開啟服務進行隱私行為動態監控,其中LocalServerSocket服務端用于接收隱私行為的產生,根據權限策略對所接收到的隱私行為進行攔截或允許的控制。行為結果通過異步流發送到相應已加固應用來進行處理。
可信程度分析模塊可實現可信程度分析排名、隱私行為統計圖等功能。對于每個第三方應用,采用TOPSIS法對其進行可信程度的計算和處理。首先對應用所具有的特征進行分析,提取了應用所具有的權限安全評分、應用所使用的敏感權限數、權限的最短五條記錄平均時間差等特征。
特征1:應用所具有的權限安全評分。
根據安全程度對Android權限進行了劃分,表1中group1中權限代表了隱私信息的出口。如果一個應用未申請信息出口相關的權限,那么它應當是相對來說安全的[6]。獲取設備隱私相關數據也是應用進行隱私信息竊取的一個重要條件,所以它的危險程度也是非常高的。應用往往還會擁有諸如電源管理、使用閃光燈、讀寫外部存儲、設置壁紙等權限,這些權限并不會對用戶的隱私安全造成威脅,只有在應用具有惡意傾向時可能會影響到用戶的使用體驗,綜合來說比較安全。

表1 權限危險度分組
根據得到的權限危險度分組表,可以將應用的類別分為以下 8種子集{(g1),(g2),(g3),(g1,g2),(g2,g3),(g1,g3),(g1,g2,g3),(?)}。如表2所示,其中(g1)表示該應用具有group1中的權限,不具有group2和group3中的權限。(g1,g3)表示該應用具有group1和group3中的權限,不具有group2中的權限,以此類推。利用這8種子集對應用的安全度進行評分,并將該評分作為應用可信度的第一個特征輸入。

表2 應用權限安全評分表
特征2:監控日志中檢測到的應用所使用的敏感權限數。
絕大多數情況下,一個應用完成所提供的功能一般只需要3~4個權限便可。但是很多應用在功能范圍之外使用多余的權限,這種現象很可能表示了該應用存在權限濫用的情況。監控中獲取到每個應用所使用的敏感權限,并對其進行統計。一般認為,應用使用的權限越多越可能造成用戶隱私的泄露,這個應用越不安全[7~8]。
特征3:監控日志中應用使用Group1權限和Group2權限的最短五條記錄平均時間差。
很多惡意應用程序通常采取的手段是通過偽裝成正常的軟件,在正常的功能使用中,偷偷獲取用戶敏感數據,并通過出口權限,將其快速發往目的地。這種行為通常十分快速、隱蔽、不易發覺。通過分析監控日志中的記錄,可以得到最短五條記錄的平均時間差。
特征提取完成后需要進行的是模型建立的工作。模型的建立過程如下。
Step 1:評價指標同趨化處理。特征1和3屬于高優指標,特征2屬于低優指標。特征2為絕對數,本文利用倒數法對其數據進行處理,使所有特征指標具有相同的變化方向[1,7]。
Step 2:歸一化處理。對同趨化的原始數據進行歸一化處理,并建立相應的歸一化數據矩陣。

Step 3:根據歸一化矩陣得到相應的最優化向量和最劣化向量,即得到有限方案中的最優方案Z+和最劣方案Z-。

Step 4:計算各個屬性指標與最優方案和最劣方案之間的距離Di。

Step 5:評價諸評價對象與最優方案的接近程度Ci。

Step 6:根據接近程度劃分區間,確定應用安全程度類別
日志監控模塊對應用的可疑行為,系統都會進行日志記錄,以便日后用戶能夠根據日志記錄,在權限管理方面實施更為有效的監控。其算法為:首先利用函數LogNotification()對應用的可疑行為進行監控,一旦出現涉及隱私權限的訪問,就生成一個日志信息的對象,并寫進數據庫。然后,一個AppDetailActivity對應日志內容的顯示,通過類AppLogAdapter來進行日志的顯示,通過ListView的形式。
此外,流量監控模塊主要監控手機應用軟件和系統軟件的流量使用情況。隱私策略模塊中用戶可以將應用進行分類,定制策略,通過這種方式去設置受監控應用的權限開關。
采用Emmagee測試方法對系統的CPU和內存使用情況進行測試,并選取國內主流安全軟件360安全衛士作為對比對象,從CPU占用率以及內存占有率方面使用兩種方法進行對比測試。Emmagee是監控指定被測應用在使用過程中占用機器的CPU、內存、流量資源的性能測試小工具。利用Emmagee框架分別對本系統和360手機安全衛士進行性能測試,為了保證測試的精確性,測試采集了150個樣本記錄進行分析。其中藍線為360手機安全衛士的數據,紅線為本系統產生的數據。

圖4 PSS(應用占用內存)對比
由圖4中可知,本系統應用占用內存基本穩定在30MB左右。與360手機安全衛士相比較,應用在占用內存方面是比360手機安全衛士要低的,說明系統占用內存上的性能比360手機安全衛士的要好。

圖5 應用CPU占用率對比
由圖5中可知,系統應用的峰值出現在1130s左右,CPU占用率并沒有超過20%。而360手機安全衛士的CPU占用率峰值出現在70s左右,約為23%。在進行大部分操作時候,系統應用的CPU占用率大約在10%左右,而360手機安全衛士的CPU占用率幾乎都超過了15%。對比結果是,系統應用在CPU占用率方面很明顯要比360手機安全衛士要低,說明了系統應用是在CPU消耗上,性能是優于360手機安全衛士。
本文設計實現了一種面向Android手機應用程序的用戶隱私保護系統,系統引入了基于Android的應用加固技術,利用Android的IPC機制和Dalvik虛擬機Smali語法,在解決安全性隱患的同時賦予用戶對于應用隱私權限使用更多的知曉權和管理權[15]。此外,系統還對單個應用的具體權限使用進行了分類統計,以動態的圖表形式,將數據以可視化的方式直觀地展現給用戶。系統通過基于對受監控應用隱私權限API實施攔截行為來實現文本分析,實現了對數據去向、類型、數據內容的實時截取,并以對話框的方式提示用戶并給予允許或拒絕的管理權,增加了系統的安全性。經測試,系統對計算資源占用率低,適用性好。