◎北京郵電大學網絡與交換技術國家重點實驗室信息安全中心 于成麗
北京信息科技大學理學院 吳秋新
北京郵電大學網絡與交換技術國家重點實驗室信息安全中心 郭燕慧
一種Android應用安全審核認證系統的設計方案
◎北京郵電大學網絡與交換技術國家重點實驗室信息安全中心 于成麗
北京信息科技大學理學院 吳秋新
北京郵電大學網絡與交換技術國家重點實驗室信息安全中心 郭燕慧
針對惡意APK文件泛濫問題,綜合靜態、動態安全檢測和APK重簽名技術,設計了一套安全的Android應用審核認證系統,它由基于Web應用的安全審核平臺和智能終端APK安全認證模塊構成。安全審核平臺利用強健的調度子系統完成了批量APK應用的提交、安全檢測、重簽名、發布及統計查詢功能,保證了發布到官方應用商城中APK的安全性;智能終端APK安全認證模塊引入了新型的重簽名技術,可有效判斷APK應用是否由“官方”安全認證。由此可見,該系統從“源”(應用商城)到“端”(智能終端)保障了APK文件的安全。
安全審核平臺;APK安全認證;靜態檢測;動態檢測;APK重簽名
近年來,隨著操作系統、生態體系、無線互聯技術的日益完善,智能電視成為繼PC、手機和平板電腦之后互聯網企業競逐的一塊全新領地,基于此,智能電視產業開始進入快速發展階段?!?014年智能電視行業媒介數據報告》顯示,截至2014年3月,國內智能電視銷售量已超過0.35億臺,智能電視應用數量更超過3.2萬款,其中,基于And?riod系統的智能終端操作系統已經占據了大半江山。在Android電視應用系統快速發展的同時,惡意APK應用、惡意代碼、詐騙軟件等隨之涌現。由于Android平臺的開放性,部分被收買的開發者在定制ROM時肆意破解篡改發布的APK軟件安裝包,在APK編譯后,通過植入大量的木馬病毒來竊取用戶信息,給Android用戶帶來了嚴重的隱私安全和經濟損失[1-3]。截至2014年7月底,惡意和高風險Android應用程序數量已經達到290萬,Zhou等[4]在對第三方電子市場研究后發現,惡意代碼往往通過篡改并將自身注入到正常應用程序(即重打包)的方法,達到偽裝并欺騙用戶下載的目的。鑒于以上原因,他們提出采用Fuzzy Hashing方法,以實現重打包檢測。實驗結果顯示,第三方電子市場5%~13%的應用程序被黑客進行了重打包。更多研究表明[5-6],現存眾多第三方電子市場由于普遍缺乏健全的Android應用審核認證機制,因此成為了惡意軟件的溫床。
智能電視和智能手機在應用方面不存在本質上的區別,在某種程度上,甚至可以認為是將手機上的應用照搬到電視上,因此,從飽受病毒侵擾的智能手機的現狀可以預見,未來智能電視也將出現大量的安全問題。為保障整個家庭的信息安全,減少用戶不必要的經濟損失,搭建并維護一套安全的Android應用審核認證系統勢在必得。
然而,某些Android應用審核系統單憑第三方安全檢測軟件對相關APK進行審核估計便發布應用商城,而當用戶下載安裝APK時,終端并沒有認證機制來保證其安全性。從某種意義上說,這樣審核機制治標不治本,它無法阻止不法分子先下載APK后對其篡改,然后再通過某些未被審核的應用商城轉到Android用戶。
基于此,本文提出了一套可從“源”(應用商城)到“端”(智能終端)保障APK文件安全的系統。
為徹底防御惡意APK,北京郵電大學網絡與交換技術國家重點實驗室信息安全中心設計了一套安全的APK應用審核認證系統。本系統除了利用靜態、動態、病毒檢測逐層加強APK安全性外,還可利用“官方”私鑰,在智能終端中引入新型的重簽名技術,通過對APK重簽,以保證其安全和可認證性。同時,在智能終端嵌入APK安全認證模塊,認證模塊在應用安裝過程中對APK進行驗簽,判斷它是否由“官方”安全認證,從而判定它是否為已被破解、被篡改過的打包“盜版軟件”,以有效確保Android用戶安全使用APK軟件安裝包。該系統通過實施“三重保障”安全檢測技術和終端重簽名驗簽安全認證機制,可從“源”(應用商城)到“端”(智能終端)保障APK文件的安全。
本系統為應用開發者和Android用戶提供了APK應用提交、安全測試、重簽名、發布、終端安全認證服務。此外,系統還通過一個基于任務隊列的調度子系統完成相關任務調度功能,具備高可靠性、高容錯性、高效、高擴展性等特點,能夠應對海量數據的并發處理和調度,同時可滿足負載均衡的要求,實現了平臺任務的高效處理和回收。具體設計框架及運行流程如圖1所示。
本Android應用審核認證系統主要由基于Web應用的安全審核平臺和智能終端APK安全認證模塊構成。以安全檢測技術為基礎,審核平臺能夠檢測發布到官方應用商城中的APK安全,而智能終端APK安全認證模塊可利用“官方”公私鑰證書對待安裝到終端的APK文件進行簽名驗證。
1.基于Web應用的安全審核平臺
基于Web應用的安全審核平臺主要由用戶層、應用層、數據層和網絡層構成,其架構如圖2所示。用戶層泛指面向平臺的使用對象,主要包括管理員、智能電視等靜態用戶和智能手機、平板電腦等動態用戶;應用層主要職責是接收用戶層分發的各種任務、調度并匹配平臺資源、回收安全檢測和重簽名相關結果信息,最終將信息傳遞給數據層;數據層以數據庫集群和磁盤陣列等形式完成各層對相應業務數據的快速存儲和安全訪問;網絡層為系統平臺網絡連接、數據流量控制、網絡運行狀態控制等最基本網絡數據傳送服務。顯然,應用層是審核平臺的核心,本小節將主要圍繞Web前端、調度子系統和功能引擎等三方面介紹平臺核心應用層的體系結構。
Web前端:Web前端的主要功能是完成與用戶層的交互工作,通過端口監聽、查詢MySQL和MongoDB數據庫完成檢測結果的查詢與分析、數據更新與整合、文件上傳與下載、APK應用狀態查詢、系統管理等功能。
調度子系統:調度子系統的主要功能是實現批量任務接收、調度、結果回收、結果數據存儲等功能?;谌蝿贞犃泻托奶瓷錂C制,調度子系統根據評估系統性能,調度并匹配系統資源進而根據匹配結果分發任務,以保證系統資源池服務器集群的相對負載均衡。

圖1 Android應用安全審核認證系統
它主要包括3部分:
1)外節點,調度子系統的對外接口。具有接收上層下發任務及檢測結果、更新應用狀態、同步安全檢測規則庫等基本數據庫操作功能。
2)中心節點,調度子系統任務調度、分發的核心部分。首先,任務隊列模塊根據提交的任務形成待分配的任務隊列并提交給任務調度模塊;其次,利用指定的調度算法,任務調度模塊根據子節點心跳信息匹配資源與分配任務,形成待下發任務隊列并向指定的資源節點下發任務;最后,當任務完成后,結果回收模塊回收結果并存儲數據庫。
3)子節點,調度子系統的任務下發執行及系統性能評估部分。依據中心節點的任務下發指示、執行樣本檢測與驗證業務、回傳檢測結果至上層節點、根據收集的系統相關軟件或硬件性能(如CPU使用率、內存占用率等)信息持續向中心節點發送心跳。
功能引擎:功能引擎是具體功能執行模塊,將具有特定安全策略的軟件部署在服務器中Linux虛擬機上,一般有靜態、動態、病毒檢測引擎和APK重簽名服務。
2.智能終端APK安全認證模塊
如圖3所示,智能終端APK安全認證模塊主要由嵌入APK安裝器中驗簽接口、安全代理(實現驗簽核心工作的后臺應用)和公鑰證書存儲區組成。
具體流程如下:
首先,APK安裝器接收待激活安裝的SignedApp.apk應用后,調用驗簽庫中對外驗簽接口Verify(App路徑)啟動安全代理。
其次,安全代理在公鑰證書存儲區獲取公鑰證書,調用內部驗簽接口Verify并結合公鑰證書對已簽名的SignedApp.apk進行驗簽。
最后,安全代理依次通過內部驗簽接口、外部驗簽接口將驗簽結果返回安裝器。

圖2 安全審核平臺體系結構

圖3 APK安全認證模塊結構流程
由于該認證模塊僅在APK安裝器中嵌入了輕量級的驗簽接口,而驗簽過程中的各種復雜計算、公鑰證書的提取等流程均由安全代理完成,因此可在有效地實現模塊分離的同時,保證APK安裝器安全穩定地運行。
1.安全檢測技術
安全審核平臺的安全性由靜態、動態、病毒檢測技術逐層提供安全保障。首先,靜態檢測發現已知惡意代碼片段;其次,動態檢測發現未知惡意行為;最后,病毒檢測把關審查文件是否被病毒、蠕蟲、木馬及各類惡意軟件感染。病毒檢測利用python編寫的自動化檢測腳本,上傳APK到由42個第三方病毒檢測引擎組成病毒檢測服務器完成安全檢測,此處不再贅述。下面主要介紹靜態和動態檢測原理。
1)靜態檢測
基于安全規則庫的設計,靜態檢測以APK反編譯和面向對象語言的源代碼靜態分析技術為核心發現已知惡意代碼片段。其中,安全規則庫是從源代碼角度對Android應用中常見的耗費、隱私竊取等惡意行為的關鍵API(應用程序編程接口)調用進行總結和風險評級,來編寫相應的檢測規則。靜態檢測原理如圖4所示。
首先,利用Dex-Class、Class-Java、Xml文件等反編譯器對Android應用程序class.dex、AndroidManifest.xm l文件進行反編譯。
其次,對反編譯后Java源代碼進行詞法、語法解析,將分析結果轉換成抽象語法樹(AST),匹配靜態安全規則庫中API對AST進行控制流、數據流分析。
然后查詢引起惡意行為的關鍵API調用,數據流追蹤被引入敏感數據的API,精確定位到程序至懷疑出現惡意行為的關鍵代碼段。
最后,安全風險報告器出靜態檢測結果。
2)動態檢測
靜態檢測只能檢測出特征庫中已有的惡意代碼樣本,無法檢測未知的惡意代碼,同時它很難應對代碼混淆、反射、加密等情況。針對靜態檢測的不足,需要進一步實施動態檢測。動態檢測分析主要在受控環境(真機、模擬器)中運行一個應用程序并檢測其行為,可以在程序運行期間對尚未添加入惡意代碼庫的新型程序進行甄別。
動態檢測技術,一方面包括利用Monkeyrunner等自動化測試技術對應用軟件的自動安裝、啟動、運行測試、卸載應用程序,并對整個測試過程的界面進行截圖保存;另一方面從Linux內核層安全監控出發,利用系統調用攔截機制以實現內核層的Hook功能。內核層安全監控模塊是用戶自定義編寫的,利用LKM技術動態加載到系統內核中,在動態測試的過程中,監控應用程序運行中的惡意行為,比如發送短信、竊取用戶隱私文件、后臺自動聯網等。當APK應用有調用行為時,內核層監控模塊會記錄調用行為,通過通信Netlinksocket,將信息傳遞給用戶態的程序,并保存相應的檢測報告,其具體步驟如圖5所示。

圖4 靜態檢測原理

圖5 動態檢測原理
2.APK重簽名技術
智能終端APK安全認證模塊由新型的APK重簽名技術保證,它利用“官方”公私鑰對待安裝的APK進行重簽名驗簽。
APK簽名是Android系統對APK包完整性和發布機構唯一性的校驗機制之一,其借助于SHA1、RSA等經典數字簽名算法[7-8],可保證APK的安全性、完整性和不可否認性。簽名后的APK包中會增加一個目錄文件“/ META-INF”,含有3個開發者簽名的信息文件:MANI?FEST.MF、CERT. SF和CERT.RSA,基本流程如圖6的左半部分。然而,跟蹤Android系統驗簽源碼發現,驗證3個簽名信息文件雖然可以校驗APK,但并沒有對META-INF作自校驗處理。同時,如果在META-INF中添加其他文件并不會影響APK系統驗簽、安裝、運行和更新。
基于此,試圖在APK系統簽名之上,基于信任鏈傳遞機制設計一種新型的APK重簽名算法,以保證認證模塊的高效安全性。以 Android系統原生簽名為信任根,將信任不斷向上傳遞到APK重簽名流程。重簽名時,僅對MANIFEST. MF、CERT.SF、CERT.RSA重簽,對其他文件不作任何處理,并將重簽名文件Sign.sig和公鑰鑰證信息文件Info.txt獨立存放到META-INF下,具體流程如圖6右半部分所示。驗簽時,通過“官方”公鑰證書利用Sign.sig對MANIFEST. MF、CERT.SF、CERT.RSA進行驗簽,驗簽結果對用戶進行風險提示,用戶自行選擇是否繼續安裝。該過程不僅可保證開發者自身簽名文件的完整性,而且在APK繼續安裝時,可進一步驗證APK中所有文件的完整性,這是由于APK文件一旦被改動將會導致驗簽無法順利通過。
本節分別針對該審核認證系統中的安全審核平臺和終端認證模塊進行測試。
1.安全審核平臺
安全審核平臺對1000個APK應用進行安全審核測試,其中包含400個公認的惡意應用(如:近期超級手機病毒“XX神器”)分10個批次下發。
在測試原型系統及實驗平臺配置中,包括服務器(3臺),采用雙路16核CPU,4Gbyte內存,CentOs6.2,CPU為core(TM)i3-2120CPU,3.30GHz內存大小4Gbyte,64位Windows7系統。其中,調度節點、安全檢測引擎、數據庫都以Linux虛擬機的形式部署在服務器上。
系統實驗部署示意圖如圖7所示。
該系統的功能、性能等測試結果如下:
1)在安全審核結果方面,檢測出正常應用數量為598,惡意引應用數量為402,此結果初步顯示檢測應用的誤判率僅為0.20%。
2)以100個應用任務作為一批次下發到檢測引擎,檢測發現每次總耗費時間不超過1.3min;而對于每單次任務,平臺從接收到調度平均不超過0.15min,從接收結果到回收完成不超過0.18min。
(3)靜態、動態、病毒檢測平均時間分別為2~3min、5~15min、不超過1min(與網絡速度有關);平均大小為31.8MbyteAPK文件的重簽名時間為93ms左右。

圖6 APK重簽名流程

圖7 系統測試部署圖
由此可見,安全審核平臺在高準確率的安全審核前提下,可高效地完成批量APK應用的靜態、動態、病毒檢測和重簽名調度處理工作。
2.終端APK安全認證模塊
該次測試模擬真實電視用戶的裝機環境,選取了Android智能電視裝機必備的10款不同APK應用(譬如安全工具、文件管理、購物、影音、生活等)為例進行測試,測試原型系統配置中,驗簽移動智能終端的配置為:CPU(1.45 Hz),RAM(2.00 Gbyte),OS(Android 4.2),測試結果如表1所示。
測試表明,Android用戶在安裝Android智能電視中如上10款APK應用時,利用本系統內置的APK安全認證模塊平均所需等待時間僅為0.3 s,對用戶安全體驗滿意度影響微小。

表1 Android智能電視中的10款不同APK應用驗簽測試結果
本文綜合靜態、動態、病毒安全檢測和APK重簽名技術,設計了一套安全的Android應用審核認證系統,它由基于Web應用的安全審核平臺和智能終端APK安全認證模塊構成。該系統通過采用“三重保障”安全檢測技術和終端重簽名驗簽安全認證機制,可從“源”到“端”保障了APK文件的安全使用。同時,該系統能夠應對海量數據的并發處理和調度,滿足負載均衡的要求,實現平臺任務的高效處理和回收,具備高效、高可靠性、高容錯性、高擴展性等特點。通過對第三方應用市場Android應用的分析檢測以及對系統誤報和漏報測試表明,本系統審核認證效果良好,具備高實用性、靈活性和可擴展性等優點,也具有較高的應用價值和推廣價值。而如何聯合官方安全機構、應用商城及各大智能電視終端廠商建立并維護一套可監管的、健全的、標準化的APK應用安全審核認證系統還需要集體的力量。
[1]閆梅,彭新光.基于Android安全機制的權限檢測系統[J].計算機工程與設計,2013,(3):85-88.
[2] 李靜華,慕德俊,楊鳴坤.Android惡意程序行為分析系統設計[J].北京郵電大學學報,2014(S1):104-107.
[3]史立原,譚金蓉.安卓電視機芯智能升級的應用研究[J].電視技術,2014,38(6):58-61.
[4]ZHOU W,ZHOU Y,JIANG X,et al. Detecting repackaged smartphone appli?cations in third-party Android market places[C]//Proc.the second ACM Confer?ence on Data And Application Security and Privacy.[s.l.]:IEEE Press,2012:317-326.
[5]BORJA S,IGOR S,CARLOS L,et al. Permission usage to detect malware in Android[C]//ProC.International Joint Conference CISIS’12-ICEUTE’12-SO?CO’12 special sessions,[s.l.]:IEEE Press,2012:289-298.
[6]BURGUERA I,ZRUTUZA U,NADJM S. Behavior-basedmalware detection system for Android[C]//Proc.the 15THACM Workshop on Security and Privacy in Smartphones and Mobile Devices.[s.l.]:IEEE Press,2011:15-26.
[7]DANGRAD I.A design principle for hash functions[C]//Prol.In:Crypto LNCS.[s.l.]: IEEE Press,1989:416-427.
[8]RIVEST R L,SHAMIR A,ADLEMAN L M.A method for obtaining digital sig?natures and public-key crypto-systems [J].Communications of the ACM,1978(21):120-126.
于成麗(1989—),碩士生,主要從事智能終端安全保障、移動互聯網安全檢測、安全加密、密碼學、數字水印等研究;
吳秋新(1967—),副教授,碩士生導師,主要從事密碼學、信息安全、可信計算等研究;
郭燕慧(1974—),副教授,碩士生導師,主要從事內容安全、軟件安全、機器學習、知識發現等研究。
TP393.08
A
【本文獻信息】于成麗,吳秋新,郭燕慧.一種Android應用安全審核認證系統的設計方案[J].電視技術,2014,38(20).