91精品人妻互换日韩精品久久影视|又粗又大的网站激情文学制服91|亚州A∨无码片中文字慕鲁丝片区|jizz中国无码91麻豆精品福利|午夜成人AA婷婷五月天精品|素人AV在线国产高清不卡片|尤物精品视频影院91日韩|亚洲精品18国产精品闷骚

您當前位置:首頁 > 新聞頻道 > 行業(yè)動態(tài) > 正文
防止Android逆向工程攻擊最佳方案

     作者:鄭曉蒙 

    本文首先介紹Android系統(tǒng)的安全機制和WebView組件特性;然后總結(jié)如何通過WebView組件進行Android應(yīng)用與Web頁面的交互,以及攻擊者如何利用WebView組件這種功能特性發(fā)動攻擊行為,分析得出此類攻擊的前提是對應(yīng)用程序的逆向分析;最后提出一種使用應(yīng)用加固的技術(shù)方案防止Android逆向工程,從而為Android應(yīng)用程序進行安全防護,避免此類安全威脅發(fā)生。

    1相關(guān)研究

    Android系統(tǒng)為使各應(yīng)用程序之間相互獨立,提供了一種“沙箱”隔離機制,系統(tǒng)上每個應(yīng)用程序運行在各自的虛擬機中,每個應(yīng)用都擁有獨立的地址空間和資源,任何應(yīng)用程序需要訪問系統(tǒng)資源或其他應(yīng)用程序資源須在其配置文件中進行聲明。

    然而,Android平臺提供的WebView組件破壞了這種“沙箱”隔離機制。WebView為Android應(yīng)用程序提供了不需依托于瀏覽器而實現(xiàn)加載和顯示W(wǎng)eb頁面的功能,同時可實現(xiàn)Web頁面中的JavaScript代碼與Android應(yīng)用中Java接口函數(shù)進行交互。WebView提供了addjavascriptinterfaceAPI,使來自Web頁面的JavaScript代碼可以調(diào)用Android應(yīng)用中的Java代碼。此外,WebView提供的loadUrlAPI實現(xiàn)了應(yīng)用程序中的Java代碼調(diào)用Web頁面中的JavaScript代碼的功能‘5J。WebView組件提供的功能打開了Web頁面與Android應(yīng)用程序之間交互的渠道,使網(wǎng)絡(luò)數(shù)據(jù)與本地Android應(yīng)用可以相互調(diào)用。

    使用Android逆向分析工具對Android應(yīng)用進行反編譯,可以獲得其源代碼,通過分析源代碼可以找出應(yīng)用程序提供的WebView接口并分析其業(yè)務(wù)邏輯,這種逆向分析會暴露應(yīng)用程序可被外部調(diào)用的WebView接口,該類接口如果被攻擊者惡意利用將給Android應(yīng)用或系統(tǒng)本身帶來安全隱患。

    2 WebView組件安全威脅

    Webview主要為Android應(yīng)用提供了兩種功能:一種是利用addjavascriptInterfaceAPI,可以實現(xiàn)Web頁面中的JavaScript代碼調(diào)用Android應(yīng)用中的Java代碼;另一種是利用loadUrlAPI實現(xiàn)Android應(yīng)用中的Java代碼調(diào)用Web頁面中的JavaScript代碼;谶@兩種功能,本文總結(jié)了兩種攻擊模型:1)來自惡意網(wǎng)頁的攻擊。2)來自惡意應(yīng)用的攻擊。

    2.1來自惡意網(wǎng)頁的攻擊

    WebView使Web頁面中的JavaScript代碼可以調(diào)用Android應(yīng)用程序中的Java代碼進而執(zhí)行程序或訪問系統(tǒng)資源。該功能由addjavascriptlnterface接口實現(xiàn)。Android應(yīng)用程序開發(fā)過程中,在WebView組件中使用addjavascriptlnterface接口,聲明Java類,該類中的public函數(shù)都可以被外部調(diào)用,在SDK19版本以后,所有public類需添加Javascriptlnterface注釋,添加注釋后的接口可以被外部JavaScript代碼調(diào)用,調(diào)用關(guān)系如圖1所示。

    在Android程序中為MyWebView類添加了addjavascriptInterfaceAPI,同時提供了sendMessage()接口函數(shù),通過這一做法,可以通過調(diào)用該Java接口實現(xiàn)發(fā)送短信功能,程序代碼如下所示:

    wehview.addjavascriptlnterface(new MyWehView(),“MyWebView”)

    @Javascriptlnterface

    public sendMessage(String phone_num, String content);

    在Web頁面的代碼中body域內(nèi)插入構(gòu)造的JavaScript腳本,當頁面在WebView中打開時,該JavaScript代碼將自動執(zhí)行,可以在Android客戶端實現(xiàn)編輯短信內(nèi)容并發(fā)送到目的號碼的功能,程序代碼如下所示:

    <script>

    <body onload=”window.MyWebView.sendMessage(‘1 555521 5556’,‘Hello Worlcl.’1”>

    </body>

    </script>

   當使用addjavascriptlnterf'ace接口時,使JavaScript代碼可以通過Java接口實現(xiàn)程序功能,這樣就為惡意Web頁面打開了一個通道,可用來調(diào)用本地程序。該攻擊模型如圖2所示。

    Android應(yīng)用程序受到來自惡意Web頁面的攻擊,應(yīng)用程序使用WebView提供的addjavascriptlnterfac:e接口,Web頁面中的JavaSCript代碼調(diào)用了應(yīng)用程序的該接口,惡意執(zhí)行程序可實現(xiàn)某些功能或竊取、破壞系統(tǒng)資源。

    2.2來自惡意應(yīng)用的攻擊

    Android應(yīng)用可以通過WebView使Java對象調(diào)用Web頁面中的JavaScript代碼,該功能主要通過loadUrl實現(xiàn)。如果URL字符串起始于“javascript:”,后接JavaScript代碼,IoadUrl就會在WebView打開的Web頁面中執(zhí)行JavaScript代碼,調(diào)用關(guān)系如圖3所示。

    下面舉例說明,Java代碼為Web頁面添加字符串“HelloWorld”,然后將cookie設(shè)置為空,代碼如下:

    String str=“<div×h2>Hello World</h2×/div>":

    wchVicw.1[}adUrl(“javascript:document.appendChild(str);”);

    webView.loaclUrl(”javascript:documenl.c:ookie=’’;”);

    插入的JavaScript代碼和Web頁面中的代碼具有同樣的權(quán)限,WebView組件通過loadUrlAPI可以支配Web頁面的DOM( doc,ument object model)對象和cookies,并調(diào)用頁面中的JavaScript代碼,甚至給服務(wù)器發(fā)送請求。loadUrl為應(yīng)用程序控制Web頁面提供了豐富的功能,但也可能為惡意軟件提供了獲取用戶隱私的捷徑,此類威脅模型如圖4所示。

    來自惡意應(yīng)用的攻擊是假設(shè)用戶安裝了攻擊者開發(fā)的惡意Android應(yīng)用程序,而且該程序使用了WebView組件,誘導用戶使用該惡意程序的WebView組件訪問Web服務(wù),惡意應(yīng)用程序可以借此盜取用戶個人信息或者誘導用戶訪問惡意網(wǎng)站。

    3 WebView組件安全防護方案

    來自WebVi。w的主要安全威脅在于Android應(yīng)用程序向外部暴露了其內(nèi)部WebView接口,攻擊者通過分析這些接口函數(shù)從而構(gòu)造惡意的網(wǎng)絡(luò)攻擊應(yīng)用程序。Android應(yīng)用程序是Apk類型文件,我們不能從中直接獲取到Java源碼,因此需要對Apk進行反編譯,通過靜態(tài)分析技術(shù)獲取應(yīng)用程序中提供的WebView接口。Apktool是一種常用的Apk反編譯工具,通過Apktool反編譯Apk,解析其中的dex文件,查看編譯后的class文件,檢索并分析class文件中W。bView組件提供的接口函數(shù),從而獲得WebView組件提供給外部調(diào)用的接入點。攻擊者可構(gòu)造JS腳本調(diào)用該接口,將JS腳本注入Android應(yīng)用運行過程中產(chǎn)生的Response消息,當應(yīng)用程序加載Response消息時,執(zhí)行接口函數(shù)功能實現(xiàn)惡意操作,具體流程如圖5所示。

    從WebVi。w的分析方法可以得出利用WebView組件進行的攻擊,主要基于Android逆向工程,對Android應(yīng)用進行反編譯,分析出WebView組件的業(yè)務(wù)邏輯,從而進行攻擊。And,。id逆向工程指對于已經(jīng)發(fā)布的Android應(yīng)用程序,可以通過逆向工程得到其源代碼,從而分析其業(yè)務(wù)邏輯,通過逆向分析的方法可以分析程序是否存在安全隱患和漏洞。因此,為了防范針對WebView的惡意攻擊行為發(fā)生,需要防范對Android應(yīng)用進行逆向工程攻擊。

    3.1 Android應(yīng)用程序加固方案

    本文提出一種對Android應(yīng)用程序進行加固的解決方案,通過對Apk中的dex文件加密,防止對Android應(yīng)用程序的逆向分析。本加固方案思路為對dex文件加密并將加密后的dex文件與加密密鑰一起存儲在bin文件中,使用動態(tài)鏈接庫提供Apk運行時對dex文件解密和加載功能,使用殼文件替換原Apk中的smali文件,殼文件同時用于啟動動態(tài)鏈接庫。

    方案中涉及到的名詞及解釋如下:

    1) Apk:Android應(yīng)用程序安裝包。

    2) dex文件:Android平臺上的可執(zhí)行文件。

    3) bin文件:加密dex文件后生成的二進制文件。

    4) manifest文件:Android應(yīng)用程序開發(fā)過程中的配置文件AndroidManifest.xml。

    5) smali文件:對Apk反編譯后得到的文件。

    6)殼文件:.。mah類型文件,解析manifest文件后生成,用于替換原smali文件。

    7)動態(tài)鏈接庫:.so類型文件,用于提供解密和加載dex文件功能。

具體加固過程為:首先使用Apk解壓縮工具解壓縮Apk得到dex文件,對dex文件加密得加密后的dex文件,將加密后的dex文件與加密密鑰一起存入bin文件。再通過Apk反編譯工具對Apk進行反編譯,得到manifest文件和smali文件,解析manifest文件并生成殼文件替換原smali文件。最后將bin文件、殼文件和動態(tài)鏈接庫一起重打包并答名得到加固后的Apk。加固流程如圖6所示。

    本加固方案具體步驟如下:

    1)對加固前Apk解壓縮得原dex文件,加密dex文件,將加密后的dex文件與加密密鑰一起生成bin文件。

    2)對加固前Apk反編譯,得到manifest文件和small文件,解析manifest文件并生成殼文件替換smali文件。

    3)將動態(tài)鏈接庫與步驟1)、2)中得到的文件一起重打包得到加固后Apk。

   對Apk加固后,加密了其中的dex文件,使Androicl逆向工程無法解析,達到保護程序源代碼的目的,在安裝運行Apk過程中,由動態(tài)鏈接庫實現(xiàn)對dex文件的解密和加載過程,使Apk可以正常使用。該方案為防范針對WebView組件攻擊提出,但并不限于防范針對WebView組件的攻擊,還可以為Android應(yīng)用程序提供防范其他基于Android逆向工程的攻擊。

    3.2分析與評估

    本方案通過Android應(yīng)用程序MyBrowser.apk檢驗加固方案效果,使用Android逆向工具Apktool和dex2j ar對加固前和加固后的應(yīng)用程序進行逆向分析,通過對MyBrowser.a(chǎn)pk中classes.dex文件反編譯得到j(luò)ar包,在jar包查看工具id-gui下杏看工程源碼,加固前如圖7所示。

    從圖7可以看出Apk中提供了Javascriptlnterface接口函數(shù)browseExternaIURL,該接口實現(xiàn)打開URJ。功能,攻擊者通過在Web頁面中注入惡意的JavaScript代碼調(diào)用該接口可以實現(xiàn)打開釣魚網(wǎng)站等目的。經(jīng)過加固后得到MyBrowser.apksign.a(chǎn)pk,使用apktool反編譯并查看其源碼,結(jié)果如圖8和圖9所示。

    可以看出使用Apktool無法對加固后的Apk進行正常反編譯,同樣無法查看到其源代碼,只能查看到殼文件提供的MyDemoActivity,實現(xiàn)了對其源代碼的隱藏。經(jīng)過加固技術(shù),Apk實現(xiàn)了對dex文件的加密,可以防止逆向工程分析。

    4結(jié)束語

    本文在歸納總結(jié)了Android平臺WebView組件特征的基礎(chǔ)上,分析了兩種基于WebView組件的攻擊模型,指出針對WebView組件攻擊的前提是通過Android逆向工程對Android應(yīng)用進行逆向分析,得到WebView組件接口。攻擊者根據(jù)WebView接口信息,篡改Web頁面中的JavaScript腳本調(diào)用該接口,實現(xiàn)攻擊應(yīng)用程序的目的。因此,我們提出了通過Android應(yīng)用程序加固技術(shù)來防止Android逆向工程,最終實現(xiàn)防范針對WebView組件的攻擊的目的。實際上,該加固技術(shù)不僅可以有效防范基于WebView組件的攻擊,還可以為Android應(yīng)用程序提供其他安全防護功能,在一定程度上提高了Android應(yīng)用程序的安全性,增加了惡意用戶對Android應(yīng)用程序的破解難度。

    5摘要:

    Android平臺提供了WebVicw組件用于加載和顯示W(wǎng)eb網(wǎng)頁。通過調(diào)用WebView提供的API,Android應(yīng)用程序可以與Web頁面進行交互操作。該交互過程包括允許Web頁面中的JavaScript代碼通過調(diào)用Android應(yīng)用中Java代碼訪問本地資源。在此過程中,攻擊者可以通過篡改Web頁面中的JavaScript腳本攻擊Android應(yīng)用程序。研究發(fā)現(xiàn),對Android應(yīng)用程序進行逆向工程攻擊得到WebView可調(diào)用接口,是此類攻擊的前提。因此,為了防止此類攻擊,文章提出了一種應(yīng)用加固方案防止Android逆向工程攻擊,通過隱藏WebView組件接口達到保護Android應(yīng)用程序的目的。該加固方案不僅可以防范針對WebView組件的攻擊也可以防范其他基于Android逆向工程的攻擊。

關(guān)鍵字:

招商信息月點擊排行

About Us - 關(guān)于我們 - 服務(wù)列表 - 付費指導 - 媒體合作 - 廣告服務(wù) - 版權(quán)聲明 - 聯(lián)系我們 - 網(wǎng)站地圖 - 常見問題 - 友情鏈接
Copyright©2014安裝信息網(wǎng) www.78375555.com. All rights reserved.
服務(wù)熱線:0371-61311617 郵箱:zgazxxw@126.com 豫ICP備18030500號-4
未經(jīng)過本站允許,請勿將本站內(nèi)容傳播或復制
安全聯(lián)盟認證