王繼剛 靖二霞 張曉梅 辛建峰 谷雅聰 郭黎敏
1(中興通訊股份有限公司 江蘇 南京 210012) 2(中國科學(xué)院軟件研究所 北京 100190) 3(中國信息安全認(rèn)證中心 北京 100020) 4(北京工業(yè)大學(xué) 北京 100124)
基于UI自動遍歷的Android惡意代碼動態(tài)分析方法
王繼剛1靖二霞2張曉梅3辛建峰3谷雅聰2郭黎敏4
1(中興通訊股份有限公司 江蘇 南京 210012)2(中國科學(xué)院軟件研究所 北京 100190)3(中國信息安全認(rèn)證中心 北京 100020)4(北京工業(yè)大學(xué) 北京 100124)
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,針對移動平臺尤其是Android平臺的惡意代碼威脅也日益嚴(yán)重。惡意代碼分析方法包括靜態(tài)分析和動態(tài)分析兩大類。由于靜態(tài)分析方法難以處理一些經(jīng)過變形、加密、混淆等技術(shù)處理的代碼,動態(tài)分析已經(jīng)成為了惡意代碼分析領(lǐng)域的發(fā)展熱點(diǎn)?,F(xiàn)有的Android平臺動態(tài)分析技術(shù)存在著分析環(huán)境易被識別、分析的代碼覆蓋率難以保證等問題。如何觸發(fā)Android平臺惡意代碼的惡意行為,提高動態(tài)分析的全面性是保證動態(tài)分析效果的關(guān)鍵問題之一。提出基于UI自動遍歷的Android惡意代碼動態(tài)分析辦法,可在一定程度上解決此問題。該方法結(jié)合Android平臺自身的特色,基于UI元素自動構(gòu)造不同的執(zhí)行路徑,可有效提高代碼分析的全面性。
移動安全 安卓系統(tǒng) 惡意代碼 動態(tài)分析
隨著移動互聯(lián)網(wǎng)、移動設(shè)備的不斷更新和發(fā)展,智能手機(jī)已經(jīng)越來越多的進(jìn)入到人們的日常生活之中。工信部電信研究院的數(shù)據(jù)顯示,截止到2013年6月,全國手機(jī)用戶達(dá)11.76億,2013年1至8月智能終端出貨量2.86億部,同比增長100.3%,市場占有率達(dá)72.2%。同期上市的智能手機(jī)新機(jī)型為1 659款,同比增長29.7%,占同期新機(jī)型總數(shù)的81.8%。智能手機(jī)不再僅僅是基本通信設(shè)備,而已經(jīng)成為承載大量個(gè)人隱私、并具備越來越高計(jì)算能力的綜合信息處理平臺。
針對移動平臺,尤其是Android平臺的惡意代碼威脅也日益嚴(yán)重。智能終端面臨著惡意吸費(fèi)、隱私竊取、遠(yuǎn)程控制、系統(tǒng)破壞等安全問題。數(shù)據(jù)顯示,僅2013年上半年,共查殺到所有平臺的手機(jī)惡意軟件51 083款,同比增長189%,受感染的手機(jī)數(shù)量達(dá)2 102萬部,同比增長63.8%,其中27%收到惡意扣費(fèi)行為的侵害,造成巨額財(cái)產(chǎn)損失。另一組數(shù)據(jù)顯示,2013年上半年,Android平臺新增樣本大幅增加,占所有平臺新增樣本數(shù)量的97%。可以說Android平臺安全已經(jīng)成為移動安全領(lǐng)域的風(fēng)向標(biāo)。
針對Android平臺所面臨的嚴(yán)峻安全現(xiàn)狀,有效的惡意代碼檢測和分析手段十分重要。根據(jù)針對目標(biāo)的不同,惡意代碼分析方法可分為針對程序源代碼的方法和針對程序可執(zhí)行文件的方法。由于絕大多數(shù)分析目標(biāo)均無法獲取源代碼,所以針對程序可執(zhí)行文件的方法是當(dāng)前最主要的分析方法。而從分析方式的角度,針對可執(zhí)行文件的分析方法又包含靜態(tài)分析和動態(tài)分析兩大類。靜態(tài)分析是采用反編譯等技術(shù),分析程序的狀態(tài)、數(shù)據(jù)流、執(zhí)行路徑等信息,這類方法不需要實(shí)際執(zhí)行被分析軟件,具有分析速度快、覆蓋代碼較全面等優(yōu)點(diǎn)。然而,對于一些經(jīng)過變形、加密、混淆等技術(shù)處理的代碼,靜態(tài)分析方法不具備有效的應(yīng)對手段。動態(tài)分析方法通過實(shí)際執(zhí)行被分析程序,利用多種方式對執(zhí)行過程進(jìn)行監(jiān)控,并在運(yùn)行過程中提取數(shù)據(jù),分析程序的各種行為。動態(tài)分析方法具有分析準(zhǔn)確度高、可以處理自修改代碼等動態(tài)生成代碼的優(yōu)點(diǎn)。軟件動態(tài)分析方法已經(jīng)成為了惡意代碼分析領(lǐng)域的研究熱點(diǎn)。
目前,Android平臺動態(tài)分析技術(shù)面臨的主要問題是如何觸發(fā)惡意代碼的不同行為模式,提高動態(tài)分析的全面性。在傳統(tǒng)的PC領(lǐng)域,F(xiàn)uzz測試、符號執(zhí)行、多路徑分析等方法,在一定程度上提高了分析的全面性。然而,Android平臺與傳統(tǒng)PC領(lǐng)域相比,有其自身的特色。Android平臺上的應(yīng)用程序以圖形用戶界面GUI(Graphical User Interface)程序?yàn)橹鳎@些程序往往依賴用戶操作才能發(fā)揮其功能,并且智能手機(jī)具有豐富的用戶操作接口,用戶可以通過點(diǎn)擊屏幕、搖動手機(jī)、使用聲音等控制應(yīng)用程序,應(yīng)用程序通過響應(yīng)用戶的操作進(jìn)一步執(zhí)行對應(yīng)的功能。Android平臺的這些特色使得傳統(tǒng)的API Fuzz等技術(shù)難以發(fā)揮作用。針對目標(biāo)APP用戶界面UI進(jìn)行分析的方法可以更好地解決問題。
針對以上問題,本文提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法,旨在提高惡意代碼動態(tài)分析中的分析效率和分析覆蓋率。
本文的主要貢獻(xiàn)如下:
(1) 提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法,以UI界面元素為基礎(chǔ),模擬用戶點(diǎn)擊、長按、滑動等操作,高效觸發(fā)分析目標(biāo)程序的行為,提高分析覆蓋率。
(2) 提出了一種Android程序界面控件的識別、操作方法,通過分析程序界面,快速、準(zhǔn)確地提取界面上的多種控件,大幅提高模擬用戶操作的效率。
(3) 提出了一種Android程序多界面的層次遍歷方法,根據(jù)界面間的依賴關(guān)系,自動處理界面間的跳轉(zhuǎn)、回溯,提高對含有多界面的應(yīng)用程序的覆蓋率。
(4) 設(shè)計(jì)并實(shí)現(xiàn)了原型系統(tǒng),基于實(shí)際樣本對本文提出的理論進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本文提出的方法能夠有效地提高Android平臺惡意代碼動態(tài)分析的分析效率和分析覆蓋率。
惡意軟件動態(tài)分析主要使用測試用例生成[1-4]、Fuzz測試[5]、執(zhí)行流檢測[6-10]、符號執(zhí)行[11]等技術(shù)。對于不涉及用戶操作的程序,上述技術(shù)可以較好地搜索程序執(zhí)行空間。然而,這些技術(shù)在應(yīng)用到GUI程序時(shí),面臨著巨大的困難。
在Android系統(tǒng)中,幾乎所有的程序都屬于GUI程序。應(yīng)用程序的執(zhí)行不僅由輸入數(shù)據(jù)驅(qū)動,也依賴于事件驅(qū)動。驅(qū)動事件分為兩種:系統(tǒng)事件和GUI事件。系統(tǒng)事件指Android操作系統(tǒng)在運(yùn)行過程中產(chǎn)生的會影響程序執(zhí)行的事件,如接收到新短信、發(fā)送電量不足廣播、完成GPS定位等。GUI事件指由用戶引發(fā)的會影響程序執(zhí)行的事件,如點(diǎn)擊程序按鈕、輸入文字等。Android用戶通過觸發(fā)GUI事件與GUI程序進(jìn)行交互。系統(tǒng)事件和GUI事件大大增加了GUI程序的執(zhí)行空間,使得傳統(tǒng)的Fuzz測試、符號執(zhí)行等技術(shù)難以取得好的效果。
1.1 Android背景知識
與傳統(tǒng)的Java GUI程序相似,Android應(yīng)用的運(yùn)行依賴于回調(diào)函數(shù)和驅(qū)動事件?;卣{(diào)函數(shù)包括Android系統(tǒng)用于管理應(yīng)用的創(chuàng)建、顯示、退出等開放出的接口;驅(qū)動事件包括系統(tǒng)事件和GUI事件,應(yīng)用程序?yàn)楦信d趣的驅(qū)動事件注冊監(jiān)聽函數(shù)以便響應(yīng)。
圖1[12]展示了Android系統(tǒng)中Activity組件的生命周期,其中onCreate()、onStart()、onPause()、onResume()、onDestory()等函數(shù)是系統(tǒng)提供的回調(diào)函數(shù)。當(dāng)應(yīng)用程序處于“正在運(yùn)行(RUNNING)”的狀態(tài)時(shí),程序會接收并處理驅(qū)動事件。通常一個(gè)應(yīng)用程序會包含多個(gè)界面,每個(gè)界面對應(yīng)一個(gè)Activity,每個(gè)Activity包含多個(gè)處理驅(qū)動事件的監(jiān)聽函數(shù),這些監(jiān)聽函數(shù)響應(yīng)用戶操作觸發(fā)的GUI事件,以及Android系統(tǒng)產(chǎn)生的系統(tǒng)事件。因此,產(chǎn)生正確的驅(qū)動事件,包括系統(tǒng)事件和GUI事件作為輸入提供給目標(biāo)程序,才能達(dá)到較好的動態(tài)測試覆蓋率。
圖1 Activity的生命周期
1.2 國內(nèi)外研究現(xiàn)狀
目前,已有多個(gè)工具或服務(wù)支持Android應(yīng)用軟件的動態(tài)分析,知名度較高的有DroidBox[13]、Andrubis[14]、TraceDroid[15]等。DroidBox是在TaintDroid基礎(chǔ)上開發(fā)的Android軟件動態(tài)分析工具,它能夠監(jiān)控文件讀寫、網(wǎng)絡(luò)收發(fā)、隱私泄露等行為。然而,DroidBox使用MonkeyRunner[16]工具向應(yīng)用軟件隨機(jī)發(fā)送事件(如點(diǎn)擊屏幕等),遍歷界面的效率低且效果差。TraceDroid通過修改Dalvik虛擬機(jī),實(shí)現(xiàn)了對安全相關(guān)API的監(jiān)控,并能記錄Java方法訪問信息;TraceDroid模擬了大部分系統(tǒng)事件,如打電話、設(shè)置GPS等,能夠觸發(fā)分析目標(biāo)對大多數(shù)系統(tǒng)事件的響應(yīng),與DroidBox相同,TraceDroid同樣采用MonkeyRunner作為GUI事件生成器,在觸發(fā)GUI事件方面效果很差,影響了整體的分析結(jié)果。Andrubis是著名的Anubis機(jī)構(gòu)推出的針對Android應(yīng)用的動態(tài)分析服務(wù)。從公開資料無法得知Andrubis采用的系統(tǒng)事件和GUI事件生成器,但從其提供的實(shí)際分析過程截圖來看,Andrubis不能對GUI元素進(jìn)行有效的觸發(fā),分析過程的截圖往往停留在應(yīng)用程序的啟動界面。
上述分析可知,如何有效地構(gòu)造驅(qū)動事件,提高測試的全面性,是Android軟件動態(tài)分析方法亟待解決的問題。國內(nèi)外已有的研究重點(diǎn)解決了驅(qū)動事件中的系統(tǒng)事件構(gòu)造方法,但針對GUI事件的構(gòu)造還處于利用MonkeyRunner等初級工具的階段。因此,高效的GUI事件構(gòu)造方法(UI遍歷方法)能夠有效地提高動態(tài)分析的全面性。
基于UI自動遍歷的Android軟件動態(tài)分析方法的基本思想是通過分析應(yīng)用程序啟動后的用戶界面,識別出按鈕、文本框、列表等控件元素,根據(jù)控件元素類型的不同模擬不同的用戶操作,如針對按鈕控件模擬點(diǎn)擊、長按操作,針對文本框控件模擬輸入文字操作,針對列表控件模擬滑動列表、點(diǎn)擊列表元素操作。由于Android應(yīng)用程序大多為多用戶界面程序,對控件實(shí)施模擬操作后,可能會產(chǎn)生新的界面。這時(shí)就需要處理多界面跳轉(zhuǎn),準(zhǔn)確獲取新界面的控件元素,同時(shí)保存原有界面的訪問狀態(tài),以供回溯遍歷。
2.1 單界面控件識別、操作算法
Android系統(tǒng)中,應(yīng)用程序的每個(gè)界面都對應(yīng)一個(gè)Activity,一個(gè)Activity中可含有多種控件元素,常見的控件元素有按鈕、文本框、列表、圖片框、表格等。對于不同類型的控件元素,所對應(yīng)的用戶操作也有所不同。因此有必要開發(fā)針對單個(gè)界面的多種類型的控件元素識別和針對這些控件進(jìn)行操作的算法。
Android的GUI系統(tǒng)由C語言框架和Java語言框架組成。對下層,Android的GUI系統(tǒng)通過調(diào)用顯示輸出設(shè)備和輸入設(shè)備的驅(qū)動,從而將Android的軟件系統(tǒng)和底層的硬件聯(lián)系起來。對上層,Android的GUI系統(tǒng)提供了Java層次的繪圖結(jié)構(gòu),Android的Java框架層調(diào)用這些繪圖接口來構(gòu)建各種UI元素,這些繪圖接口也可以供Java應(yīng)用程序?qū)觼碚{(diào)用。Android系統(tǒng)的多種類型的控件均派生自View對象,而一個(gè)GUI界面上的控件呈樹狀分布。圖2展示了典型的GUI界面的控件元素結(jié)構(gòu)。
圖2 典型的Android程序界面及View結(jié)構(gòu)
如圖2所示,Android應(yīng)用程序GUI界面上的控件元素組成了一顆單根樹,根節(jié)點(diǎn)為Activity的Root每個(gè)View,葉子節(jié)點(diǎn)通常是文本框、按鈕、圖片框等直接呈現(xiàn)給用戶的控件,根節(jié)點(diǎn)和葉子節(jié)點(diǎn)之間的普通節(jié)點(diǎn)通常屬于Android系統(tǒng)四種Layout,其作用是控制葉子節(jié)點(diǎn)的顯示位置。
單界面的控件識別、操作算法主要過程為從Activity的Root View出發(fā),按照深度搜索算法遍歷整棵View樹,并檢查每一個(gè)葉子節(jié)點(diǎn)的類型,按照預(yù)定義的不同類型節(jié)點(diǎn)的操作策略實(shí)施操作,整體算法如算法1所示。
算法1
輸入:Activity實(shí)例
輸出:根據(jù)控件元素類型實(shí)施相應(yīng)操作
過程:
1. RootView ←Activity.getRootView();
//獲取當(dāng)前Activity的RootView
2. dfs( RootView )
//以RootView為根,進(jìn)行深度優(yōu)先搜索
過程:dfs( ParentView )
1. 標(biāo)記ParentView已訪問;
2. performAction( ParentView );
//根據(jù)控件類型,實(shí)施相應(yīng)操作
3. for ParentView的每一個(gè)子節(jié)點(diǎn)childView
4. if childView 未訪問
5. then dfs ( childView );
6. end for
過程:performAction(View)
1. switch(View.type)
//根據(jù)控件類型switch
2. case BUTTON:
//如果是按鈕,則實(shí)施點(diǎn)擊操作
3. clickOnButton(View);
4. case EditText:
//如果是文本框,則實(shí)施填充文字操作
5. fillInText(View);
6. case LISTVIEW:
//如果是列表,則實(shí)施滑動操作
7. flingOnList(View);
8. ….
//其他控件類型做類似處理
此算法為DFS算法,在典型的DFS算法中算法的時(shí)間復(fù)雜度應(yīng)為O(V+E),V為頂點(diǎn)個(gè)數(shù),E為邊的個(gè)數(shù)。而在此問題模型中,假設(shè)控件元素組成的樹共有N個(gè)頂點(diǎn),由于此樹為無向樹,所以其邊的個(gè)數(shù)為E=N-1,那么算法的時(shí)間復(fù)雜度也就是O(N+E)=O(N+N-1)=O(N)。DFS算法是一個(gè)遞歸算法,需要借助一個(gè)遞歸工作棧,故此算法的空間復(fù)雜度為O(N),其中N是rootview中所有node的個(gè)數(shù)。
2.2 多界面遍歷算法
2.1節(jié)討論了單個(gè)界面的控件元素識別、操作算法,圖2所示的結(jié)構(gòu)圖應(yīng)用該算法的期望執(zhí)行結(jié)果為:ImageView→TextView→TextView→TextView→Button。實(shí)際操作點(diǎn)擊第二個(gè)TextView時(shí)(對應(yīng)界面上的“中國”元素),系統(tǒng)會跳轉(zhuǎn)到一個(gè)新的GUI界面,供用戶選擇所在的國家和地區(qū)。此時(shí)原界面的執(zhí)行被中斷,因此需要開發(fā)多界面的遍歷算法,使得可以遍歷新GUI界面的元素,并當(dāng)新界面遍歷完成時(shí),返回上一界面,繼續(xù)遍歷因?yàn)橹袛嗌形幢闅v的控件元素。
多界面遍歷算法設(shè)計(jì)時(shí)需解決兩個(gè)問題:一是如何保存被中斷的當(dāng)前界面的遍歷狀態(tài);二是如何感知界面跳轉(zhuǎn),以及判斷跳轉(zhuǎn)后的界面是否為新界面,若否則需恢復(fù)其遍歷狀態(tài)。為了實(shí)現(xiàn)這兩個(gè)目標(biāo),我們設(shè)計(jì)了以下兩個(gè)數(shù)據(jù)結(jié)構(gòu)保存數(shù)據(jù)和狀態(tài)。
數(shù)據(jù)結(jié)構(gòu)1:Stack
數(shù)據(jù)結(jié)構(gòu)2:HashTable
其中,數(shù)據(jù)結(jié)構(gòu)1是一個(gè)棧,棧中的每個(gè)元素都對應(yīng)一個(gè)Activity實(shí)例。界面的跳轉(zhuǎn)、返回符合先進(jìn)后出的特點(diǎn),故設(shè)計(jì)了以棧為記錄跳轉(zhuǎn)狀態(tài)的結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)2是一個(gè)哈希表,其鍵(Key)對應(yīng)著一個(gè)Activity實(shí)例,其值(Value)對應(yīng)著該Activity尚未操作的樹形控件集合。
多界面遍歷算法的大致思路如下:首先進(jìn)入應(yīng)用程序的主Activity,將其壓入棧中;獲取主Activity上的所有View,將View加入到一個(gè)列表中,然后把Activity和此View列表加入哈希表中。取出控件元素并進(jìn)行操作的流程如下:取出當(dāng)前處于棧頂?shù)腁ctivity,從哈希表中查找此Activity對應(yīng)里View樹形集合,此集合保存了該Activity尚未遍歷的View集合。從中取出下一個(gè)View,根據(jù)其類型進(jìn)行相應(yīng)操作;操作完成后,再檢查該操作是否引發(fā)了界面跳轉(zhuǎn),若是,則將跳轉(zhuǎn)后的Activity壓入棧中。如果某個(gè)Activity上的View已全部遍歷,則將此Activity從棧和哈希表中刪除。當(dāng)棧為空時(shí),算法終止。
詳細(xì)流程如算法2所示。
算法2
輸入:應(yīng)用程序App
輸出:遍歷所有界面,并對每個(gè)界面上的控件元素執(zhí)行響應(yīng)操作
過程:
1. mainActivity = App.getMainActivity();
2. viewTree = mainActivity.getViews();
3. Stack.push( mainActivity );
4. HashTable.add( mainActivity, viewTree);
5. while( Stack is not empty)
6. currentActivity = Stack.getTop();
7. currentViewTree = HashMap.getValue( currentActivity );
8. 使用算法1遍歷 currentViewTree
9. perfromAction( view );
10. currentViewTree.remove( view );
11. if( 跳轉(zhuǎn)到新界面activity2 )
12. Stack.push( activity2 );
13. HashTable.add( activity2, activity2.getViews() );
14. continue;
此算法也是DFS算法,其執(zhí)行算法1的次數(shù)為應(yīng)用程序中界面的總個(gè)數(shù)M,而算法1的時(shí)間復(fù)雜度為O(N),其中N為單個(gè)界面中node的平均個(gè)數(shù)。因此,算法2的時(shí)間復(fù)雜度為O(M×N)。此算法使用了兩個(gè)數(shù)據(jù)結(jié)構(gòu):棧和哈希表,棧的深度最大為界面的個(gè)數(shù)M,哈希表的大小為M×N,故此算法的空間復(fù)雜度為O(M+M×N)=O(M×N)。
3.1 實(shí)驗(yàn)方案
本文實(shí)現(xiàn)了單界面控件識別、操作算法,以及多界面遍歷算法和實(shí)驗(yàn)原型系統(tǒng),在中國科學(xué)院軟件研究所可信計(jì)算與信息保障實(shí)驗(yàn)室的惡意代碼動態(tài)分析云平臺[17](下文簡稱TCA軟件動態(tài)分析云平臺)上做了相關(guān)實(shí)驗(yàn)。TCA軟件動態(tài)分析云平臺以云計(jì)算技術(shù)、硬件模擬技術(shù)和惡意軟件動態(tài)分析技術(shù)為核心,將針對計(jì)算機(jī)與移動智能終端的軟件動態(tài)分析系統(tǒng)以網(wǎng)絡(luò)服務(wù)的形式提供給各類用戶。平臺可以完全模擬用戶的操作系統(tǒng)環(huán)境和應(yīng)用軟件配置,能夠提供不同版本、不同配置的Windows和Android操作系統(tǒng)分析環(huán)境,并能夠根據(jù)樣本類型智能選擇相應(yīng)的分析環(huán)境。平臺支持Windows XP、Windows 7、Android 2.x、Android 4.x,以及聯(lián)想LeOS等Android衍生操作系統(tǒng)平臺軟件的動態(tài)分析。
實(shí)驗(yàn)記錄了僅使用標(biāo)準(zhǔn)的系統(tǒng)事件測試(如發(fā)送新短信、發(fā)送電量不足廣播、完成GPS定位等)時(shí),應(yīng)用程序?qū)嶋H執(zhí)行的字節(jié)碼數(shù)量與同時(shí)采用我們UI自動遍歷系統(tǒng)條件下應(yīng)用程序?qū)嶋H執(zhí)行的字節(jié)碼數(shù)量進(jìn)行對比,從而說明基于UI自動遍歷的Android軟件動態(tài)分析方法在提高動態(tài)分析執(zhí)行覆蓋率方面的效果。
實(shí)驗(yàn)樣本包括兩種:樣本一為從公開渠道收集的366個(gè)惡意軟件樣本,其中70%是偽裝成游戲的惡意軟件,30%是偽裝成工具、社交等應(yīng)用的惡意軟件;樣本二為從樣本一中隨機(jī)選擇了5個(gè)真實(shí)的惡意軟件樣本。實(shí)驗(yàn)中采用Google官方提供的systrace工具[18]計(jì)算應(yīng)用程序?qū)嶋H執(zhí)行的字節(jié)碼數(shù)量。
3.2 實(shí)驗(yàn)結(jié)果與分析
對樣本一中的366個(gè)惡意軟件樣本,采用UI自動遍歷系統(tǒng)的TCA軟件動態(tài)分析云平臺進(jìn)行分析后,惡意軟件樣本實(shí)際執(zhí)行的字節(jié)碼數(shù)量平均提升了54%。5個(gè)真實(shí)惡意代碼在兩種分析模式下,實(shí)際執(zhí)行的字節(jié)碼數(shù)量如表1所示。
表1 UI自動遍歷實(shí)驗(yàn)效果
從實(shí)驗(yàn)結(jié)果可以看出,對同一樣本,采用UI自動遍歷系統(tǒng)的TCA軟件動態(tài)分析云平臺比未采用UI遍歷系統(tǒng),實(shí)際執(zhí)行的字節(jié)碼數(shù)量均有增加,提升比率也相當(dāng)高。實(shí)驗(yàn)中我們也發(fā)現(xiàn),對于功能簡單的惡意代碼,如letanginc.SpaceShip和mahjong_v1.3.2,提升比率較小,原因是這類惡意代碼含有的界面很少;對于功能較為復(fù)雜的惡意代碼,如ConfLite和couplesV1.0,提升效率非常明顯,這說明我們的UI自動遍歷系統(tǒng)能夠較好地應(yīng)對Android惡意代碼日益復(fù)雜的發(fā)展趨勢。
本文針對目前Android平臺動態(tài)分析技術(shù)面臨的如何觸發(fā)惡意代碼的不同行為模式、提高動態(tài)分析的全面性的問題,提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法。從構(gòu)造GUI驅(qū)動事件著手,提出了一種Android程序界面控件的識別、操作方法,通過分析程序界面,快速、準(zhǔn)確地提取界面上的多種控件,大幅提高模擬用戶操作的效率。根據(jù)Android應(yīng)用多界面的特性,提出了一種Android程序多界面的層次遍歷方法。最后,設(shè)計(jì)并實(shí)現(xiàn)了原型系統(tǒng),基于實(shí)際樣本對本文提出的理論進(jìn)行了驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本文提出的方法能夠有效地提高Android平臺惡意代碼動態(tài)分析的分析效率和分析覆蓋率。
[1] Boonstoppel P,Cadar C,Engler D.RWset: attacking path explosion in constraint-based test generation[C]//Theory and Practice of Software,International Conference on TOOLS and Algorithms for the Construction and Analysis of Systems.Springer-Verlag,2008:351-366.
[2] Godefroid P.Compositional dynamic test generation[C]//ACM Sigplan-Sigact Symposium on Principles of Programming Languages.ACM,2007:47-54.
[3] Molnar D,Li X C,Wagner D A.Dynamic test generation to find integer bugs in x86 binary linux programs[C]//Conference on Usenix Security Symposium.USENIX Association,2009:67-82.
[4] Sen K,Marinov D,Agha G.CUTE:a concolic unit testing engine for C[C]//European Software Engineering Conference Held Jointly with,ACM Sigsoft International Symposium on Foundations of Software Engineering.ACM,2005:263-272.
[5] Godefroid P,Levin M Y,Molnar D A.Automated Whitebox Fuzz Testing[C]//Network and Distributed System Security Symposium,NDSS 2008,San Diego,California,Usa,February,February.DBLP,2008.
[6] Bisht P,Hinrichs T,Skrupsky N,et al.WAPTEC:whitebox analysis of web applications for parameter tampering exploit construction[C]//Proceedings of the 18th ACM conference on Computer and communications security.ACM,2011:575-586.
[7] Brumley D,Newsome J,Song D,et al.Towards automatic generation of vulnerability-based signatures[C]//2006 IEEE Symposium on Security and Privacy (S&P’06).IEEE,2006:15-16.
[8] Gilbert P,Chun B G,Cox L P,et al.Vision:automated security validation of mobile apps at app markets[C]//Proceedings of the second international workshop on Mobile cloud computing and services.ACM,2011:21-26.
[9] Wang T,Wei T,Lin Z,et al.IntScope:Automatically Detecting Integer Overflow Vulnerability in X86 Binary Using Symbolic Execution[C]//Network and Distributed System Security Symposium,NDSS 2009,San Diego,California,Usa,February,February.DBLP,2007.
[10] Kieyzun A,Guo P J,Jayaraman K,et al.Automatic creation of SQL injection and cross-site scripting attacks[C]//2009 IEEE 31st International Conference on Software Engineering.IEEE,2009:199-209.
[11] King J C.Symbolic execution and program testing[J].Communications of the ACM,1976,19(7):385-394.
[12] Yang Z,Yang M,Zhang Y,et al.Appintent:Analyzing sensitive data transmission in android for privacy leakage detection[C]//Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security.ACM,2013:1043-1054.
[13] Desnos A,Lantz P.Droidbox:An android application sandbox for dynamic analysis[EB/OL].2011.http://www.honeynet.org/gsoc2011/slot5.
[14] Weichselbaum L,Neugschwandtner M,Lindorfer M,et al.Andrubis: Android malware under the magnifying glass[R].Vienna University of Technology,Tech.Rep.TRISECLAB-0414,2014,1:5.
[15] Van Der Veen V,Bos H,Rossow C.Dynamic analysis of android malware[D].VU University Amsterdam,2013.
[16] Monkey Runner[OL].http://developer. android. com/guide/developing/tools/monkeyrunner_concepts. html.
[17] 中科院軟件所可信計(jì)算與信息保障實(shí)驗(yàn)室.惡意代碼動態(tài)分析云平臺[OL].http://tca.iscas.ac.cn/NewsDetail.aspx?ArticleId=106.
[18] Systrace[OL].http://developer.android.com/tools/help/systrace.html.
DYNAMICANALYSISMETHODOFANDROIDMALICIOUSCODEBASEDONUIAUTOMATICTRAVERSING
Wang Jigang1Jing Erxia2Zhang Xiaomei3Xin Jianfeng3Gu Yacong2Guo Limin4
1(ZhongxingTelecomEquipment,Nanjing210012,Jiangsu,China)2(InstituteofSoftware,ChineseAcademyofSciences,Beijing100190,China)3(ChinaInformationSecurityCertificationCenter,Beijing100020,China)4(BeijingUniversityofTechnology,Beijing100124,China)
With the rapid development of mobile Internet, the threat of malicious code to the mobile platform, especially the Android platform, grows increasingly gravely. Malicious code analysis methods include static analysis and dynamic analysis. Since the static analysis method is difficult to deal with malicious codes that processed by techniques such as deformation, encryption, confusion, the dynamic analysis has become a hot spot in the field of malicious code analysis. There are some problems such as easy identification of analyzing environment, low coverage rate of the code in the existing Android platform dynamic analysis technology. How to trigger malicious codes in Android platform and improve the comprehensiveness of analysis is one of the key factors to ensure the efficacy of dynamic analysis. The dynamic analysis method of Android malicious code based on UI automatic traversing, to some extent, can resolve this problem. This method can remarkably improve the code analysis through combining with the characteristics of Android platform and constructing different execution paths based on the UI elements.
Mobile security Android system Malicious code Dynamic analysis
2016-11-28。國家自然科學(xué)基金項(xiàng)目(61502468);北京市自然科學(xué)基金項(xiàng)目(4154089);中興通訊研究基金項(xiàng)目。王繼剛,高工,主研領(lǐng)域:操作系統(tǒng),網(wǎng)絡(luò)安全,云計(jì)算。靖二霞,碩士。張曉梅,助理研究員。辛建峰,工程師。谷雅聰,博士。郭黎敏,講師。
TP309
A
10.3969/j.issn.1000-386x.2017.12.056