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

?

基于靜態(tài)分析的APK安全檢測系統(tǒng)的設(shè)計與實現(xiàn)

2018-10-23 02:02:54李軍虎陳曉升
計算機(jī)與數(shù)字工程 2018年10期
關(guān)鍵詞:應(yīng)用程序靜態(tài)代碼

曹 勇 李軍虎 陳曉升

(1.海軍工程大學(xué)信息安全系 武漢 430033)(2.海軍92665部隊 慈利 427200)(3.海軍91650部隊 湛江 524000)

1 引言

《2015移動應(yīng)用隱私安全認(rèn)知調(diào)查報告》指出,目前中國手機(jī)用戶數(shù)量超過13.06億,其中智能手機(jī)用戶量超過6.8億[1];隨著近年來智能手機(jī)用戶迅速增加,移動應(yīng)用程序也得到了迅速普及。但是,智能手機(jī)市場的迅速發(fā)展也帶來了如病毒、木馬,披著“正常軟件”外衣的惡意軟件,源代碼開放的Android系統(tǒng),程序質(zhì)量參差不齊的免費(fèi)應(yīng)用商城等與用戶密切相關(guān)的安全問題,用戶在享受應(yīng)用軟件所帶來便利的同時,個人信息面臨著各種各樣的安全威脅。大量隱私泄露和濫用權(quán)限的現(xiàn)象在Android平臺廣泛存在。

本文針對安卓市場第三方應(yīng)用存在大量隱私泄露及濫用權(quán)限的情況,通過研究面向Android應(yīng)用程序的代碼靜態(tài)分析工具,充分運(yùn)用反編譯分析技術(shù)、XMLParser解析技術(shù)、正則表達(dá)式關(guān)鍵詞匹配技術(shù),檢測應(yīng)用程序是否存在泄露用戶隱私和濫用手機(jī)權(quán)限。同時利用APK文件的反編譯、文件解析等方法進(jìn)行分析識別,提出采取安裝應(yīng)用程序之前展示可能涉及的權(quán)限和API的方法,為用戶選擇提供參考依據(jù),從而解決隱私信息泄露和權(quán)限濫用問題。

2 關(guān)鍵技術(shù)

2.1 Android惡意代碼注入原理

通過互聯(lián)網(wǎng)可以獲得Android平臺各類逆向工具來反編譯APK文件,就可以得到文件中包含的各類資源文件、簽名文件,以及關(guān)鍵的程序描述文件AndroidManifest.xml。將應(yīng)用文件和惡意代碼文件分別逆向得到各自的smali代碼和程序描述文件,在應(yīng)用的smali代碼中加入惡意代碼的部分,同時修改程序描述文件中的對應(yīng)條目就完成了惡意代碼的注入[2]。將已注入惡意代碼的應(yīng)用偽裝成正常應(yīng)用,應(yīng)用安裝后,惡意代碼通過一定條件觸發(fā)執(zhí)行,完成惡意行為。

2.2 APK共享權(quán)限

APK可以指定接口和數(shù)據(jù)給任何其他APK讀取,需要自己實現(xiàn)接口和共享的數(shù)據(jù)。隱式共享造成的隱私泄露是由AndroidManifest文件中可選屬性的濫用引起的[3]。通過共享用戶ID,擁有同一個用戶ID的多個APK可以配置成運(yùn)行在同一個進(jìn)程中。默認(rèn)可以互相訪問任意數(shù)據(jù),訪問其他APK的數(shù)據(jù)目錄下的數(shù)據(jù)庫和文件。

2.3 APK逆向技術(shù)

破解指的是反編譯APK文件進(jìn)行匯編級的代碼分析,并修改或插入自己的代碼,重新簽名打包為APK文件[4],以達(dá)到改變程序原有行為的目的。我們要破解一個APK文件,流程包括:反編譯、代碼分析、重新打包簽名。Android程序逆向的一般步驟為

1)用解壓縮工具打開apk文檔,得到詳細(xì)文檔結(jié)構(gòu);

2)將classes.dex文件解壓出來,然后使用工具反編譯成*.jar文件,再進(jìn)一步反編譯出Java文件;

3)利用Google提供的apktool工具得到xml文件;

4)將2)中得到的class文件和3)中得到的xml文件組合成一個Android工程,即可得到完整的APK源碼。

2.4 靜態(tài)分析技術(shù)

靜態(tài)分析是指在不運(yùn)行的情況下,采用詞法分析、語法分析等各種技術(shù)手段對程序文件進(jìn)行掃描從而生成程序的反匯編代碼,然后閱讀反匯編代碼來掌握程序功能的一種技術(shù)。一般有兩種方法:一種是閱讀反匯編生成的Dalvik字節(jié)碼,用IDA Pro分析dex文件,或者使用文本編輯器閱讀baksmali反編譯生成的smali文件;另一種是閱讀反匯編生成的java源碼,可以使用dex2jar生成jar文件,然后再使用jd-gui閱讀jar文件的代碼。通過上述兩種方法得到反匯編代碼后,采用下面的方法定位關(guān)鍵代碼。

1)信息反饋法:先運(yùn)行目標(biāo)程序,然后根據(jù)程序運(yùn)行時給出的反饋信息作為突破口尋找關(guān)鍵代碼;

2)特征函數(shù)法:跟信息反饋法類似;

3)順序查看法:從軟件的啟動代碼開始,逐行向下分析,掌握軟件的執(zhí)行流程;

4)代碼注入法:手動修改apk文件的反匯編代碼,加入Log輸出,配合LogCat查看程序執(zhí)行到特定點時的狀態(tài)數(shù)據(jù);

5)棧跟蹤法:輸出運(yùn)行時的棧跟蹤信息,然后查看棧上的函數(shù)調(diào)用序列來理解方法的執(zhí)行流程;

6)方法剖析:熱點分析和性能優(yōu)化。

靜態(tài)分析利用程序的靜態(tài)語法或結(jié)構(gòu)屬性來判定其惡意性,與動態(tài)分析相比,靜態(tài)分析有以下優(yōu)點[5]:

1)靜態(tài)分析允許進(jìn)行全面分析。靜態(tài)分析不受一個程序的特定執(zhí)行過程約束,并且適用于程序的所有執(zhí)行過程;

2)結(jié)果在執(zhí)行過程之前被給出,惡意行為難以偽裝;

3)沒有運(yùn)行時負(fù)擔(dān),能夠減少成本并且提高性能。

3 總體模塊設(shè)計

本文通過Android系統(tǒng)的體系結(jié)構(gòu),研究An?droid系統(tǒng)以及應(yīng)用程序的不安全因素等。通過研究面向Android應(yīng)用程序的代碼靜態(tài)分析工具,對這些API調(diào)用進(jìn)行截取,然后根據(jù)策略進(jìn)行判定。研究重要的反編譯拘束,對多個反編譯技術(shù)進(jìn)行分析對比,提出一種綜合靜態(tài)檢測方法。

3.1 流程設(shè)計

1)通過反編譯工具Dedexer反編譯APK文件獲得一個可以執(zhí)行機(jī)器操作的DDX文件,然后對該DDX文件進(jìn)行匹配式查找;

2)通過使用AXMLPrinter.jar工具包反編譯An?droidManifest.xml文件,得到可讀的XML文件,然后運(yùn)用XML解析技術(shù)JDOM解析XML文件[6];

3)對 AndroidManifest.xml文件[7],跟蹤<permis?sion>和<uses-permission>兩個標(biāo)簽,尋找系統(tǒng)權(quán)限和自定義權(quán)限,并檢測具有相同User ID的共享用戶ID屬性值;

4)對第三方應(yīng)用市場上的APK進(jìn)行測試和分析。

系統(tǒng)完整的檢測流程如圖1所示。

圖1 系統(tǒng)檢測流程

3.2 系統(tǒng)組成

整個系統(tǒng)組成有五個模塊:APK文件識別和解壓模塊,反編譯模塊,XML文件分析模塊,危險API分析模塊,界面操作和檢測信息展示模塊。系統(tǒng)模塊如圖2所示。

圖2 系統(tǒng)模塊圖

主要實現(xiàn)功能:

1)反編譯功能:將代碼文檔有dex反編譯為可讀性較高的ddx文檔,將二進(jìn)制的AndroidManifest.xml文件反編譯為可直接讀取的字符型文檔[8]。

2)權(quán)限分析功能:對反編譯后的文件進(jìn)行搜索匹配和分析已得到APK的權(quán)限信息和API使用情況。

3)聯(lián)合分析功能:將正在分析的APK與數(shù)據(jù)庫存儲的APK聯(lián)合分析,檢測是否存在通過使用相同的APK的sharedUserId實現(xiàn)數(shù)據(jù)共享[9]。

4)潛在威脅提醒功能:綜合一個APK的所有分析信息,實現(xiàn)對APK潛在威脅的說明。

3.3 詳細(xì)設(shè)計

1)APK文件識別和解壓模塊[10]

Android應(yīng)用程序識別和解壓模塊的結(jié)構(gòu)如圖3所示。

圖3 Android應(yīng)用程序識別和解壓模塊結(jié)構(gòu)圖

2)反編譯模塊

APK文件一般基于Java語言編寫,由于Java目標(biāo)代碼——字節(jié)碼(bytecode)中包含了大部分的源碼結(jié)構(gòu)等信息,較容易反編譯成Java源碼[11],反編譯流程如圖4所示。

圖4 反編譯流程圖

3)XML文件解析模塊

本文采用JDOM對XML文件執(zhí)行解析[12]。分別對shareuserID和權(quán)限進(jìn)行分析,最終了解該APK調(diào)用其它程序組件的情況。詳細(xì)流程如圖5所示。

圖5 XML文件解析流程圖

4)危險API檢測模塊[13]

對所有ddx文件進(jìn)行匹配式查找,就能發(fā)現(xiàn)該APK是否使用以及使用了多少有危險的API。詳細(xì)匹配流程如圖6所示。

圖6 匹配流程圖

3.4 系統(tǒng)實現(xiàn)

根據(jù)上述方法進(jìn)行了系統(tǒng)實現(xiàn),軟件界面外觀如圖7所示。主要分三部分:單個APK檢測、批量檢測和幫助說明。檢測結(jié)果根據(jù)內(nèi)容以樹狀結(jié)構(gòu)的結(jié)點顯示,結(jié)果顯示簡潔清晰。

圖7 系統(tǒng)運(yùn)行界面

4 測試驗證

結(jié)合國內(nèi)安卓第三方應(yīng)用市場現(xiàn)有的APK,通過使用本系統(tǒng)進(jìn)行測試驗證,驗證該方法的有效性。主要測試參數(shù)有:

1)APK調(diào)用的危險API種類和次數(shù)。

2)APK申請使用的系統(tǒng)權(quán)限和自定義權(quán)限[14]。

3)APK通過shareUserId屬性能夠間接使用的權(quán)限[15]。

4.1 對典型Android應(yīng)用的檢測結(jié)果

在百度Android平臺上下載全民斗地主APK,經(jīng)過上述方法的檢測,可以得到該APK的基本信息、權(quán)限和API調(diào)用信息,如圖8所示。

圖8 典型APK檢測信息

由圖8可以得知,該APK在執(zhí)行基本功能的基礎(chǔ)上將會要求網(wǎng)絡(luò)連接并且會申請用戶手機(jī)發(fā)送信息和撥打電話,系統(tǒng)將其評價為威脅度中(可能會造成額外的費(fèi)用支出)。通過實際地操作該APK,顯示該APK將會使用短信權(quán)限和網(wǎng)絡(luò)權(quán)限來補(bǔ)完游戲體驗,同時需要用戶支付相應(yīng)的費(fèi)用,并潛藏著需要申請撥打電話的操作,雖然沒有找到惡意盜取用戶資金的操作,但并沒有在第三方應(yīng)用市場上發(fā)現(xiàn)其存在收費(fèi)相關(guān)的信息介紹,此體驗結(jié)論與檢測結(jié)果吻合。

4.2 統(tǒng)計分析結(jié)果

對常用的游戲類和工具類APK進(jìn)行了測試比較,統(tǒng)計結(jié)果如圖9和圖10所示。

通過檢測結(jié)果可對比看出,實驗成功地從惡意軟件中檢測出了隱私泄露和濫用權(quán)限行為,證明了有效性。同時,統(tǒng)計數(shù)據(jù)表明本文采用的APK檢測方法檢測正確率高達(dá)95%,只存在少量的漏報和誤報。

圖9 游戲類APK申請權(quán)限數(shù)量

圖10 功能類APK申請權(quán)限數(shù)量

5 結(jié)語

針對目前國內(nèi)安卓智能手機(jī)用戶對第三方應(yīng)用市場的巨大依賴性及第三方應(yīng)用市場的混亂性,本文采用靜態(tài)分析技術(shù),逆向反編譯解析APK文件,檢測應(yīng)用程序是否存在泄露用戶隱私和濫用手機(jī)權(quán)限,詳細(xì)生成APK中使用的權(quán)限和危險API信息,分析APK可能對用戶產(chǎn)生的潛在威脅。從而指導(dǎo)用戶進(jìn)行選擇性安裝,避免了APK安裝后惡意行為導(dǎo)致的用戶利益損害。隨著安卓手機(jī)市場應(yīng)用的進(jìn)一步擴(kuò)大,以及用戶對安全性能和隱私保護(hù)的進(jìn)一步覺醒,本文提出的方法在手機(jī)安全防護(hù)和隱私保護(hù)中所起的作用將會日益凸顯。

猜你喜歡
應(yīng)用程序靜態(tài)代碼
靜態(tài)隨機(jī)存儲器在軌自檢算法
刪除Win10中自帶的應(yīng)用程序
電腦報(2019年12期)2019-09-10 05:08:20
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
機(jī)床靜態(tài)及動態(tài)分析
具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
50t轉(zhuǎn)爐靜態(tài)控制模型開發(fā)及生產(chǎn)實踐
上海金屬(2013年6期)2013-12-20 07:57:59
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
泊头市| 盘山县| 当雄县| 秭归县| 剑阁县| 河池市| 安丘市| 长春市| 平山县| 武邑县| 自治县| 浦北县| 保德县| 泸溪县| 武安市| 泰和县| 屏边| 南召县| 裕民县| 鱼台县| 遵义市| 英吉沙县| 石狮市| 新余市| 诸暨市| 三亚市| 北流市| 沁阳市| 阳泉市| 南雄市| 来安县| 柯坪县| 邛崃市| 沁阳市| 综艺| 招远市| 嘉义县| 安远县| 攀枝花市| 北辰区| 泰来县|