摘 要
當今智能手機普及程度已經很高,在全球手機操作系統市場上 Android 系統的占有率高達 83.6%,由于 Android 系統的開放性和普及性,導致 Android 應用遭受的攻擊非常嚴重,諸如靜態逆向分析、惡意代碼植入、盜版侵權等,這都為軟件開發商和手機用戶造成了極大的損失。由于 Android 系統本身未采取更多針對應用的安全防護措施,并且 ART 虛擬機取代 Dalvik 虛擬機已成為未來不久的必然趨勢,使得基于 ART 虛擬機的 Android 應用安全成為亟待研究的課題。
針對 Android 應用易被靜態逆向分析,提出了一種基于不透明謂詞的隱藏分支路徑代碼混淆方案,增強了應用抵御靜態逆向分析的能力。針對 ART 虛擬機代替Dalvik 虛擬機導致部分原有的軟件防護機制失效的問題,提出了一種在該運行機制下切實可行的應用加固方案,該方案基于分包技術,在不影響應用運行效率的前提下,對應用核心代碼經行加固處理,在應用運行時再進行動態加載,保證了應用代碼的機密性和完整性,同時不影響該運行機制下的高效性。
設計并實現了基于 ART 虛擬機的 Android 應用安全防護系統,并從可行性、兼容性、安全性和運行效率方面對其進行了實驗分析,實驗結果表明,該系統有效提升了應用安全防護性能并保證了其對應用啟動效率的影響是在可接受范圍之內的。
關鍵詞: Android,ART, 動態加載, 應用加固, 代碼混淆
ABSTRACT
Smartphone has been widely used nowadays, and the global mobile phone market share of the Android operating system is even up to 83.6%. Since Android is open and widespread, attacks suffered by the Android applications are particularly serious, such as static inverse analysis, malicious code injection, piracy and copyright infringement and so on, which cause great loss to the software firms and users. Android itself has not taken more security measures for the applications, and the ART virtual machine replacing the Dalvik virtual machine has become an inevitable trend in the near future. Now more and more security research institutions begin to pay more attention to the ART-based Android applications security.
The dissertation suggests the hidden path branch obfuscation method based on the opaque predicate to enhance the ability to resist static reverse analysis since that Andriod applications are easy to reverse analysis.For the problems caused by the failure o f part of the original software protection mechanism when the ART virtual machine takes place of the Dalvik virtual machine,this dissertation puts forward a feasible application protection scheme under the ART operating mechanism. The scheme is based on packet technology and reinforces the core codes of the application, on the premise of not affecting the operation efficiency. The scheme also ensures the confidentiality and integrity of the application code in the run-time dynamic loading, and not affecting the efficiency of the operation mechanism.
The dissertation designs and implements the ART-based Android applications security protection system,and makes an experimental analysis to the feasibility, compatibility,security and operating efficiency.The finds indicate this system not only effectively improves the applications security protection performance but also ensures the impact of the applications startup efficiency within the acceptable range.
Key words: Android,ART, Dynamic loading, Applications reinforcement, Code obfuscation
隨著近年來的移動互聯網蓬勃發展,智能手機已經成為現在人們生活必不可少的一部分,這其中扮演重要角色的就是手機應用,手機軟件的安全性直接影響著軟件開發商和手機用戶的隱私財產安全。由于網絡共享技術的不斷提升,做“黑客”成本變的越來越低,在利益的驅使下,越來越多的人從軟件入手通過逆向分析,惡意代碼注入、重打包等技術嚴重危害軟件的安全,使得反軟件防護和軟件防護兩種技術在矛與盾的對抗中螺旋升級,移動應用防護工作仍然是熱門的研究課題。
二十一世紀初,在科技水平的飛速發展中,手機的概念已被重新定義,它不再僅僅是通話發短信的工具,更是集通信、辦公、多媒體、社交、生活、娛樂等于一體的智能隨身設備,重要性不言而喻。然而提供這一切人機交互的平臺就是移動應用軟件,2015 年中,百度公司公布了《2015 年上半年中國互聯網安全報告》 ,報告中指出,智能手機病毒迅猛增長,病毒應用新增的數量高達到 127.31 萬個,環比增長了 240%。其中金融支付類盜版應用中,購物類應用占 32%,銀行類應用占31%,其中,某裝機量排名靠前的團購應用盜版甚至正版與盜版比例接近 1:1。移動應用安全形勢非常嚴峻,不容輕視,嚴重影響著開發商和手機用戶的隱私財產安全[1]。
目前全球智能手機市場基本被谷歌公司的 Android 系統和蘋果公司的 iOS 系統所統治,根據 StrategyAnalytics 發布的最新數據顯示,到 2015 年第三季度,Android和 iOS 兩款操作系統總共占了全球智能手機市場近 96%的份額。其中 iOS 占有了12.3%的市場份額,而 Android 則占了 83.6%的市場份額,依舊保持其霸主地位[2]。
當然,Android 系統的開放性也是把雙刃劍,相比于非開源的 iOS 系統,Android更易遭受移動應用攻擊,開發者能夠任意修改系統代碼,造成代碼分裂,使得現有的安卓系統更加混亂,為各種安全漏洞與惡意程序的入侵提供了可乘之機。
同時,Google 公司也在為 Android 應用安全不懈努力,不斷更新迭代版本替換老舊版本修復之前系統存在的漏洞,解決系統安全存在的問題,按照谷歌 2015 年11 月份公布的最新統計數據顯示, Android 4.4 是使用率最高的版本,該版本的市場占有率高達 36.6%。
現在的 Android 應用市場中,盜版、被篡改、被植入惡意代碼的應用屢見不鮮,針對這一現象,Google 公司、應用開發商和應用安全防護研究人員致力于解決這些問題,多種 Android 應用防護措施被提出,總結如下:
1) 代碼混淆技術:目前最常見的代碼混淆技術是有 Collberg 等在[8,9]
提出使用的代碼變換混淆技術,基本思路是在保證程序功能一致的前提下,對程序經行轉換并轉換后程序難于被攻擊人員使用逆向工具所理解,一般通過將變量加密,函數、類名無意義化,它的目的是將攻擊者的攻擊行為帶來的代價遠遠超過自身承受范圍,使得其最終放棄[10,11],在文獻[12]、[13]和[14]中也提出了基于代碼混淆的不同策略來達到更好的代碼保護效果。
2) 代碼自修改技術:自修改技術就是執行某段代碼之前通過程序當中自修改代碼模塊對代碼進行修改之后再執行的技術[15,16]。早期該方法使用于校驗軟件防篡改技術上,對軟件完整性起到了有效的保護作用[17]。2007 年 Yuichiro Kanzaki在文獻[18]提出了新的代碼自修改方案,它將自修改代碼隨機放在程序代碼段以外的地方通過事先設定好的定位方式運行時重構,起到了很好的軟件防護作用。
3) 代碼加固技術:加固技術是將 Android 系統代碼部分的 DEX 文件經過加密加固處理,處理后的程序可以有效的阻止對程序的逆向反匯編分析,加固后的程序當執行時,將先在內存中進行解密操作,然后將解密后的程序控制流程轉交給已解密的程序[18,19]。采用加殼的加固技術來保護代碼代碼安全的方式安全性很高,逆向分析者除非破解被加固的外殼程序,否則幾乎無法進行逆向分析和對代碼內容進行修改處理。
4) 數字簽名技術:Android 系統本身帶有數字簽名技術,并且強制要求每個安裝的應用必須經過數字簽名才能安裝,必須經過數字簽名的方式來標識應用程序的開發者和該應用程序之間建立相互信任關系,由開發者自行完成數字簽名過程,這項技術保證了應用的完整性和合法性[20,21]。
5) 強制訪問控制技術:乜聚虎等人在[22]提出了一種顯著加強 Android 系統安全性的方法,其中采用了的強制控制策略,論文通過每個進程對目標程序進行細粒度地訪問權限的有效管理,從而最大限度地對 Android 系統的訪問控制進行了精細化[23]。這同時還有助于該操作系統的維護和管理。
6) 軟件水印技術:軟件水印是目的是將主體識別信息和權限申明內容隱藏在目標軟件中,Collberg 等在文獻[24]提出了動態圖水印的技術,它的目的是將由動態生成的圖結構拓撲中來實現軟件水印的隱藏,使得該代碼部分很難被分析。Akito等在文獻[25]提出了一種水印算法,它面向 Java 代碼且核心是明文的 Java 代碼中加入冗余無意義的代碼,該段冗余代碼不會被真正執行[28]。
安卓應用安全防護系統開發設計:
Baksmali 工具反編譯加固后 DEX 文件運行結果
核心代碼占總代碼量不同情況下安全防護前后啟動時間對比圖
Zygote 啟動進程
Dalvik、ART、JVM 的關系
Dalvik 和 ART 虛擬機下性能比較
原 Java 代碼
反編譯后的代碼
目 錄
摘 要
Abstract
1 緒論
1.1 研究背景
1.2 國內外研究現狀
1.3 論文主要工作及論文組織結構
2 Andorid 應用安全威脅及安全防護技術
2.1 Android 系統的虛擬機
2.2 Android 應用安全威脅
2.3 Android 應用安全防護技術
2.4 本章小結
3 基于 ART 虛擬機的應用安全防護技術研究
3.1 基于不透明謂詞的隱藏分支代碼混淆技術
3.2 基于 ART 虛擬機的應用加固技術
3.3 本章小結
4 基于 ART 虛擬機的應用安全防護系統實現
4.1 應用防護系統架構設計
4.2 應用防護系統模塊實現
4.3 應用防護系統總體流程
4.4 本章小結
5 實驗與分析
5.1 實驗環境準備
5.2 可行性分析
5.3 兼容性分析
5.4 安全防護可靠性分析
5.5 防護前后效率分析
5.6 本章小結
6 總結與展望
6.1 論文工作總結
6.2 后續工作的展望
致 謝
參考文獻
(如您需要查看本篇畢業設計全文,請您聯系客服索。
將微信二維碼保存到相冊
打開微信掃一掃從相冊識別
1.點擊下面按鈕復制QQ號
3008637063
2.打開QQ→添加好友/群
粘貼QQ號,加我為好友