王繼剛 靖二霞 張曉梅 辛建峰 谷雅聰 郭黎敏
1(中興通訊股份有限公司 江蘇 南京 210012) 2(中國科學院軟件研究所 北京 100190) 3(中國信息安全認證中心 北京 100020) 4(北京工業(yè)大學 北京 100124)
基于UI自動遍歷的Android惡意代碼動態(tài)分析方法
王繼剛1靖二霞2張曉梅3辛建峰3谷雅聰2郭黎敏4
1(中興通訊股份有限公司 江蘇 南京 210012)2(中國科學院軟件研究所 北京 100190)3(中國信息安全認證中心 北京 100020)4(北京工業(yè)大學 北京 100124)
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,針對移動平臺尤其是Android平臺的惡意代碼威脅也日益嚴重。惡意代碼分析方法包括靜態(tài)分析和動態(tài)分析兩大類。由于靜態(tài)分析方法難以處理一些經過變形、加密、混淆等技術處理的代碼,動態(tài)分析已經成為了惡意代碼分析領域的發(fā)展熱點。現(xiàn)有的Android平臺動態(tài)分析技術存在著分析環(huán)境易被識別、分析的代碼覆蓋率難以保證等問題。如何觸發(fā)Android平臺惡意代碼的惡意行為,提高動態(tài)分析的全面性是保證動態(tài)分析效果的關鍵問題之一。提出基于UI自動遍歷的Android惡意代碼動態(tài)分析辦法,可在一定程度上解決此問題。該方法結合Android平臺自身的特色,基于UI元素自動構造不同的執(zhí)行路徑,可有效提高代碼分析的全面性。
移動安全 安卓系統(tǒng) 惡意代碼 動態(tài)分析
隨著移動互聯(lián)網(wǎng)、移動設備的不斷更新和發(fā)展,智能手機已經越來越多的進入到人們的日常生活之中。工信部電信研究院的數(shù)據(jù)顯示,截止到2013年6月,全國手機用戶達11.76億,2013年1至8月智能終端出貨量2.86億部,同比增長100.3%,市場占有率達72.2%。同期上市的智能手機新機型為1 659款,同比增長29.7%,占同期新機型總數(shù)的81.8%。智能手機不再僅僅是基本通信設備,而已經成為承載大量個人隱私、并具備越來越高計算能力的綜合信息處理平臺。
針對移動平臺,尤其是Android平臺的惡意代碼威脅也日益嚴重。智能終端面臨著惡意吸費、隱私竊取、遠程控制、系統(tǒng)破壞等安全問題。數(shù)據(jù)顯示,僅2013年上半年,共查殺到所有平臺的手機惡意軟件51 083款,同比增長189%,受感染的手機數(shù)量達2 102萬部,同比增長63.8%,其中27%收到惡意扣費行為的侵害,造成巨額財產損失。另一組數(shù)據(jù)顯示,2013年上半年,Android平臺新增樣本大幅增加,占所有平臺新增樣本數(shù)量的97%。可以說Android平臺安全已經成為移動安全領域的風向標。
針對Android平臺所面臨的嚴峻安全現(xiàn)狀,有效的惡意代碼檢測和分析手段十分重要。根據(jù)針對目標的不同,惡意代碼分析方法可分為針對程序源代碼的方法和針對程序可執(zhí)行文件的方法。由于絕大多數(shù)分析目標均無法獲取源代碼,所以針對程序可執(zhí)行文件的方法是當前最主要的分析方法。而從分析方式的角度,針對可執(zhí)行文件的分析方法又包含靜態(tài)分析和動態(tài)分析兩大類。靜態(tài)分析是采用反編譯等技術,分析程序的狀態(tài)、數(shù)據(jù)流、執(zhí)行路徑等信息,這類方法不需要實際執(zhí)行被分析軟件,具有分析速度快、覆蓋代碼較全面等優(yōu)點。然而,對于一些經過變形、加密、混淆等技術處理的代碼,靜態(tài)分析方法不具備有效的應對手段。動態(tài)分析方法通過實際執(zhí)行被分析程序,利用多種方式對執(zhí)行過程進行監(jiān)控,并在運行過程中提取數(shù)據(jù),分析程序的各種行為。動態(tài)分析方法具有分析準確度高、可以處理自修改代碼等動態(tài)生成代碼的優(yōu)點。軟件動態(tài)分析方法已經成為了惡意代碼分析領域的研究熱點。
目前,Android平臺動態(tài)分析技術面臨的主要問題是如何觸發(fā)惡意代碼的不同行為模式,提高動態(tài)分析的全面性。在傳統(tǒng)的PC領域,F(xiàn)uzz測試、符號執(zhí)行、多路徑分析等方法,在一定程度上提高了分析的全面性。然而,Android平臺與傳統(tǒng)PC領域相比,有其自身的特色。Android平臺上的應用程序以圖形用戶界面GUI(Graphical User Interface)程序為主,這些程序往往依賴用戶操作才能發(fā)揮其功能,并且智能手機具有豐富的用戶操作接口,用戶可以通過點擊屏幕、搖動手機、使用聲音等控制應用程序,應用程序通過響應用戶的操作進一步執(zhí)行對應的功能。Android平臺的這些特色使得傳統(tǒng)的API Fuzz等技術難以發(fā)揮作用。針對目標APP用戶界面UI進行分析的方法可以更好地解決問題。
針對以上問題,本文提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法,旨在提高惡意代碼動態(tài)分析中的分析效率和分析覆蓋率。
本文的主要貢獻如下:
(1) 提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法,以UI界面元素為基礎,模擬用戶點擊、長按、滑動等操作,高效觸發(fā)分析目標程序的行為,提高分析覆蓋率。
(2) 提出了一種Android程序界面控件的識別、操作方法,通過分析程序界面,快速、準確地提取界面上的多種控件,大幅提高模擬用戶操作的效率。
(3) 提出了一種Android程序多界面的層次遍歷方法,根據(jù)界面間的依賴關系,自動處理界面間的跳轉、回溯,提高對含有多界面的應用程序的覆蓋率。
(4) 設計并實現(xiàn)了原型系統(tǒng),基于實際樣本對本文提出的理論進行了驗證。實驗結果表明,本文提出的方法能夠有效地提高Android平臺惡意代碼動態(tài)分析的分析效率和分析覆蓋率。
惡意軟件動態(tài)分析主要使用測試用例生成[1-4]、Fuzz測試[5]、執(zhí)行流檢測[6-10]、符號執(zhí)行[11]等技術。對于不涉及用戶操作的程序,上述技術可以較好地搜索程序執(zhí)行空間。然而,這些技術在應用到GUI程序時,面臨著巨大的困難。
在Android系統(tǒng)中,幾乎所有的程序都屬于GUI程序。應用程序的執(zhí)行不僅由輸入數(shù)據(jù)驅動,也依賴于事件驅動。驅動事件分為兩種:系統(tǒng)事件和GUI事件。系統(tǒng)事件指Android操作系統(tǒng)在運行過程中產生的會影響程序執(zhí)行的事件,如接收到新短信、發(fā)送電量不足廣播、完成GPS定位等。GUI事件指由用戶引發(fā)的會影響程序執(zhí)行的事件,如點擊程序按鈕、輸入文字等。Android用戶通過觸發(fā)GUI事件與GUI程序進行交互。系統(tǒng)事件和GUI事件大大增加了GUI程序的執(zhí)行空間,使得傳統(tǒng)的Fuzz測試、符號執(zhí)行等技術難以取得好的效果。
1.1 Android背景知識
與傳統(tǒng)的Java GUI程序相似,Android應用的運行依賴于回調函數(shù)和驅動事件。回調函數(shù)包括Android系統(tǒng)用于管理應用的創(chuàng)建、顯示、退出等開放出的接口;驅動事件包括系統(tǒng)事件和GUI事件,應用程序為感興趣的驅動事件注冊監(jiān)聽函數(shù)以便響應。
圖1[12]展示了Android系統(tǒng)中Activity組件的生命周期,其中onCreate()、onStart()、onPause()、onResume()、onDestory()等函數(shù)是系統(tǒng)提供的回調函數(shù)。當應用程序處于“正在運行(RUNNING)”的狀態(tài)時,程序會接收并處理驅動事件。通常一個應用程序會包含多個界面,每個界面對應一個Activity,每個Activity包含多個處理驅動事件的監(jiān)聽函數(shù),這些監(jiān)聽函數(shù)響應用戶操作觸發(fā)的GUI事件,以及Android系統(tǒng)產生的系統(tǒng)事件。因此,產生正確的驅動事件,包括系統(tǒng)事件和GUI事件作為輸入提供給目標程序,才能達到較好的動態(tài)測試覆蓋率。

圖1 Activity的生命周期
1.2 國內外研究現(xiàn)狀
目前,已有多個工具或服務支持Android應用軟件的動態(tài)分析,知名度較高的有DroidBox[13]、Andrubis[14]、TraceDroid[15]等。DroidBox是在TaintDroid基礎上開發(fā)的Android軟件動態(tài)分析工具,它能夠監(jiān)控文件讀寫、網(wǎng)絡收發(fā)、隱私泄露等行為。然而,DroidBox使用MonkeyRunner[16]工具向應用軟件隨機發(fā)送事件(如點擊屏幕等),遍歷界面的效率低且效果差。TraceDroid通過修改Dalvik虛擬機,實現(xiàn)了對安全相關API的監(jiān)控,并能記錄Java方法訪問信息;TraceDroid模擬了大部分系統(tǒng)事件,如打電話、設置GPS等,能夠觸發(fā)分析目標對大多數(shù)系統(tǒng)事件的響應,與DroidBox相同,TraceDroid同樣采用MonkeyRunner作為GUI事件生成器,在觸發(fā)GUI事件方面效果很差,影響了整體的分析結果。Andrubis是著名的Anubis機構推出的針對Android應用的動態(tài)分析服務。從公開資料無法得知Andrubis采用的系統(tǒng)事件和GUI事件生成器,但從其提供的實際分析過程截圖來看,Andrubis不能對GUI元素進行有效的觸發(fā),分析過程的截圖往往停留在應用程序的啟動界面。
上述分析可知,如何有效地構造驅動事件,提高測試的全面性,是Android軟件動態(tài)分析方法亟待解決的問題。國內外已有的研究重點解決了驅動事件中的系統(tǒng)事件構造方法,但針對GUI事件的構造還處于利用MonkeyRunner等初級工具的階段。因此,高效的GUI事件構造方法(UI遍歷方法)能夠有效地提高動態(tài)分析的全面性。
基于UI自動遍歷的Android軟件動態(tài)分析方法的基本思想是通過分析應用程序啟動后的用戶界面,識別出按鈕、文本框、列表等控件元素,根據(jù)控件元素類型的不同模擬不同的用戶操作,如針對按鈕控件模擬點擊、長按操作,針對文本框控件模擬輸入文字操作,針對列表控件模擬滑動列表、點擊列表元素操作。由于Android應用程序大多為多用戶界面程序,對控件實施模擬操作后,可能會產生新的界面。這時就需要處理多界面跳轉,準確獲取新界面的控件元素,同時保存原有界面的訪問狀態(tài),以供回溯遍歷。
2.1 單界面控件識別、操作算法
Android系統(tǒng)中,應用程序的每個界面都對應一個Activity,一個Activity中可含有多種控件元素,常見的控件元素有按鈕、文本框、列表、圖片框、表格等。對于不同類型的控件元素,所對應的用戶操作也有所不同。因此有必要開發(fā)針對單個界面的多種類型的控件元素識別和針對這些控件進行操作的算法。
Android的GUI系統(tǒng)由C語言框架和Java語言框架組成。對下層,Android的GUI系統(tǒng)通過調用顯示輸出設備和輸入設備的驅動,從而將Android的軟件系統(tǒng)和底層的硬件聯(lián)系起來。對上層,Android的GUI系統(tǒng)提供了Java層次的繪圖結構,Android的Java框架層調用這些繪圖接口來構建各種UI元素,這些繪圖接口也可以供Java應用程序層來調用。Android系統(tǒng)的多種類型的控件均派生自View對象,而一個GUI界面上的控件呈樹狀分布。圖2展示了典型的GUI界面的控件元素結構。

圖2 典型的Android程序界面及View結構
如圖2所示,Android應用程序GUI界面上的控件元素組成了一顆單根樹,根節(jié)點為Activity的Root每個View,葉子節(jié)點通常是文本框、按鈕、圖片框等直接呈現(xiàn)給用戶的控件,根節(jié)點和葉子節(jié)點之間的普通節(jié)點通常屬于Android系統(tǒng)四種Layout,其作用是控制葉子節(jié)點的顯示位置。
單界面的控件識別、操作算法主要過程為從Activity的Root View出發(fā),按照深度搜索算法遍歷整棵View樹,并檢查每一個葉子節(jié)點的類型,按照預定義的不同類型節(jié)點的操作策略實施操作,整體算法如算法1所示。
算法1
輸入:Activity實例
輸出:根據(jù)控件元素類型實施相應操作
過程:
1. RootView ←Activity.getRootView();
//獲取當前Activity的RootView
2. dfs( RootView )
//以RootView為根,進行深度優(yōu)先搜索
過程:dfs( ParentView )
1. 標記ParentView已訪問;
2. performAction( ParentView );
//根據(jù)控件類型,實施相應操作
3. for ParentView的每一個子節(jié)點childView
4. if childView 未訪問
5. then dfs ( childView );
6. end for
過程:performAction(View)
1. switch(View.type)
//根據(jù)控件類型switch
2. case BUTTON:
//如果是按鈕,則實施點擊操作
3. clickOnButton(View);
4. case EditText:
//如果是文本框,則實施填充文字操作
5. fillInText(View);
6. case LISTVIEW:
//如果是列表,則實施滑動操作
7. flingOnList(View);
8. ….
//其他控件類型做類似處理
此算法為DFS算法,在典型的DFS算法中算法的時間復雜度應為O(V+E),V為頂點個數(shù),E為邊的個數(shù)。而在此問題模型中,假設控件元素組成的樹共有N個頂點,由于此樹為無向樹,所以其邊的個數(shù)為E=N-1,那么算法的時間復雜度也就是O(N+E)=O(N+N-1)=O(N)。DFS算法是一個遞歸算法,需要借助一個遞歸工作棧,故此算法的空間復雜度為O(N),其中N是rootview中所有node的個數(shù)。
2.2 多界面遍歷算法
2.1節(jié)討論了單個界面的控件元素識別、操作算法,圖2所示的結構圖應用該算法的期望執(zhí)行結果為:ImageView→TextView→TextView→TextView→Button。實際操作點擊第二個TextView時(對應界面上的“中國”元素),系統(tǒng)會跳轉到一個新的GUI界面,供用戶選擇所在的國家和地區(qū)。此時原界面的執(zhí)行被中斷,因此需要開發(fā)多界面的遍歷算法,使得可以遍歷新GUI界面的元素,并當新界面遍歷完成時,返回上一界面,繼續(xù)遍歷因為中斷尚未遍歷的控件元素。
多界面遍歷算法設計時需解決兩個問題:一是如何保存被中斷的當前界面的遍歷狀態(tài);二是如何感知界面跳轉,以及判斷跳轉后的界面是否為新界面,若否則需恢復其遍歷狀態(tài)。為了實現(xiàn)這兩個目標,我們設計了以下兩個數(shù)據(jù)結構保存數(shù)據(jù)和狀態(tài)。
數(shù)據(jù)結構1:Stack
數(shù)據(jù)結構2:HashTable
其中,數(shù)據(jù)結構1是一個棧,棧中的每個元素都對應一個Activity實例。界面的跳轉、返回符合先進后出的特點,故設計了以棧為記錄跳轉狀態(tài)的結構。數(shù)據(jù)結構2是一個哈希表,其鍵(Key)對應著一個Activity實例,其值(Value)對應著該Activity尚未操作的樹形控件集合。
多界面遍歷算法的大致思路如下:首先進入應用程序的主Activity,將其壓入棧中;獲取主Activity上的所有View,將View加入到一個列表中,然后把Activity和此View列表加入哈希表中。取出控件元素并進行操作的流程如下:取出當前處于棧頂?shù)腁ctivity,從哈希表中查找此Activity對應里View樹形集合,此集合保存了該Activity尚未遍歷的View集合。從中取出下一個View,根據(jù)其類型進行相應操作;操作完成后,再檢查該操作是否引發(fā)了界面跳轉,若是,則將跳轉后的Activity壓入棧中。如果某個Activity上的View已全部遍歷,則將此Activity從棧和哈希表中刪除。當棧為空時,算法終止。
詳細流程如算法2所示。
算法2
輸入:應用程序App
輸出:遍歷所有界面,并對每個界面上的控件元素執(zhí)行響應操作
過程:
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( 跳轉到新界面activity2 )
12. Stack.push( activity2 );
13. HashTable.add( activity2, activity2.getViews() );
14. continue;
此算法也是DFS算法,其執(zhí)行算法1的次數(shù)為應用程序中界面的總個數(shù)M,而算法1的時間復雜度為O(N),其中N為單個界面中node的平均個數(shù)。因此,算法2的時間復雜度為O(M×N)。此算法使用了兩個數(shù)據(jù)結構:棧和哈希表,棧的深度最大為界面的個數(shù)M,哈希表的大小為M×N,故此算法的空間復雜度為O(M+M×N)=O(M×N)。
3.1 實驗方案
本文實現(xiàn)了單界面控件識別、操作算法,以及多界面遍歷算法和實驗原型系統(tǒng),在中國科學院軟件研究所可信計算與信息保障實驗室的惡意代碼動態(tài)分析云平臺[17](下文簡稱TCA軟件動態(tài)分析云平臺)上做了相關實驗。TCA軟件動態(tài)分析云平臺以云計算技術、硬件模擬技術和惡意軟件動態(tài)分析技術為核心,將針對計算機與移動智能終端的軟件動態(tài)分析系統(tǒng)以網(wǎng)絡服務的形式提供給各類用戶。平臺可以完全模擬用戶的操作系統(tǒng)環(huán)境和應用軟件配置,能夠提供不同版本、不同配置的Windows和Android操作系統(tǒng)分析環(huán)境,并能夠根據(jù)樣本類型智能選擇相應的分析環(huán)境。平臺支持Windows XP、Windows 7、Android 2.x、Android 4.x,以及聯(lián)想LeOS等Android衍生操作系統(tǒng)平臺軟件的動態(tài)分析。
實驗記錄了僅使用標準的系統(tǒng)事件測試(如發(fā)送新短信、發(fā)送電量不足廣播、完成GPS定位等)時,應用程序實際執(zhí)行的字節(jié)碼數(shù)量與同時采用我們UI自動遍歷系統(tǒng)條件下應用程序實際執(zhí)行的字節(jié)碼數(shù)量進行對比,從而說明基于UI自動遍歷的Android軟件動態(tài)分析方法在提高動態(tài)分析執(zhí)行覆蓋率方面的效果。
實驗樣本包括兩種:樣本一為從公開渠道收集的366個惡意軟件樣本,其中70%是偽裝成游戲的惡意軟件,30%是偽裝成工具、社交等應用的惡意軟件;樣本二為從樣本一中隨機選擇了5個真實的惡意軟件樣本。實驗中采用Google官方提供的systrace工具[18]計算應用程序實際執(zhí)行的字節(jié)碼數(shù)量。
3.2 實驗結果與分析
對樣本一中的366個惡意軟件樣本,采用UI自動遍歷系統(tǒng)的TCA軟件動態(tài)分析云平臺進行分析后,惡意軟件樣本實際執(zhí)行的字節(jié)碼數(shù)量平均提升了54%。5個真實惡意代碼在兩種分析模式下,實際執(zhí)行的字節(jié)碼數(shù)量如表1所示。

表1 UI自動遍歷實驗效果
從實驗結果可以看出,對同一樣本,采用UI自動遍歷系統(tǒng)的TCA軟件動態(tài)分析云平臺比未采用UI遍歷系統(tǒng),實際執(zhí)行的字節(jié)碼數(shù)量均有增加,提升比率也相當高。實驗中我們也發(fā)現(xiàn),對于功能簡單的惡意代碼,如letanginc.SpaceShip和mahjong_v1.3.2,提升比率較小,原因是這類惡意代碼含有的界面很少;對于功能較為復雜的惡意代碼,如ConfLite和couplesV1.0,提升效率非常明顯,這說明我們的UI自動遍歷系統(tǒng)能夠較好地應對Android惡意代碼日益復雜的發(fā)展趨勢。
本文針對目前Android平臺動態(tài)分析技術面臨的如何觸發(fā)惡意代碼的不同行為模式、提高動態(tài)分析的全面性的問題,提出了一種基于UI自動遍歷的Android軟件動態(tài)分析方法。從構造GUI驅動事件著手,提出了一種Android程序界面控件的識別、操作方法,通過分析程序界面,快速、準確地提取界面上的多種控件,大幅提高模擬用戶操作的效率。根據(jù)Android應用多界面的特性,提出了一種Android程序多界面的層次遍歷方法。最后,設計并實現(xiàn)了原型系統(tǒng),基于實際樣本對本文提出的理論進行了驗證。實驗結果表明,本文提出的方法能夠有效地提高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] 中科院軟件所可信計算與信息保障實驗室.惡意代碼動態(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。國家自然科學基金項目(61502468);北京市自然科學基金項目(4154089);中興通訊研究基金項目。王繼剛,高工,主研領域:操作系統(tǒng),網(wǎng)絡安全,云計算。靖二霞,碩士。張曉梅,助理研究員。辛建峰,工程師。谷雅聰,博士。郭黎敏,講師。
TP309
A
10.3969/j.issn.1000-386x.2017.12.056