国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android惡意代碼的逆向分析

2016-09-21 05:40:31李天輝王艷青
信息安全與通信保密 2016年4期
關(guān)鍵詞:源代碼逆向應(yīng)用程序

李天輝,王艷青

(沈陽師范大學(xué)軟件學(xué)院,遼寧沈陽110036)

Android惡意代碼的逆向分析

李天輝,王艷青

(沈陽師范大學(xué)軟件學(xué)院,遼寧沈陽110036)

本文主要研究基于逆向工程的Android應(yīng)用程序中惡意代碼的分析方法。首先,通過逆向工程得到Android應(yīng)用程序的Java源代碼和資源文件,然后根據(jù)源代碼分析程序的功能、結(jié)構(gòu);根據(jù)manifest資源文件分析程序組件的各種權(quán)限,再結(jié)合惡意代碼的行為特征判斷是否存在惡意代碼及其危害。也可以據(jù)此方法研究Android系統(tǒng)受攻擊的原因及防御辦法并進(jìn)一步發(fā)現(xiàn)惡意代碼的特征。

逆向工程;android;惡意代碼;APK

0 引言

移動互聯(lián)網(wǎng)發(fā)展越來越快,Android手機應(yīng)用程序也越來越豐富。但由于Android系統(tǒng)的開放性,應(yīng)用程序分發(fā)越來越容易,為惡意軟件提供了良好的傳播環(huán)境,這樣就導(dǎo)致了Android系統(tǒng)安全問題日益突出。手機吸費、木馬和病毒等惡意軟件的迅速滋生及利用Android惡意軟件進(jìn)行網(wǎng)絡(luò)犯罪活動的日益增多,Android手機用戶正面臨前所未有的安全風(fēng)險。2010年,Android惡意軟件的定義剛出現(xiàn)在Dr.Web病毒數(shù)據(jù)庫中,但截止2014年底,Dr.Web病毒數(shù)據(jù)庫中的有關(guān)Android惡意軟件總定義數(shù)量達(dá)到5 681個,增加了2 867種新成員,包括各種不必要的、惡意的、以及含有潛在風(fēng)險的應(yīng)用程序。這一數(shù)字比2013年增長了102%,比2010年增長了189倍(或18,837%)。這些數(shù)據(jù)表明惡意軟件的檢測與防范工作面臨了嚴(yán)峻的挑戰(zhàn)。

目前,對基于Android系統(tǒng)的惡意軟件的分析方法還在處于探索階段。很多針對惡意軟件的分析技術(shù),一般只關(guān)注結(jié)果,缺乏對攻擊方法、攻擊過程、惡意軟件類型特征等更詳細(xì)信息的分析與取證。為解決此類問題,本文主要研究Android惡意代碼的逆向分析方法。此方法基于對Android應(yīng)用程序進(jìn)行逆向工程,然后再分析Android應(yīng)用程序的設(shè)計結(jié)構(gòu)、功能及各種組件的訪問權(quán)限等,再對比程序原來的基本功能與惡意代碼的行為特征,進(jìn)一步判斷出是否有惡意代碼存在及其危害。

1 Android系統(tǒng)簡介

Android是由Google公司研發(fā)的基于Linux平臺的移動設(shè)備操作系統(tǒng),它由Linux內(nèi)核層、系統(tǒng)庫與運行環(huán)境層、應(yīng)用框架層、應(yīng)用層4個層次組成的操作系統(tǒng)。

1.1 Linux內(nèi)核層(Kernel)

Linux內(nèi)核是硬件和軟件之間的抽象層,主要包括核心和驅(qū)動兩部分,核心包括內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議棧、安全性和驅(qū)動模型等。驅(qū)動包含顯示驅(qū)動(DisplayDriver)、音頻驅(qū)動(AudioDrive-r)、無線局域網(wǎng)驅(qū)動(WifiDriver)等。

由于內(nèi)核層的進(jìn)程往往以較高的權(quán)限運行,所以在系統(tǒng)安全方面,一旦出現(xiàn)漏洞[1]可能導(dǎo)致高級權(quán)限泄露。內(nèi)核層的研究集中于將SELinux引入內(nèi)核層以增強系統(tǒng)的安全性能[2]。

1.2 系統(tǒng)庫(Libraries)與運行環(huán)境(Runtime)

系統(tǒng)庫是Android程序運行所需的一些C/C++庫。運行環(huán)境包含一個核心庫,提供了Java編程語言核心庫的大多數(shù)功能。每個應(yīng)用程序都在它自己的進(jìn)程中運行,都各自擁有一個獨立的Dalvik虛擬機實例,如圖1所示。Dalvik是基于寄存器的Java虛擬機,而不是基于棧的虛擬機,并且還優(yōu)化了內(nèi)存資源的使用及同時支持多個虛擬機的特點。

圖1 Dalvik虛擬機實例

1.3 應(yīng)用程序框架(ApplicationFramework)

此部分為Android應(yīng)用程序提供系統(tǒng)的API,在框架安全性限制的前提下,開發(fā)者可以任意訪問核心應(yīng)用程序所使用的API框架,重新調(diào)用各種組件和服務(wù),包括應(yīng)用程序開發(fā)所需要的界面管理、數(shù)據(jù)訪問、應(yīng)用包的管理、應(yīng)用層的消息傳遞、定位管理、電話管理以及Google Talk服務(wù)等功能。

應(yīng)用程序框架層和系統(tǒng)庫層的安全威脅同樣來自于自身的漏洞,但由于Android系統(tǒng)的權(quán)限機制、簽名機制和沙盒機制[3]的良好設(shè)計,實現(xiàn)了鑒別開發(fā)者、限制應(yīng)用程序行為和保障應(yīng)用程序獨立運行的功能,所以暴漏出的安全漏洞較少。

1.4 應(yīng)用程序(Application)

Android最上層提供了移動互聯(lián)設(shè)備所需要的各種應(yīng)用程序,如SMS短消息程序、Email客戶端、日歷、瀏覽器、聯(lián)系人管理、地圖程序等。

Android程序是用Java語言進(jìn)行開發(fā)的,傳統(tǒng)的Java程序運行是通過JVM虛擬機將源文件編譯成Java字節(jié)碼運行。在Android程序編碼完成后,首先將Java源代碼轉(zhuǎn)換為字節(jié)碼,再用DX工具將字節(jié)碼文件轉(zhuǎn)換成.dex格式的文件,最后.dex格式的文件在Dalvik虛擬機上運行。Dalvik虛擬機要依賴Linux內(nèi)核一些功能才能運行,例如:線程機制、底層內(nèi)存管理機制等操作系統(tǒng)管理機制。

2 Android應(yīng)用程序的逆向工程原理

2.1 APK結(jié)構(gòu)分析與逆向工程

APK即Android程序包文件,是Android系統(tǒng)應(yīng)用程序默認(rèn)安裝文件格式。APK英文全稱為“application package file”。任何一個Android程序想要在Android設(shè)備上運行,首先要進(jìn)行編譯,然后再被打包成APK文件。APK文件基于zip文件格式,與jar文件的構(gòu)造方式相似,可通過應(yīng)用程序項目文件在 Eclipse開發(fā)環(huán)境中的目錄進(jìn)行結(jié)構(gòu)分析。

逆向工程也稱為反向工程(Reverse Engineering)[4],其含義是根據(jù)存在的結(jié)果來分析推導(dǎo)出具體的原因。對一個已經(jīng)發(fā)布的應(yīng)用程序,可以通過逆向工程得到其源代碼,然后根據(jù)項目文件及源代碼分析其程序結(jié)構(gòu)和設(shè)計方案。當(dāng)然也能用逆向分析方法來分析程序中否存在安全隱患及惡意代碼[5]。不過,也有部分必有用心的開發(fā)者用逆向分析的方法在源程序中故意添加一些惡意代碼。

APK是將Java源程序編譯后的.class文件打包成.jar文件后再打包成classes.dex的文件包,dex格式文件可以直接在Android系統(tǒng)中的Dalvik虛擬機上運行。這是一個逐步優(yōu)化的編譯過程。Dex格式文件的指令碼屬于Dalvik虛擬機專有的指令集,專門為移動操作系統(tǒng)優(yōu)化過,與標(biāo)準(zhǔn)Java的.class文件相比,它體積小,運行效率高。最后被打包成.apk文件進(jìn)行發(fā)布。明晰了Android應(yīng)用程序的封裝過程,再把APK文件反向解析出Java源程序就是Android應(yīng)用程序的逆向工程。

2.2 Android應(yīng)用程序逆向工程的方法與步驟

Android 應(yīng)用程序逆向工程需用到 Winrar、dex2jar、JD-GUI、apktool等工具,過程分4步。工程流程圖如圖2所示,下面分別進(jìn)行詳細(xì)說明。

圖2 Android逆向工程流程圖

1)用解壓工具解壓縮APK文件

可以直接把APK文件的擴(kuò)展名修改成.zip,然后解壓,獲取classes.dex文件,這個就是打包后的class文件。

2)使用dex2jar將classes.dex反編譯為jar文件

將classes.dex文件復(fù)制到dex2jar路徑下,使用 Windows的命令提示符切換到dex2jar所在目錄,執(zhí)行命令如下:

dex2jar.batclasses.dex

命令執(zhí)行后會生成classes.dex.dex2jar.jar文件。

3)使用JD-GUI查看反編譯后的jar文件

JD-GUI界面是Windows窗口模式,直接選擇路徑打開classes.dex.dex2jar.jar文件即可查看原Java源代碼。

4)獲取資源文件、xml配置文件等

由于Android應(yīng)用程序的圖片等資源文件都做了二進(jìn)制壓縮,直接解壓的xml文件以及圖片文件都是亂碼。所以需要用到apktool工具獲取原來的資源文件。apktool工具有三個文件,并放在同一個目錄下,分別為apktool.jar、apktool.bat、aapt.exe。然后把要反編譯的APK文件復(fù)制到apktool目錄下,然后打開命令提示符,輸入命令即可自動進(jìn)行反編譯。命令如下:

apktool d MusicPlayer.apk MusicPlayer

apktool是命令,d是反編譯,MusicPlayer.apk和 MusicPlayer分別為要反編譯的文件名和反編譯后資源文件存放的文件夾名,前者要和實際文件名一致,后者可任意命名。

在得到的資源文件夾中,其中res文件是資源文件,xml文件是對應(yīng)的xml配置文件[6]。

3 惡意代碼的分析方法

對Android應(yīng)用程序逆向工程后,就可以得到應(yīng)用項目的Java源代碼及xml配置等文件,然后再對這些文件進(jìn)行分析。逆向工程后得到的程序源代碼行數(shù)以萬計,盲目分析效率很低,需要找到程序的關(guān)鍵點進(jìn)行分析。對Android應(yīng)用程序惡意代碼的分析主要有2個方法。下面以常見的惡意代碼特征[7]進(jìn)行分析和說明。

3.1 分析程序信息、結(jié)構(gòu),函數(shù)等

1)Android系統(tǒng)中的惡意代碼通常會偷偷地發(fā)送付費短信,來實現(xiàn)惡意扣費的目的,如下java代碼可以實現(xiàn)此功能。

如果在逆向工程中發(fā)現(xiàn)有類似代碼并且原應(yīng)用程序并沒有此項功能,則說明此段代碼極可能是惡意代碼。

2)啟動后臺服務(wù)

惡意代碼通常能偷偷地在系統(tǒng)后臺啟動一些Service組件程序來實現(xiàn)其非法操作,要啟動Service通常先繼承BroadcastReceiver類,再通過startActivity()函數(shù)實現(xiàn)自啟動。Broadcast Receiver組件可以接收一種或多種Intent組件作為觸發(fā)事件,當(dāng)一個BroadcastReceiver組件被觸發(fā)后,系統(tǒng)就會通知相應(yīng)程序來啟動Service組件。由于Service具有靜默運行的特點,用戶很難發(fā)現(xiàn),惡意代碼一般以android.content.Context.startServiee()函數(shù)來啟動后臺Service組件。

如果在逆向工程中發(fā)現(xiàn)有類似后臺啟動的服務(wù)代碼,且與原應(yīng)用程序功能不符,則很可能為惡意代碼。

3)插入瀏覽器書簽

在android系統(tǒng)瀏覽器中插入瀏覽器書簽也是惡意代碼慣用的推廣手法,下面的java代碼就可以實現(xiàn)在瀏覽器中插入書簽。

如果在逆向工程中發(fā)現(xiàn)有類似代碼,則說明該程序至少有惡意推廣的意圖。

3.2 分析配置文件的權(quán)限列表

Androidmanifest.xml文件記錄著應(yīng)用程序的一些基本信息,包括應(yīng)用程序的包名、系統(tǒng)發(fā)行版本及各種組件的注冊權(quán)限等。根據(jù)對APK文件中的androidmanifest.xml的權(quán)限列表進(jìn)行分析,例如注冊的Receiver列表及Service列表,如果該列表中的權(quán)限與原應(yīng)用程序基本功能不符,極有可能是惡意代碼。分析配置文件權(quán)限時,還要對標(biāo)簽所包含的參數(shù)進(jìn)行分析,如果代碼中包含一些程序本身不需要的權(quán)限配置,則極有可能是惡意代碼。

前面提到惡意代碼自啟動功能要想實現(xiàn),Receiver許可必須要完成配置,這樣才能允許接收系統(tǒng)啟動消息。該功能在AndroidManifest.xml中以如下代碼來實現(xiàn)。

書簽如果要成功實現(xiàn),AndroidManifest.xml中也必須進(jìn)行權(quán)限注冊,有關(guān)xml代碼示例如下。

實現(xiàn)任意惡意代碼的行為都需要配置權(quán)限許可,而Androidmenifest.xml是android應(yīng)用程序配置權(quán)限許可的必用的文件,所以對Android程序逆向工程后首先對配置文件進(jìn)行檢測也是一個可提高效率的辦法。

4 結(jié)語

Android惡意代碼的逆向分析方法是基于對Android系統(tǒng)的應(yīng)用程序進(jìn)行逆向工程,即反向編譯APK程序包,獲取項目配置文件Anroidmanifest.xml和應(yīng)用程序的Java源程序,然后再去分析程序的代碼結(jié)構(gòu)、功能及各組件的運行權(quán)限等。據(jù)此研究惡意代碼的各種特征行為及系統(tǒng)受攻擊的原因和防御方法。

[1]CokerR.Porting nsa security enhanced linux to hand-held devices[C]//proc of Linux Symp.Ottawa:Linux Symp Inc.2003:117-127.

[2]Shabtai A,F(xiàn)ledel Y,Elovici Y.Securing Andorid powerred mobile devices using SELinux[J].Security & Privacy,2010,8(3):36-44.

[3]GoogleInc.Andorid security[EB/OL].[2013-06-26].https://source.android.com/tech/security/.

[4]Schmidt A-D,Bye R,Schmidt H-G,et al.Static analysis of executables for collaborative malware detection on Android[C] //2009 IEEE International Conference onCommunications.Dresden,Germany,2009:1-5.

[5]賈菲,劉威.基于Android平臺惡意代碼逆向分析技術(shù)的研究[J].技術(shù)研究,2012(04):61-63.

[6]關(guān)立勛.Android應(yīng)用開發(fā)深入學(xué)習(xí)實錄[M].北京:電子工業(yè)出版社,2013.

[7]李俊.Android系統(tǒng)源代碼分析[M].北京:中國鐵道出版社,2015.

ReverseAnalysis of Android's Malicious Code

LI Tian-hui1,WANG Yan-qing2
(College of Software,Shenyang Normal University,Liaoning Shenyang 110036,China)

Analysis method of malicious code in Android application based on reverse engineering is principally studied.Firstly,java source code and resource files of Android application are acquired via reverse engineering.And then in accordance with the function and structure of java source code,and with the manifest resource file,various competences of program components are analyzed.Finally,in combination with the behavior of malicious code,whether exist the malicious code and its harm is determined.This method could also be applied to studying the being-attacked cause and defense of Android system and further finding the characteristics of malicious code.

Android; reverse engineering; malicious code; APK

TP393 [文獻(xiàn)標(biāo)志碼]A [文章編號]1009-8054(2016)04-0095-04

2015-07-17

李天輝(1976—),男,碩士,講師,主要研究方向為計算機網(wǎng)絡(luò),信息安全;

王艷青(1961—),男,碩士,副教授,主要研究方向為信息安全,計算機網(wǎng)絡(luò)。

猜你喜歡
源代碼逆向應(yīng)用程序
人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
計算機仿真(2023年8期)2023-09-20 11:23:42
逆向而行
基于TXL的源代碼插樁技術(shù)研究
刪除Win10中自帶的應(yīng)用程序
電腦報(2019年12期)2019-09-10 05:08:20
軟件源代碼非公知性司法鑒定方法探析
逆向解答
揭秘龍湖產(chǎn)品“源代碼”
逆向工程技術(shù)及應(yīng)用
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
三星電子將開設(shè)應(yīng)用程序下載商店
孝感市| 扶沟县| 安乡县| 察哈| 屏东县| 阿图什市| 马关县| 大方县| 鲁山县| 冀州市| 寿阳县| 黎平县| 石嘴山市| 济南市| 称多县| 苍山县| 兖州市| 石屏县| 商洛市| 潼关县| 浪卡子县| 镇康县| 丘北县| 沂南县| 晋江市| 阿拉善右旗| 牡丹江市| 巍山| 泸定县| 淳安县| 丁青县| 乾安县| 南乐县| 尉犁县| 全南县| 察隅县| 涞水县| 昌图县| 怀来县| 温泉县| 阿坝县|