亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)

        2018-03-19 02:45:03孫驍永王偉霍瑋周建華
        關(guān)鍵詞:模擬器漏洞靜態(tài)

        孫驍永,王偉,霍瑋,周建華

        1.中國科學(xué)院信息工程研究所,北京100195

        2.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京100190

        動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)

        孫驍永1,2,王偉1,霍瑋1,2,周建華1

        1.中國科學(xué)院信息工程研究所,北京100195

        2.中國科學(xué)院大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,北京100190

        CNKI網(wǎng)絡(luò)出版:2017-06-22,http://kns.cnki.net/kcms/detail/11.2127.TP.20170622.1849.006.html

        1 引言

        智能手機(jī)由于其越來越豐富的功能和便捷性,逐漸成為人們生活中不可缺少的一部分。除了基本的語音通話、短信收發(fā)等功能外,人們對社交通訊、購物、游戲等功能有了更大的需求,這使得智能手機(jī)數(shù)量出現(xiàn)了快速增長,得到了廣泛的推廣和應(yīng)用。而Android系統(tǒng)由于其開源和免費(fèi)的特性,占據(jù)了大量的智能手機(jī)市場份額。IDC數(shù)據(jù)顯示,截止2015年第二季度,搭載了Android系統(tǒng)的智能手機(jī)市場份額達(dá)到82.8%,遠(yuǎn)遠(yuǎn)高于第二名Apple的市場份額13.9%[1]。

        但是現(xiàn)在Android應(yīng)用市場上的應(yīng)用良莠不齊,市場上存在很多黑客開發(fā)并上傳的惡意應(yīng)用或者是存在安全隱患的應(yīng)用。網(wǎng)蛙科技檢測結(jié)果顯示,截至2015年底,超過95%以上應(yīng)用含有不同類型的安全漏洞,高危漏洞比例達(dá)到16%。

        目前Android應(yīng)用漏洞的檢測技術(shù)主要采用靜態(tài)檢測和動態(tài)檢測[2]。靜態(tài)檢測是針對漏洞模式制定好規(guī)則,通過對應(yīng)用源碼直接進(jìn)行靜態(tài)分析來發(fā)現(xiàn)漏洞的方法。靜態(tài)檢測的優(yōu)點(diǎn)是代碼覆蓋率高、能夠自動化挖掘漏洞,缺點(diǎn)是針對性不強(qiáng),誤報率較高。動態(tài)檢測是在虛擬機(jī)、沙箱等受控系統(tǒng)環(huán)境中實(shí)際運(yùn)行待測應(yīng)用,記錄其各項(xiàng)行為和對系統(tǒng)以及其他應(yīng)用造成的影響,鑒別應(yīng)用是否具有漏洞或惡意行為。動態(tài)檢測方法的優(yōu)點(diǎn)是可以繞過靜態(tài)檢測技術(shù)遇到的native層代碼、反射或代碼混淆等問題,缺點(diǎn)是效率和代碼覆蓋率較低。

        本文針對以上方法的局限性,首次提出了動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù),自動化檢測Android應(yīng)用漏洞,并對漏洞是否真實(shí)存在進(jìn)行驗(yàn)證,提高了輸出漏洞的準(zhǔn)確率。該技術(shù)基于靜態(tài)嫌疑漏洞觸發(fā)路徑的入口函數(shù),使用自動化UI觸發(fā)的方法生成Activity跳轉(zhuǎn)關(guān)系圖,對漏洞嫌疑路徑進(jìn)行精確制導(dǎo),并輸出相關(guān)API的序列,以此驗(yàn)證漏洞觸發(fā)嫌疑路徑是否執(zhí)行,提高了輸出漏洞的有效性,可以顯著提高應(yīng)用漏洞分析效率,提高分析工具的可用性。

        動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)輸入是目標(biāo)應(yīng)用,輸出是驗(yàn)證后的應(yīng)用漏洞信息以及觸發(fā)漏洞的事件序列。

        首先,使用靜態(tài)分析方法根據(jù)漏洞的特征對應(yīng)用程序源代碼進(jìn)行切片和特征提取,最后獲得漏洞觸發(fā)的嫌疑路徑。

        然后,使用基于回退機(jī)制的UI遍歷算法對應(yīng)用進(jìn)行自動化UI遍歷,生成Activity跳轉(zhuǎn)關(guān)系圖和觸發(fā)條件信息。由于部分應(yīng)用存在模擬器對抗問題,當(dāng)運(yùn)行環(huán)境為模擬器時可能造成應(yīng)用崩潰或無法操作等情況,為了解決這種問題,本方法同時部署在真機(jī)和模擬器上,采用策略調(diào)度算法智能調(diào)配真機(jī)和模擬器。同時,存在登錄等情況,需要輸入特殊字符才會引發(fā)組件跳轉(zhuǎn),這會造成部分應(yīng)用組件不可達(dá)的問題,為了解決這種問題,開發(fā)了界面輸入條件構(gòu)造模塊,根據(jù)每個應(yīng)用組件直接觸發(fā)所需的關(guān)鍵參數(shù)信息,構(gòu)造合適輸入強(qiáng)制觸發(fā)執(zhí)行這些應(yīng)用組件,以此提高覆蓋率。

        最后,本文根據(jù)靜態(tài)分析獲得的漏洞入口函數(shù)和Activity跳轉(zhuǎn)關(guān)系圖獲得漏洞的觸發(fā)路徑,然后根據(jù)觸發(fā)信息對漏洞進(jìn)行觸發(fā),并輸出相關(guān)API序列,最后對漏洞觸發(fā)嫌疑路徑是否執(zhí)行進(jìn)行驗(yàn)證,以保證輸出的漏洞嫌疑路徑信息的準(zhǔn)確性。

        本方法通過實(shí)驗(yàn)對10 122個應(yīng)用進(jìn)行了檢測。實(shí)驗(yàn)結(jié)果表明本文提出的方法在覆蓋率、準(zhǔn)確性和效率上都有良好的表現(xiàn)。

        本文的主要創(chuàng)新點(diǎn)和貢獻(xiàn)如下:

        (1)提出了基于回退機(jī)制的UI遍歷算法,能夠減少現(xiàn)有算法中的冗余跳轉(zhuǎn),提高自動化UI遍歷的效率。

        (2)從兩方面考慮提高覆蓋率:交互性問題造成的應(yīng)用組件執(zhí)行缺失情況和模擬器對抗情況。為了解決第一個問題,開發(fā)了界面輸入條件構(gòu)造模塊,構(gòu)造合適的輸入,系統(tǒng)觸發(fā)強(qiáng)制執(zhí)行這些應(yīng)用組件。對于第二個問題,將算法部署在真機(jī)和模擬器上,然后智能調(diào)配兩者。

        (3)根據(jù)提出的動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)實(shí)現(xiàn)了一個檢測系統(tǒng),并對現(xiàn)實(shí)中的應(yīng)用進(jìn)行漏洞檢測。

        2 相關(guān)研究

        Google play和第三方Android應(yīng)用市場上的應(yīng)用可能存在漏洞,導(dǎo)致手機(jī)中保存的用戶敏感信息發(fā)生泄露或惡意扣費(fèi)等問題,所以Android應(yīng)用漏洞檢測成為當(dāng)下研究熱點(diǎn)。

        現(xiàn)有的國內(nèi)外Android應(yīng)用漏洞檢測技術(shù)大致分為兩類:靜態(tài)檢測和動態(tài)檢測。同時,隨著應(yīng)用數(shù)量逐年遞增,應(yīng)用漏洞檢測技術(shù)越來越強(qiáng)調(diào)對海量應(yīng)用的檢測,而大規(guī)模自動化分析應(yīng)用的一個關(guān)鍵問題是如何快速有效地觸發(fā)應(yīng)用的各種潛在行為[3-4]。

        2.1 靜態(tài)檢測方法

        AndroidLeaks[5]工具能夠大規(guī)模分析應(yīng)用,查看應(yīng)用是否存在隱私泄露問題,它將Dalvik字節(jié)碼轉(zhuǎn)換為Java字節(jié)碼,然后使用WALA進(jìn)行靜態(tài)污點(diǎn)跟蹤。FlowDroid[6]工具是一個針對Android應(yīng)用的高精度靜態(tài)污點(diǎn)跟蹤系統(tǒng),它通過分析待測應(yīng)用的字節(jié)碼和配置文件,找出潛在的漏洞。EdgeMiner[7]工具靜態(tài)分析整個Android框架,自動生成描述隱式控制流轉(zhuǎn)換的API概要,能夠幫助現(xiàn)有的靜態(tài)分析工具更好地處理回調(diào)。IccTA[8]工具是一個靜態(tài)污點(diǎn)分析系統(tǒng),能夠檢測應(yīng)用組件間的隱私泄露。但是,這些靜態(tài)分析工具不適用于分析GUI組件,比如按鈕,而且這些工具不能獲得運(yùn)行時信息,同時靜態(tài)分析很難分析加密加殼應(yīng)用。本文提出的方法結(jié)合了動靜態(tài)分析方法,而且可以分析GUI組件,獲得應(yīng)用運(yùn)行時信息。

        2.2 動態(tài)檢測方法

        現(xiàn)在的Android應(yīng)用開發(fā)大量采用native層代碼、反射和代碼混淆等技術(shù),這些技術(shù)使得靜態(tài)分析工具很難全面分析應(yīng)用。研究人員為了克服這種限制,更全面地分析應(yīng)用行為,經(jīng)常結(jié)合動態(tài)分析技術(shù)和UI自動化觸發(fā)技術(shù)來分析應(yīng)用。SmartDroid[9]工具采用動靜態(tài)分析結(jié)合的方法,通過自動化的UI交互,觸發(fā)特定的行為。但是SmartDroid使用靜態(tài)分析指導(dǎo)動態(tài)分析的方法,這使得動態(tài)分析極度依賴于靜態(tài)分析結(jié)果,而靜態(tài)分析不能全面分析各類UI又有高誤報率的特點(diǎn),而且SmartDroid使用的動態(tài)分析存在較多冗余跳轉(zhuǎn),降低了分析效率。TaintDroid[10]工具是一個高效的、全系統(tǒng)動態(tài)污點(diǎn)跟蹤和分析系統(tǒng),可以同時跟蹤多個敏感數(shù)據(jù)來源。但是,TaintDroid是一個被動檢測方法,它需要提前知道觸發(fā)敏感信息泄露的觸發(fā)條件,然后進(jìn)行手動觸發(fā),確定敏感信息泄露行為。當(dāng)面對一個未知的惡意樣本時,TaintDroid的檢測能力大大降低,這使得Taint-Droid很難用于大規(guī)模自動化分析。而本文的方法可以自動化地遍歷UI路徑,比TaintDroid更適用于自動化分析。SMV-HUNTER[11]工具是一個大規(guī)模自動化識別SSL/TLS證書驗(yàn)證不規(guī)范漏洞的系統(tǒng),結(jié)合了動靜態(tài)分析方法。SMV-HUNTER的動態(tài)分析方法使用的UI自動化觸發(fā)方法還較為簡單,很多交互操作沒有完成。

        2.3 UI自動化觸發(fā)

        UI觸發(fā)技術(shù)常用于自動化分析應(yīng)用,可以發(fā)現(xiàn)應(yīng)用是否存在潛在的惡意行為、信息泄露等行為?,F(xiàn)有的UI觸發(fā)技術(shù)面臨的挑戰(zhàn)是如何產(chǎn)生有效的輸入,以提高應(yīng)用觸發(fā)的覆蓋率。Android應(yīng)用是事件驅(qū)動的,UI觸發(fā)技術(shù)常常模擬UI事件,如:點(diǎn)擊、滾動和文本輸入等,或者系統(tǒng)事件,如通知或接收短信等。UI觸發(fā)技術(shù)常常采用不同的策略來產(chǎn)生這些輸入,策略可分為三類:隨機(jī)的觸發(fā)策略、基于模型的觸發(fā)策略和系統(tǒng)化的觸發(fā)策略[12-13]。

        (1)隨機(jī)的觸發(fā)策略:使用隨機(jī)觸發(fā)策略的UI觸發(fā)技術(shù)常用于測試應(yīng)用的健壯性,而且可以很有效地測試應(yīng)用是否有拒絕服務(wù)漏洞。Monkey是一個黑盒測試,用戶使用時需要首先確定Monkey測試的事件個數(shù),然后Monkey進(jìn)行隨機(jī)觸發(fā),當(dāng)測試事件個數(shù)達(dá)到這個數(shù)字時結(jié)束分析。Dynodroid[14]雖然也采用隨機(jī)觸發(fā)策略,但是它使用的策略更智能,它可以根據(jù)語境信息,忽略一些發(fā)生概略較低的事件,更多地選擇上下文相關(guān)的事件,以此提高觸發(fā)的有效性。VanarSena[15]工具是構(gòu)建在云端的,用戶將應(yīng)用上傳上去,該工具的Monkey Manager模塊會管理一批Monkey去分析應(yīng)用,然后收集應(yīng)用的崩潰信息。使用隨機(jī)觸發(fā)策略可用于進(jìn)行壓力測試,但是它不能很好地產(chǎn)生有效輸入,而且不能明確對應(yīng)用行為的覆蓋率是高是低。

        (2)基于模型的觸發(fā)策略:一些測試工具通過建立應(yīng)用的GUI模型來生成事件序列,并系統(tǒng)化地探測應(yīng)用行為。PUMA[16]是一個可編程的框架,包含了一個通用的UI自動化技術(shù)和腳本語言PUMAScript。用戶可以使用PUMAScript自定義想處理的事件,然后這個腳本會驅(qū)動UI自動化技術(shù)去搜索。該工具可以很方便地擴(kuò)展到其他動態(tài)分析上。基于模型的觸發(fā)策略一般也只關(guān)注于UI交互,然而一些事件可能只會改變應(yīng)用的內(nèi)部狀態(tài)但是不會造成GUI的變化,對于這些事件,基于模型的觸發(fā)策略不能處理。

        (3)系統(tǒng)化的觸發(fā)策略:一些應(yīng)用行為需要特定的輸入才會觸發(fā),為此一些測試工具結(jié)合了其他技術(shù)如符號化執(zhí)行和啟發(fā)式算法以指導(dǎo)搜索哪些未覆蓋到的代碼。SIG-Droid[17]是一個系統(tǒng)化測試Android應(yīng)用的框架,使用從應(yīng)用源碼中自動化提取的GUI模型,并結(jié)合符號化執(zhí)行技術(shù)去推斷測試輸入,確保覆蓋程序中的每個訪問分支。采用系統(tǒng)化的觸發(fā)策略比隨機(jī)策略有更高的應(yīng)用覆蓋率,但是這種方法的可擴(kuò)展性較差。

        3 動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)

        3.1 方法綜述

        本文提出的動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù),能夠快速有效地觸發(fā)應(yīng)用的漏洞,并對漏洞進(jìn)行驗(yàn)證。系統(tǒng)框圖如圖1所示,該系統(tǒng)由3部分組成:靜態(tài)分析模塊、觸發(fā)信息收集模塊和漏洞驗(yàn)證模塊。

        (1)靜態(tài)分析模塊:根據(jù)漏洞的特征對應(yīng)用程序源代碼進(jìn)行切片和特征提取,最后獲得漏洞觸發(fā)的嫌疑路徑。該模塊主要對已知漏洞模式的漏洞進(jìn)行分析。

        (2)觸發(fā)信息收集模塊:該模塊采用智能有規(guī)律的UI遍歷算法獲取應(yīng)用的Activity跳轉(zhuǎn)關(guān)系進(jìn)而生成Activity跳轉(zhuǎn)關(guān)系圖,同時為了解決部分應(yīng)用組件觸發(fā)缺失的情況,構(gòu)造UI的輸入條件,系統(tǒng)觸發(fā)應(yīng)用組件,補(bǔ)全Activity跳轉(zhuǎn)關(guān)系圖。該模塊為后續(xù)的漏洞驗(yàn)證模塊提供支持,包含兩個子模塊:基于回退機(jī)制的UI遍歷和界面輸入條件構(gòu)造。

        ①基于回退機(jī)制的UI遍歷:本文在現(xiàn)有的應(yīng)用UI觸發(fā)技術(shù)的基礎(chǔ)上,模擬用戶自動化執(zhí)行應(yīng)用程序有序觸發(fā)Activity跳轉(zhuǎn),當(dāng)執(zhí)行到葉子節(jié)點(diǎn)后執(zhí)行回退,減少冗余跳轉(zhuǎn),最后實(shí)現(xiàn)了基于回退機(jī)制的UI遍歷算法。本系統(tǒng)將該算法同時部署在真機(jī)和模擬器上,采用策略調(diào)度機(jī)制智能調(diào)配真機(jī)和模擬器,以解決模擬器對抗問題。

        ②界面輸入條件構(gòu)造:對于由于交互性問題造成的UI執(zhí)行序列缺失情況,本文通過使用IC3[18]工具分析各應(yīng)用組件直接觸發(fā)所需要的參數(shù)信息,然后根據(jù)參數(shù)信息構(gòu)造合適的輸入條件,為漏洞驗(yàn)證模塊系統(tǒng)觸發(fā)應(yīng)用組件提供信息支持。

        (3)漏洞驗(yàn)證模塊:該模塊根據(jù)靜態(tài)分析模塊獲得的漏洞信息和觸發(fā)信息收集模塊生成的Activity跳轉(zhuǎn)關(guān)系圖,獲得從應(yīng)用入口點(diǎn)到漏洞入口函數(shù)的路徑,然后根據(jù)觸發(fā)條件信息對漏洞進(jìn)行觸發(fā)。如果路徑獲取失敗,則系統(tǒng)觸發(fā)漏洞所在組件,最后根據(jù)應(yīng)用運(yùn)行過程中輸出的日志信息驗(yàn)證漏洞是否真的觸發(fā),以此提高輸出的漏洞信息的準(zhǔn)確率。該模塊包含兩個子模塊:觸發(fā)和驗(yàn)證。

        ①觸發(fā):包括UI觸發(fā)和系統(tǒng)觸發(fā)兩個功能,優(yōu)先使用UI觸發(fā)。UI觸發(fā)功能根據(jù)靜態(tài)分析模塊獲得的漏洞入口函數(shù)在觸發(fā)信息收集模塊生成的Activity跳轉(zhuǎn)關(guān)系圖上進(jìn)行遍歷,獲得從應(yīng)用入口Activity到漏洞入口函數(shù)的調(diào)用路徑,然后根據(jù)Activity跳轉(zhuǎn)的觸發(fā)信息進(jìn)行UI觸發(fā),直至觸發(fā)到漏洞入口函數(shù)。如果Activity跳轉(zhuǎn)關(guān)系圖上沒有這條路徑,那么根據(jù)界面輸入條件構(gòu)造的結(jié)果,利用系統(tǒng)觸發(fā)的方式強(qiáng)制執(zhí)行目標(biāo)入口。系統(tǒng)在Android Framework上對應(yīng)用運(yùn)行過程中涉及的各個關(guān)鍵函數(shù)添加了日志輸出,在觸發(fā)應(yīng)用Activity跳轉(zhuǎn)時,會有關(guān)鍵日志信息輸出,這些日志信息會提供給驗(yàn)證模塊對漏洞是否真的執(zhí)行進(jìn)行驗(yàn)證。

        ②驗(yàn)證:對觸發(fā)子模塊輸出的日志信息進(jìn)行控制流分析,獲取應(yīng)用運(yùn)行時函數(shù)調(diào)用關(guān)系,通過路徑過濾去除系統(tǒng)API調(diào)用信息,高效輸出應(yīng)用執(zhí)行路徑信息。然后和靜態(tài)分析生成的嫌疑路徑進(jìn)行對比,輸出可執(zhí)行的嫌疑路徑,以此對是否觸發(fā)到漏洞進(jìn)行驗(yàn)證,提高輸出漏洞信息的準(zhǔn)確率。

        最后輸出漏洞相關(guān)信息以及漏洞觸發(fā)的時間序列,方便研究人員對漏洞進(jìn)行人工分析。

        圖1 動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)系統(tǒng)框圖

        3.2 關(guān)鍵技術(shù)和算法

        3.2.1 基于回退機(jī)制的UI遍歷算法

        現(xiàn)有的應(yīng)用輸入生成技術(shù)都是靜態(tài)分析輔助動態(tài)UI遍歷,但是靜態(tài)分析難以精準(zhǔn)獲得Activity跳轉(zhuǎn)路徑。UI遍歷算法采用的策略有隨機(jī)觸發(fā)和基于模型的觸發(fā)和系統(tǒng)化觸發(fā)等,其中隨機(jī)觸發(fā)策略效果可能很好也可能很差,并不受人為的控制,而基于模型的觸發(fā)策略可能存在冗余Activity跳轉(zhuǎn),降低了分析效率,比如SmartDroid,在分析完一條嫌疑路徑后,會重啟模擬器從應(yīng)用入口Activity重新遍歷,這會造成部分路徑重復(fù)遍歷了多遍,而且該系統(tǒng)使用的Activity限制方式是對Activity跳轉(zhuǎn)關(guān)系進(jìn)行限制,比如Activity A->Activity B和Activity B->Activity A就是兩種情況,這會造成路徑上可能存在環(huán),導(dǎo)致冗余Activity跳轉(zhuǎn),降低了分析效率。系統(tǒng)化觸發(fā)策略常常使用符號化執(zhí)行等方法,目的是有效觸發(fā)所有的漏洞嫌疑路徑,而目的是證明漏洞是存在的,不需要驗(yàn)證所有的漏洞嫌疑路徑,所以采用基于模型的觸發(fā)策略就足夠了。

        為了解決上述問題,本文提出的基于回退機(jī)制的UI遍歷算法,使用動態(tài)UI遍歷的方法獲得應(yīng)用Activity跳轉(zhuǎn)關(guān)系圖,并在遍歷到葉子Activity時執(zhí)行回退,返回到上一個Activity繼續(xù)進(jìn)行遍歷,以此減少冗余跳轉(zhuǎn)。

        基于回退機(jī)制的UI遍歷算法包含兩個部分:Android客戶端和服務(wù)端。Android客戶端是一個經(jīng)過修改的Android系統(tǒng),通過在Framework層上修改Android源碼,對Android關(guān)鍵API進(jìn)行插樁,實(shí)現(xiàn)Activity限制、UI交互模擬和信息收集三個功能。服務(wù)端實(shí)現(xiàn)初始化Activity限制、啟動模擬器、啟動應(yīng)用、回退、日志記錄和解析日志等功能?;诨赝藱C(jī)制的UI遍歷算法的流程圖如圖2所示。算法流程分為三個階段:準(zhǔn)備階段、遍歷階段和解析階段。

        (1)準(zhǔn)備階段

        準(zhǔn)備階段包括獲取應(yīng)用所有的Activity,并用之初始化Activity限制。然后啟動模擬器啟動應(yīng)用,為遍歷階段做準(zhǔn)備工作。

        服務(wù)端首先獲取應(yīng)用聲明的所有Activity,然后將這些Activity傳給客戶端作為Activity限制的初始值,Activity限制中存儲的是允許跳轉(zhuǎn)的目標(biāo)Activity,當(dāng)UI交互模擬引發(fā)應(yīng)用Activity跳轉(zhuǎn)時,會在Activity限制中查詢,如果Activity限制中存在目標(biāo)Activity,那么說明之前沒有遍歷過目標(biāo)Activity,允許執(zhí)行這個跳轉(zhuǎn),同時將目標(biāo)Activity在Activity限制中刪除,以免以后再次跳轉(zhuǎn)到該Activity,如果Activity限制中沒有目標(biāo)Activity,那么說明目標(biāo)Activity之前已經(jīng)遍歷過了,禁止執(zhí)行該跳轉(zhuǎn)可以避免造成冗余跳轉(zhuǎn)。

        初始化Activity限制后,服務(wù)端啟動Android模擬器,然后啟動應(yīng)用。因?yàn)楝F(xiàn)在的應(yīng)用經(jīng)常含有一個歡迎界面,應(yīng)用一般會在歡迎界面停留幾秒鐘,然后自動跳轉(zhuǎn)到入口Activity。為此,啟動應(yīng)用后判斷應(yīng)用處于入口Activity時進(jìn)行自動化UI遍歷。

        (2)遍歷階段

        遍歷階段分為三個步驟:觀察、交互和回退,在觀察階段算法有序遍歷當(dāng)前Activity上的所有控件,然后進(jìn)入交互階段,對這些控件進(jìn)行自動化觸發(fā),在回退階段對當(dāng)前Activity進(jìn)行判斷是否是葉子Activity,即在Activity限制下已經(jīng)對該Activity上的所有控件都進(jìn)行了模擬交互,并且沒有引發(fā)Activity跳轉(zhuǎn),那么該Activity為葉子Activity。如果是葉子Activity執(zhí)行回退,然后進(jìn)入新一輪的觀察、交互和回退。這三個步驟循環(huán)執(zhí)行,直到應(yīng)用入口Activity為葉子Activity時退出。

        觀察階段會獲取當(dāng)前界面上的所有可見控件。Android應(yīng)用的UI被組織成Hierarchy Viicewer的形式,每一個Activity都是一組UI元素的布局集合。首先獲取當(dāng)前Activity上的根視圖,以此獲得當(dāng)前界面的所有控件句柄。

        交互階段有序地對觀察階段獲得的控件句柄進(jìn)行UI交互模擬,進(jìn)行的模擬交互操作包括:點(diǎn)擊、滑動、文本輸入、選擇、長按等,通過這些操作促使Activity發(fā)生跳轉(zhuǎn)。然后根據(jù)Activity限制的規(guī)則判斷是否允許該跳轉(zhuǎn),圖3為單個Activity的UI遍歷策略。

        回退階段會判斷當(dāng)前Activity是否是葉子Activity。如果當(dāng)前Activity是葉子Activity,那么在服務(wù)端執(zhí)行回退功能,回退功能成功執(zhí)行后會回退到當(dāng)前Activity的前一個Activity,然后在前一個Activity上進(jìn)入新一輪的觀察和交互階段,因?yàn)橐呀?jīng)在Activity限制中刪除了當(dāng)前Activity,所以在前一個Activity上執(zhí)行UI交互模擬不會引發(fā)跳到當(dāng)前Activity的跳轉(zhuǎn)。如果回退功能發(fā)生錯誤導(dǎo)致回退失敗,比如開發(fā)者對回退事件進(jìn)行了重寫,此時服務(wù)端會對Activity限制進(jìn)行修復(fù),將入口Activity到前一個Activity路徑上的所有Activity重新添加到Activity限制中,同時重新啟動應(yīng)用入口Activity,進(jìn)入觀察和交互階段,保證應(yīng)用分析不會產(chǎn)生執(zhí)行序列缺失的情況。

        圖2 基于回退機(jī)制的UI遍歷算法流程圖

        圖3 Activity遍歷策略

        (3)解析階段

        解析階段通過對應(yīng)用自動化運(yùn)行過程中的日志記錄功能輸出的日志信息進(jìn)行解析,最后生成Activity跳轉(zhuǎn)關(guān)系圖及跳轉(zhuǎn)條件。

        通過修改Android源碼對關(guān)鍵API進(jìn)行插樁,服務(wù)端的日志記錄功能可以記錄應(yīng)用分析過程中的所有日志信息,然后獲取到發(fā)生跳轉(zhuǎn)的Activity關(guān)系信息,同時也對因?yàn)锳ctivity限制而禁止的Activity跳轉(zhuǎn)信息進(jìn)行記錄,因?yàn)檫@也是一條跳轉(zhuǎn)關(guān)系,只是為了減少冗余跳轉(zhuǎn)才對其進(jìn)行禁止的,所以也需要記錄禁止的Activity跳轉(zhuǎn),這樣才不會造成Activity跳轉(zhuǎn)關(guān)系缺失,最后通過解析日志文件即可生成該應(yīng)用的Activity跳轉(zhuǎn)關(guān)系圖。

        3.2.2界面輸入條件構(gòu)造

        使用基于回退機(jī)制的UI遍歷算法獲取應(yīng)用的Activity跳轉(zhuǎn)關(guān)系可能存在部分應(yīng)用組件不可達(dá)的情況,比如登錄等需要輸入特定字符串才會觸發(fā)跳轉(zhuǎn),這些情況會導(dǎo)致漏洞驗(yàn)證模塊無法獲取到漏洞觸發(fā)路徑,進(jìn)而導(dǎo)致漏洞驗(yàn)證失敗。

        為了解決這些問題,開發(fā)了界面輸入條件構(gòu)造模塊,添加了與人交互的接口,當(dāng)遇到登陸問題時可以使用該接口由人輸入特定字符串。同時,該模塊使用工具IC3獲取每個Activity、服務(wù)和廣播啟動需要的參數(shù)信息,然后根據(jù)這些參數(shù)信息構(gòu)造合適的輸入,系統(tǒng)觸發(fā)強(qiáng)制執(zhí)行應(yīng)用組件,以此提高漏洞觸發(fā)成功率,其流程圖如圖4所示。

        3.2.3 算法通用性

        論文提出的基于回退機(jī)制的UI遍歷算法可以同時部署在模擬器和真機(jī)上,具有較強(qiáng)的通用性。

        將基于回退機(jī)制的UI遍歷算法部署在模擬器上大規(guī)模自動化分析應(yīng)用,發(fā)現(xiàn)Android模擬器對系統(tǒng)環(huán)境要求較高,在低配置環(huán)境下運(yùn)行模擬器運(yùn)行速度十分緩慢,甚至?xí)心M器啟動失敗的情況發(fā)生。此外,發(fā)現(xiàn)部分應(yīng)用會對運(yùn)行環(huán)境有要求,比如請求SD卡、攝像頭等,這需要在創(chuàng)建模擬器時對其進(jìn)行相關(guān)配置,這又使得模擬器對系統(tǒng)環(huán)境有更高的要求,甚至有些應(yīng)用會檢測運(yùn)行環(huán)境是否為模擬器,如果是模擬器的話就會運(yùn)行報錯。為了解決模擬器對抗問題,擴(kuò)展算法,使其同樣可以部署在真機(jī)上,然后采用策略調(diào)度機(jī)制智能調(diào)配真機(jī)和模擬器,提高了應(yīng)用分析成功率。

        在真機(jī)上動態(tài)分析Android應(yīng)用需要解決的問題是應(yīng)用對真機(jī)環(huán)境的影響。有一些應(yīng)用的刪除方法會較為復(fù)雜,難以用通用的方法將其刪除,或刪除后仍然遺留部分文件影響真機(jī)環(huán)境。引入了環(huán)境恢復(fù)的方法,當(dāng)分析完應(yīng)用使用通用的方法未能刪除應(yīng)用,或存在殘留文件時,啟用環(huán)境恢復(fù),將真機(jī)環(huán)境恢復(fù)為最初的狀態(tài)。

        圖4 界面輸入條件構(gòu)造流程

        4 實(shí)驗(yàn)與結(jié)果評估

        本文通過實(shí)驗(yàn)來評估動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)的有效性,并與SmartDroid工具的動態(tài)分析模塊進(jìn)行對比分析。

        4.1 實(shí)驗(yàn)環(huán)境

        系統(tǒng)的服務(wù)端主要由Python腳本語言實(shí)現(xiàn),Android客戶端是通過修改Android Framework層定制的Android系統(tǒng)。所有的實(shí)驗(yàn)都是在內(nèi)存為8 GB的虛擬機(jī)上完成。

        4.2 實(shí)驗(yàn)結(jié)果

        4.2.1 實(shí)驗(yàn):證明基于回退機(jī)制的UI遍歷算法的有效性

        評估一個UI遍歷算法是否是有效的,需要從時間消耗、覆蓋率和輸出跳轉(zhuǎn)條件是否準(zhǔn)確這三方面進(jìn)行確認(rèn)。為此從百度移動應(yīng)用、安智市場、應(yīng)用寶等15家國內(nèi)電子市場和Google Play上選取了10 122款應(yīng)用。

        (1)時間消耗

        由于基于回退機(jī)制的UI遍歷算法和界面輸入條件構(gòu)造這兩部分沒有先后順序,可以同時進(jìn)行,所以算法總的時間消耗是這兩部分的最大值。其中IC3工具分析一款應(yīng)用的平均時間消耗約為2 min,而基于回退機(jī)制的UI遍歷算法分析一款應(yīng)用的時間消耗基本都在2 min以上,所以引入界面輸入條件構(gòu)造功能,并不會給算法帶來更多的時間消耗。

        將基于回退機(jī)制的UI遍歷算法和不使用回退機(jī)制的UI遍歷算法(擴(kuò)展自SmartDroid的動態(tài)分析部分)進(jìn)行對比,測試集為10 122款應(yīng)用。在相同配置的虛擬機(jī)上運(yùn)行這兩個動態(tài)分析算法,分析對比遍歷獲得的Activity跳轉(zhuǎn)數(shù)量和算法運(yùn)行時間的關(guān)系。

        對比基于回退機(jī)制的UI遍歷算法和不使用回退機(jī)制的算法結(jié)果,由于篇幅有限,僅截取部分應(yīng)用進(jìn)行展示見圖5,可以看到基于回退機(jī)制的UI遍歷算法在效率上比SmartDroid的算法平均提升59.21%,其中效率最高提升達(dá)到了83.33%。效率提升是通過平均每跳時間來計(jì)算的,即運(yùn)行的總時間除以生成的總跳轉(zhuǎn)數(shù)量。同時,在實(shí)驗(yàn)結(jié)果中發(fā)現(xiàn)有128個應(yīng)用效率降低了,經(jīng)分析是由于回退失敗造成的,這些應(yīng)用在實(shí)現(xiàn)過程中對回退事件進(jìn)行了重寫,導(dǎo)致算法分析進(jìn)行回退時發(fā)生失敗,但這部分應(yīng)用只占測試集的1.26%,并且效率降低最高為22.22%。統(tǒng)計(jì)實(shí)驗(yàn)中回退失敗的比例為5.78%,對整體分析效果來說在可以容忍范圍內(nèi)。從實(shí)驗(yàn)結(jié)果來看,基于回退機(jī)制的UI遍歷算法采用的回退機(jī)制和Activity限制方式確實(shí)能夠減少分析中的冗余跳轉(zhuǎn),提高分析效率。

        (2)Activity跳轉(zhuǎn)關(guān)系覆蓋率

        由于交互性問題或模擬器對抗問題,導(dǎo)致自動化UI遍歷不能夠有效觸發(fā)應(yīng)用所有組件,比如有些跳轉(zhuǎn)需要特定字符串才能成功觸發(fā)等等,還有部分應(yīng)用在模擬器上運(yùn)行時根本無法操作,為此引入的界面輸入條件構(gòu)造模塊,并采用策略調(diào)度機(jī)制智能調(diào)配真機(jī)和模擬器。對比基于回退機(jī)制的UI遍歷算法和SmartDroid算法,分析10 122款應(yīng)用,僅截取部分應(yīng)用進(jìn)行展示見圖6,Activity跳轉(zhuǎn)關(guān)系覆蓋率平均提升了42%,其中最高提升了225%,沒有發(fā)現(xiàn)覆蓋率降低的應(yīng)用。其中,使用基于回退機(jī)制的UI遍歷算法輸出的Activity跳轉(zhuǎn)數(shù)減去SmartDroid算法輸出的跳轉(zhuǎn)數(shù),然后除以Smart-Droid算法輸出的跳轉(zhuǎn)數(shù),該結(jié)果作為Activity跳轉(zhuǎn)關(guān)系覆蓋率提升百分比。

        (3)輸出跳轉(zhuǎn)條件的準(zhǔn)確率

        使用基于回退機(jī)制的UI遍歷算法對測試集中應(yīng)用進(jìn)行了分析,根據(jù)其輸出的Activity跳轉(zhuǎn)條件信息進(jìn)行手動確認(rèn)。算法獲取Activity跳轉(zhuǎn)觸發(fā)條件的方法是通過修改Android Framework層源碼,當(dāng)模擬的交互引發(fā)Activity跳轉(zhuǎn)時,會記錄該操縱類型,比如點(diǎn)擊、滑動等,同時會獲取相應(yīng)控件的句柄,然后Android本身會記錄控件的相對位置,據(jù)此通過遍歷父控件可以計(jì)算出控件的中心坐標(biāo),之后將操作類型和控件坐標(biāo)信息交給外部的控制端,最后外部控制端會采用adb shell input的方式根據(jù)坐標(biāo)信息執(zhí)行相應(yīng)的操作。因此只要外部控制端在執(zhí)行操作的時候沒有彈出框的遮擋,執(zhí)行的操作就會成功。通過以上分析,修改了Android Framework層源碼,屏蔽了應(yīng)用彈出框,所以理論上基于回退機(jī)制的UI遍歷算法獲得的Activity跳轉(zhuǎn)觸發(fā)條件準(zhǔn)確率應(yīng)該是100%。對分析輸出的2 000款應(yīng)用的路徑信息進(jìn)行手工確認(rèn),結(jié)果也是全部執(zhí)行成功。

        4.2.2 實(shí)驗(yàn):證明嫌疑路徑驗(yàn)證的有效性

        靜態(tài)分析方法輸出的嫌疑路徑準(zhǔn)確率較低,很多路徑都是不可達(dá)的,使用系統(tǒng)對10 122個應(yīng)用進(jìn)行自動化分析,靜態(tài)分析共發(fā)現(xiàn)大約300萬條嫌疑路徑,本文系統(tǒng)成功驗(yàn)證了大約190萬條路徑,驗(yàn)證成功率為64%。采用隨機(jī)觸發(fā)策略的Monkey對嫌疑路徑進(jìn)行UI觸發(fā),路徑驗(yàn)證成功率只有31%,遠(yuǎn)遠(yuǎn)低于本文系統(tǒng)。實(shí)驗(yàn)結(jié)果見表1。

        圖5 算法效率對比實(shí)驗(yàn)

        圖6 算法覆蓋率對比實(shí)驗(yàn)

        表1 嫌疑路徑驗(yàn)證功能有效性實(shí)驗(yàn)結(jié)果

        4.2.3 實(shí)驗(yàn):證明系統(tǒng)檢測漏洞的有效性

        選取10 000個應(yīng)用作為測試集,包括通過360APP漏洞掃描平臺和人工確認(rèn)的方式,選取5 000個包含WebView遠(yuǎn)程代碼執(zhí)行漏洞、拒絕服務(wù)漏洞、文件目錄遍歷漏洞、Https空檢驗(yàn)漏洞等已知漏洞模式的應(yīng)用和5 000個無漏洞的應(yīng)用,然后使用系統(tǒng)對該測試集進(jìn)行漏洞檢測。

        其中T為包含漏洞的應(yīng)用個數(shù),即5 000;A為確認(rèn)含有漏洞的應(yīng)用集合;B為系統(tǒng)輸出的含有漏洞的應(yīng)用集合。實(shí)驗(yàn)結(jié)果見表2。從結(jié)果來看召回率為96.12%,誤報率為2.66%,從實(shí)驗(yàn)結(jié)果來看,系統(tǒng)能夠有效檢測應(yīng)用漏洞。

        表2 系統(tǒng)檢測漏洞有效性實(shí)驗(yàn)結(jié)果

        4.3 結(jié)論

        本文提出的動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)主要優(yōu)點(diǎn)有以下幾方面:

        (1)本文提出的UI遍歷算法較其他遍歷算法在效率上有較好的提升,同時引進(jìn)了界面輸入條件構(gòu)造,能夠解決輸入問題,很好地提高應(yīng)用覆蓋率,并且輸出準(zhǔn)確的跳轉(zhuǎn)觸發(fā)條件,能夠確保后續(xù)驗(yàn)證時能夠準(zhǔn)確觸發(fā)漏洞。

        (2)能夠有效驗(yàn)證靜態(tài)分析生成的嫌疑路徑。

        (3)對現(xiàn)實(shí)世界中的大量應(yīng)用進(jìn)行的自動化分析,輸出漏洞信息準(zhǔn)確率也很高,達(dá)到96.12%。

        5 討論

        第4章介紹了動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)的主要優(yōu)點(diǎn)。本篇論文提出的基于回退機(jī)制的UI遍歷算法和界面輸入條件構(gòu)造在分析效率和覆蓋率上有所提高,而且能夠輸出準(zhǔn)確的跳轉(zhuǎn)條件信息,最后輸出的漏洞觸發(fā)路徑由于經(jīng)過了驗(yàn)證,其準(zhǔn)確率也很高,極大地提高了分析人員的分析效率。但是該技術(shù)的實(shí)現(xiàn)還有一些局限性,這需要在下一步工作中加以解決:

        (1)系統(tǒng)的界面輸入條件構(gòu)造模塊使用的工具IC3不僅能夠分析應(yīng)用組件直接觸發(fā)所需要的輸入信息,還可以分析組件之間交互時傳遞的信息,為了獲得這些信息,IC3在分析應(yīng)用時會進(jìn)行大量的遞歸操作,這使得IC3對機(jī)器內(nèi)存要求較高,分析復(fù)雜應(yīng)用時耗時較長,甚至存在分析失敗的可能。下一步工作需要對IC3進(jìn)行簡化,只保留其分析獲取組件直接觸發(fā)所需要的輸入信息功能。

        (2)漏洞驗(yàn)證模塊驗(yàn)證應(yīng)用漏洞時會在觸發(fā)信息收集模塊生成的Activity跳轉(zhuǎn)關(guān)系圖上遍歷獲得漏洞觸發(fā)路徑,或者是界面輸入條件構(gòu)造系統(tǒng)觸發(fā)服務(wù)或廣播接收,對于一些系統(tǒng)事件如短信接收等引起的應(yīng)用漏洞,系統(tǒng)暫時還不能進(jìn)行驗(yàn)證。下一步工作需要擴(kuò)展Activity跳轉(zhuǎn)關(guān)系圖,將系統(tǒng)事件的觸發(fā)方式添加到Activity跳轉(zhuǎn)關(guān)系圖上。

        (3)靜態(tài)分析模塊還不能夠分析native層的代碼,但是應(yīng)用開發(fā)者很可能會將漏洞或敏感行為隱藏在native層代碼中,這會導(dǎo)致系統(tǒng)分析應(yīng)用漏洞存在漏報。下一步工作需要將native層代碼分析功能加入靜態(tài)分析模塊。

        (4)由于使用了靜態(tài)分析,使得系統(tǒng)難以分析加殼應(yīng)用,為此在系統(tǒng)中可以引入判斷應(yīng)用是否經(jīng)過加殼的功能,以此決定系統(tǒng)流程。當(dāng)應(yīng)用經(jīng)過加殼后,直接進(jìn)行動態(tài)UI遍歷算法生成Activity跳轉(zhuǎn)關(guān)系圖,然后驗(yàn)證模塊觸發(fā)所有路徑,查看輸出的日志信息是否包含漏洞的關(guān)鍵API序列,以此完成加殼應(yīng)用的漏洞檢測。

        6 結(jié)束語

        本文采用動靜結(jié)合的方法提取Android應(yīng)用靜態(tài)嫌疑觸發(fā)路徑的入口條件,然后使用基于回退機(jī)制的UI遍歷算法生成Activity跳轉(zhuǎn)關(guān)系圖,根據(jù)該圖使用自動化UI觸發(fā)的方法對嫌疑路徑進(jìn)行精確制導(dǎo),同時對是否真的執(zhí)行漏洞觸發(fā)函數(shù)進(jìn)行驗(yàn)證。一方面能夠?qū)A繎?yīng)用進(jìn)行自動化分析,并能穩(wěn)定準(zhǔn)確輸出漏洞信息,另一方面提高了動態(tài)UI自動化觸發(fā)的效率。使用該系統(tǒng)對10 122個應(yīng)用進(jìn)行分析,實(shí)驗(yàn)結(jié)果表明系統(tǒng)在效率和大規(guī)模分析上都有良好的表現(xiàn)。下一步工作將研究簡化界面輸入條件構(gòu)造所用工具,加入符號化執(zhí)行等技術(shù)提高應(yīng)用覆蓋率,擴(kuò)展Activity跳轉(zhuǎn)關(guān)系圖,加強(qiáng)靜態(tài)分析,使其能夠分析native層代碼。

        [1] Smartphone OS Market Share.2015 Q2(IDC)[EB/OL].(2015-08).http://www.idc.com/prodserv/smartphone-os-marketshare.jsp.

        [2] 唐宇敬.Android平臺下軟件安全漏洞挖掘方法研究[D].河北邯鄲:河北工程大學(xué),2013.

        [3] 張玉清,方喆君,王凱,等.Android安全漏洞挖掘技術(shù)綜述[J].計(jì)算機(jī)研究與發(fā)展,2015,52(10):2167-2177.

        [4] 彭國軍,程德智,趙豪東,等.面向Android軟件動態(tài)行為監(jiān)測的UI自動化觸發(fā)與測試方法[J].保密科學(xué)技術(shù),2014(10):29-35.

        [5] Gibler C,Crussell J,Erickson J,et al.AndroidLeaks:Automatically detecting potential privacy leaks in android applications on a large scale[C]//Proceedings of the 5th International Conference on Trust&Trustworthy Computing(TRUST’12),Vienna,Austria,2012:291-307.

        [6] Arzt S,Rasthofer S,F(xiàn)ritz C,et al.Flowdroid:Precise context,flow,field,object-sensitive and lifecycle-aware taint analysis for android apps[C]//Proceedings of the 35th Annual ACM SIGPLAN Conference on Programming Language Design and Implementation(PLDI 2014),Edinburgh,UK,2014,49(6):259-269.

        [7] Cao Y,F(xiàn)ratantonio Y,Bianchi A,et al.EdgeMiner:Automatically detecting implicit control flow transitions through the Android framework[C]//Proceedings of the ISOC NetworkandDistributedSystemSecuritySymposium(NDSS 2015),San Diego,California,USA,2015.

        [8] Li L,Bartel A,Bissyandé T F,et al.IccTA:Detecting intercomponent privacy leaks in Android apps[C]//Proceedings of the 37th International Conference on Software Engineering(ICSE 2015),F(xiàn)irenze,Italy,2015:280-291.

        [9] Zheng C,Zhu S,Dai S,et al.Smartdroid:An automatic system for revealing ui-based trigger conditions in android applications[C]//Proceedings of the Second ACM Workshop on Security and Privacy in Smartphones and Mobile Devices(SPSM 2012),Raleigh,NC,USA,2012:93-104.

        [10] Enck W,Gilbert P,Han S,et al.TaintDroid:An informationflow tracking system for realtime privacy monitoring on smartphones[C]//Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation(OSDI 2014),Berkeley,CA,USA,2014:1-29.

        [11] Sounthiraraj D,Sahs J,Greenwood G,et al.Smv-hunter:Large scale,automated detection of ssl/tls man-in-themiddle vulnerabilities in Android apps[C]//Proceedings of the 21st Annual Network and Distributed System Security Symposium(NDSS 2014),San Diego,California,USA,2014.

        [12] Choudhary S R,Gorla A,Orso A.Automated test input generation for android:Are we there yet?(E)[C]//Proceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering(ASE 2015),Lincoln,Nebraska,USA,2015:429-440.

        [13] Moran K,Linares-Vásquez M,Bernal-Cárdenas C,et al.Automatically discovering,reporting and reproducing android application crashes[C]//Proceedings of the IEEE International Conference on Software Testing,Verification and Validation 2016(ICST’16),Chicago,USA,2016:33-44.

        [14] Machiry A,Tahiliani R,Naik M.Dynodroid:An input generation system for Android apps[C]//Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering(ESEC/FSE 2013),New York,USA,2013:224-234.

        [15] Ravindranath L,Nath S,Padhye J,et al.Automatic and scalable fault detection for mobile applications[C]//Proceedings of the 12th Annual International Conference on Mobile Systems,Applications,and Services(MobiSys’14),Bretton Woods,New Hampshire,USA,2014:190-203.

        [16] Hao S,Liu B,Nath S,et al.Puma:Programmable uiautomation for large-scale dynamic analysis of mobile apps[C]//Proceedings of the 12th Annual International Conference on Mobile Systems,Applications,and Services(MobiSys 2014),New York,USA,2014:204-217.

        [17] Mirzaei N,Bagheri H,Mahmood R,et al.Sig-droid:Automated system input generation for android applications[C]//Proceedings of the 26th IEEE International Symposium on Software Reliability Engineering(ISSRE 2015),Washington DC,USA,2015:461-471.

        [18] Octeau D,Luchaup D,Dering M,et al.Composite constant propagation:Application to android inter-component communication analysis[C]//Proceedings of the 37th InternationalConferenceonSoftwareEngineering-Volume 1(ICSE’15),Piscataway,NJ,USA,2015:77-88.

        SUN Xiaoyong,WANG Wei,HUO Wei,et al.Dynamic event sequence guidance forAndroid application vulnerability verification technology.Computer Engineering and Applications,2018,54(6):86-94.

        SUN Xiaoyong1,2,WANG Wei1,HUO Wei1,2,ZHOU Jianhua1

        1.Institute of Information Engineering,ChineseAcademy of Sciences,Beijing 100195,China
        2.School of Cyber Security,University of ChineseAcademy of Sciences(UCAS),Beijing 100190,China

        At present,Android application vulnerability detection methods have static analysis and dynamic analysis.The static analysis has high rate of false positive.Although dynamic analysis reduces the rate of false positive,its operating efficiency and coverage are low.In order to solve the problem of dynamic analysis,this paper proposes the dynamic event sequence guidance for Android application vulnerability verification technology.This technology generates the activity jump graph by using the method of automated UI trigger.Then precisely guiding the suspicious path of vulnerability.Finally,verifying the suspicious path of vulnerability is whether executing.Automatically analyzing 10,122 applications,the recall rate is 96.12%and false positive rate is 2.66%.The results show that the dynamic event sequence guidance for Android application vulnerability verification technology has good effective on automatically analyzing application.

        dynamic event sequence;automated UI trigger;guidance verification;Android

        目前Android應(yīng)用漏洞檢測方法分為靜態(tài)分析和動態(tài)分析。其中,靜態(tài)分析存在誤報率較高的問題,動態(tài)分析降低了誤報率,但是存在運(yùn)行效率和覆蓋率較低的問題。針對動態(tài)分析存在的問題,首次提出了動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù),該技術(shù)使用自動化UI觸發(fā)的方法生成Activity跳轉(zhuǎn)關(guān)系圖,然后對漏洞嫌疑路徑進(jìn)行精確制導(dǎo),最后對漏洞觸發(fā)嫌疑路徑是否執(zhí)行進(jìn)行驗(yàn)證。經(jīng)過對10 122個應(yīng)用進(jìn)行自動化漏洞分析,結(jié)果為召回率96.12%,誤報率2.66%。實(shí)驗(yàn)結(jié)果表明,動態(tài)事件序列制導(dǎo)的Android應(yīng)用漏洞驗(yàn)證技術(shù)對于自動化分析應(yīng)用漏洞有很好的效果。

        動態(tài)事件序列;自動化UI觸發(fā);制導(dǎo)驗(yàn)證;Android

        2016-11-09

        2017-01-23

        1002-8331(2018)06-0086-09

        A

        TP393

        10.3778/j.issn.1002-8331.1611-0187

        中國科學(xué)院百人計(jì)劃[人字(2013)46號];北京市科委重點(diǎn)項(xiàng)目課題(No.D161100001216001);中國科學(xué)院戰(zhàn)略性先導(dǎo)科技專項(xiàng)(No.XDA06010703)。

        孫驍永(1991—),男,碩士研究生,研究領(lǐng)域?yàn)锳ndroid應(yīng)用漏洞挖掘;王偉(1979—),男,工程師,主要研究領(lǐng)域?yàn)橐苿咏K端安全分析、軟件安全脆弱性分析,E-mail:wwei@iie.ac.cn;霍瑋(1981—),男,博士,副研究員,主要研究領(lǐng)域?yàn)檐浖┒赐诰蚝桶踩u測、基于大數(shù)據(jù)的軟件安全分析、智能終端安全分析;周建華(1986—),女,工程師,主要研究領(lǐng)域?yàn)橐苿咏K端安全分析。

        ◎模式識別與人工智能◎

        猜你喜歡
        模擬器漏洞靜態(tài)
        漏洞
        了不起的安檢模擬器
        靜態(tài)隨機(jī)存儲器在軌自檢算法
        盲盒模擬器
        劃船模擬器
        三明:“兩票制”堵住加價漏洞
        漏洞在哪兒
        兒童時代(2016年6期)2016-09-14 04:54:43
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        動態(tài)飛行模擬器及其發(fā)展概述
        機(jī)床靜態(tài)及動態(tài)分析
        99伊人久久精品亚洲午夜| 色丁香色婷婷| 尤物蜜芽福利国产污在线观看 | 无码国产伦一区二区三区视频| 超清纯白嫩大学生无码网站| 精品久久久久久无码人妻蜜桃| 亚洲精品无amm毛片| 亚洲人成综合网站在线| 日韩人妻系列在线视频| 亚洲精品视频1区2区| 亚洲裸男gv网站| 亚洲欧美日韩中文天堂| 性视频毛茸茸女性一区二区| 91九色人妻精品一区二区三区| 亚洲熟妇色自偷自拍另类| 精品国产av最大网站| 久久99精品中文字幕在| 国语对白自拍视频在线播放| 男人的天堂中文字幕熟女人妻| 国产特级毛片aaaaaa| 久久久亚洲经典视频| 国产av一区仑乱久久精品| 欧美最猛性xxxx| 成人黄色网址| 天天澡天天揉揉AV无码人妻斩| 国产av大片久久中文字幕| 亚洲最新无码中文字幕久久| 欧美操逼视频| 亚洲av人妖一区二区三区| 亚洲长腿丝袜中文字幕| 亚洲成熟丰满熟妇高潮xxxxx | 亚洲最新无码中文字幕久久| 国产va在线观看免费| 就国产av一区二区三区天堂| 你懂的视频网站亚洲视频| 日本一本之道高清不卡免费| 国内精品自在自线视频| 97se亚洲国产综合自在线图片| 黄色毛片视频免费| 一区二区三区视频偷拍| 每日更新在线观看av|