• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    安卓惡意代碼及軟件檢測方法研究

    2022-04-09 12:56:40王晨光宋繼紅
    電腦知識與技術 2022年6期

    王晨光 宋繼紅

    摘要:Android系統(tǒng)作為現(xiàn)階段社會廣泛使用的移動端操作系統(tǒng),雖然給社會帶來了很多便利,但是隨著Android系統(tǒng)上惡意軟件的滋生和傳播,也給用戶造成了巨大的安全威脅。文章從安卓的安全機制進行分析,針對各種可能對Android操作系統(tǒng)造成安全威脅的漏洞進行提煉和分析,通過靜態(tài)分析的方式對反編譯后的smali文件中的信息進行提煉和總結,根據(jù)組件、權限、url和所對應的敏感api進行語義分析,總結App可能對用戶產(chǎn)生的安全威脅。

    關鍵詞:靜態(tài)分析;惡意軟件檢測;敏感API;Smali;Soot

    中圖分類號:TP393? ? ? ? 文獻標識碼:A

    文章編號:1009-3044(2022)06-0031-03

    開放科學(資源服務)標識碼(OSID):

    Android是由Google公司與開放手機聯(lián)盟開發(fā)的一款基于Linux內核的操作系統(tǒng),已經(jīng)過多年,至今Android應用市場已形成較大的規(guī)模,例如官方的Google應用市場,第三方安卓應用市場應用寶等,雖然大量的移動應用的出現(xiàn)給人們的生活帶來了很多便利,但與此同時,由于其系統(tǒng)的開源性也導致很多惡意應用乘虛而入,破壞Android系統(tǒng)的安全性,根據(jù)360烽火實驗室2019年報告[1]指出,中國平均每天都會攔截手機的惡意程序攻擊259.2萬次,其中在移動金融行業(yè),移動流量產(chǎn)業(yè)和移動社交領域都出現(xiàn)了對于經(jīng)濟效益的攻擊。根據(jù)奇安信 2020年報告[2]指出,現(xiàn)在黑色產(chǎn)業(yè)鏈仍然活躍并相比2019年的攻擊方式,又多了很多新型攻擊手段,對于用戶隱私和財產(chǎn)安全威脅嚴重,其中山寨網(wǎng)貸、刷量廣告、棋牌私彩等黑色產(chǎn)業(yè)鏈最為突出,對于用戶的隱私信息和經(jīng)濟利益會造成巨大的威脅,所以對于Android的安全性治理應該隨著現(xiàn)代的發(fā)展進行進一步的更新以及深入。

    1 Android安全機制

    Android系統(tǒng)在Linux原有的安全機制的基礎上結合移動端特性,設計了進程沙箱隔離機制、應用程序簽名機制和權限機制等安全機制,保證應用程序的安全性[3]。

    1.1 進程沙箱隔離機制

    Android應用程序移植Linux操作系統(tǒng)的多用戶隔離機制,讓應用程序在安裝時被賦予獨特的用戶標識(UID),并永久保持;應用程序及其運行的Dalvik虛擬機運行于獨立的Linux進程空間,與UID不同的應用程序完全隔離。雖然是隔離的,但在用戶要共享資源時,同時提供共享資源的方式,保證資源的共享順利完成。這種安全機制,在發(fā)現(xiàn)惡意軟件的時候,可以將惡意軟件隔離在一個單獨的空間,保證其他應用程序的安全。

    1.2 應用程序簽名機制

    Android應用程序的簽名對每一個應用程序都必不可少。為了標志代碼作者和監(jiān)測應用程序的改變,開發(fā)者需要擁有私有密鑰,從而可以在應用程序之間安全地共享資源。不同的應用程序通過相同的簽名可以相互授權訪問API[4]。

    1.3 權限機制

    Android權限機制是指在應用程序成功運行時所需要的權限,在Android 6.0之后,具體權限在AndroidManifest.xml文件中<uses-permisson>標簽中通過android:protectionLevel屬性進行設置分為4類,Normal類:低風險權限,任何應用都可以申請,在安裝應用時系統(tǒng)默認授權;Dangerous類:高風險權限,在安裝時需要用戶確認才可以使用;Signature類:僅當申請該權限的應用程序與聲明該權限的程序使用相同的簽名時,才能賦予該權限;SignatureOrSystem類:僅當申請該權限的應用程序位于相同的Android系統(tǒng)鏡像中,或申請該權限的應用程序與聲明該權限的程序使用相同的簽名時,才賦予該權限。

    2 Android漏洞分析

    2.1 惡意軟件

    Android的惡意軟件是各種各樣的,并且有很多種分類的方法。其中按照傳統(tǒng)進行分析,卿思漢[5]等人表示可以分為木馬類、病毒類、后門類、僵尸類、間諜軟件類、恐嚇軟件類、勒索軟件類、廣告軟件類和跟蹤軟件類等。另一種是按照惡意軟件特征進行分類,Zhou[6]等人認為可以分為惡意軟件安裝、惡意軟件運行、惡意負載、權限使用等。在其中360官方2020年報告[7]顯示指出,其中惡意軟件行為主要為惡意扣費、資源消耗、流氓行為,所以直接可以看出,惡意軟件的目的直接和經(jīng)濟聯(lián)系到一起,為謀取利益而進行惡意行為。

    2.2 Android敏感權限

    Android 6.0 版本以后,Android官方加強了對權限的管理,其中Android的敏感權限都放在了Dangerous權限類中,在Dangerous權限的類中分為9個大類包含24個敏感權限,在Androidapp運行的時候對于安全級別為dangerous的服務進行授權時,需要用戶的授權同意,才可以獲得授權,其中還有與危險權限不同的特殊權限,SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS 特別敏感對系統(tǒng)進行操作,因此大多數(shù)應用不應該使用這兩個權限,如果某應用需要其中一種權限,必須在清單中聲明該權限,并且發(fā)送請求用戶授權的 intent。這樣可以通過用戶的操作,提高Android系統(tǒng)安全性。

    2.3 第三方SDK漏洞

    SDK全稱:Software Development Kit,通常是指專業(yè)公司提供的第三方服務,以jar包/so庫的形式集成到應用中,封裝了很多功能。對于開發(fā)者而言屬于黑盒,無法知曉其中是否安全。所以由于這個原因,很多第三方公司對此進行利用,導致很多漏洞的出現(xiàn),包括繞過沙盒限制、訪問應用私有組件、推送惡意消息、誘導訪問釣魚網(wǎng)站、訪問用戶隱私數(shù)據(jù)等。

    3 Android漏洞分析方法

    3.1 惡意數(shù)據(jù)集收集

    Android的惡意軟件檢測離不開數(shù)據(jù)集的支持,但是由于Android應用更新較快,所以數(shù)據(jù)集的收集也成為當前一個非常困難的事情,當前最常用的有兩類,一類是惡意樣本的共享網(wǎng)站,例如VirusShare[8]等;另一類是具有家族信息的數(shù)據(jù)集,例如Drebin[9]數(shù)據(jù)集、開源DroidBench[10]數(shù)據(jù)集等。

    3.2 Androidapp介紹

    Androidapp是一個被打包的Apk文件,而Apk文件同時也是一個壓縮文件,通過解壓可以看到每一個Apk文件的基本組成結構,如表1所示。

    其中最為重要也是需要進行重點分析的是AndroidManifest.xml文件和classes.dex文件,AndroidManifest.xml文件中主要存儲Android四大組件,其中Activity是用戶操作的可視化頁面,它為用戶提供了一個完成操作指令的窗口。Service是用作后臺處理耗時的邏輯,Content Provider一個應用程序指定數(shù)據(jù)集提供給其他程序,實現(xiàn)數(shù)據(jù)共享。 BroadcastReceiver運用在應用程序之間的傳輸信息的機制,對發(fā)送出來的廣播進行過濾并響應。Androidapp的四大組件之間通過一個運行綁定機制——Intent機制將四大組件聯(lián)系起來,進行通信以及程序之間的交互。

    3.3 Androidapp逆向工程

    1) Apk反編譯

    通過Apktool工具反編譯Apk得到以下文件結構,如表2所示。

    其中最關鍵的是通過Smali文件夾中的以.smali文件結尾的文件獲取信息。在smali文件中,可以通過指定的讀取smali文件的方法提取文件的信息。

    2) smali文件

    Smali是用于Dalvik(Android虛擬機)的反匯編程序實現(xiàn),一個smali文件相對應一個java的.class文件,如果java有內部類的格式,則寫為ClassName$InnerClassA表示,所以smali文件個數(shù)要比對應的class的文件個數(shù)數(shù)量多。

    (1) 在smali文件中存放了很多和java文件所對應的指令代碼,在smali文件中的指令都是以“.”開始,對應java文件的常用指令如表3所示。

    (2) smali文件中的也有屬于自己的數(shù)據(jù)類型,它的類型是和java文件中的數(shù)據(jù)類型一一對應的,例如smali文件中的“I”表示java文件中的int,具體常用的類型如表4所示。

    通過對于smali文件的解析可以得到每個class的詳細信息,如下部分smali文件代碼所示:

    .class public Lmiui/app/ActivityOptionsHelper;//指定包名和類名

    .super Ljava/lang/Object;//父類名

    .source "SourceFile"http:// 源文件名稱

    .method private constructor <init>()V// 函數(shù)的名稱

    .locals 0// 寄存器個數(shù)

    .line 1// 行數(shù)

    invoke-direct {p0}, Ljava/lang/Object;→<init>()V// 方法調用一個參數(shù)

    return-void// 返回值

    .end method// 結束任務

    在上述代碼中可以通過前三行代碼判斷這個文件的類關系,“.method”為函數(shù)的開始,隨后可知函數(shù)的名稱,在函數(shù)中“invoke”的字符,后面也會有調用函數(shù)的名稱,可以得到調用函數(shù)的關系,在搜索到“.end method”中,代表此函數(shù)的結束,通過遍歷文件的這個方法可以提取所有Apk信息中所調用的api,經(jīng)過以上步驟可以通過這種方式獲取所有靜態(tài)特征。

    在得到想要的信息后,可以和Virustutal[11]提供的官方分析工具給出分析信息并比較,查看是否存在問題,從而增加得到數(shù)據(jù)的準確性。

    3.4 Android靜態(tài)分析

    靜態(tài)分析法通過對惡意軟件本身二進制文件、可執(zhí)行文件或者通過反編譯文件提取到的應用程序組件、權限、API等靜態(tài)特征進行分析[12],對比惡意軟件與正常軟件的靜態(tài)特征的異同來發(fā)現(xiàn)惡意軟件。靜態(tài)檢測的優(yōu)點是檢測速度快、可以上傳Apk到服務端進行檢測,缺點是無法有效識別利用Android系統(tǒng)漏洞和靜態(tài)檢測對抗技術的惡意應用識別[3]。

    1) Soot框架

    Soot[13]是Mc Gill大學的Sable研究小組所研發(fā)的一種Java優(yōu)化框架,現(xiàn)在被世界各地的研究人員用來對Java工程和Android應用進行分析。其中最關鍵的是其中定義的五種數(shù)據(jù)結構,分別是Scene、SootClass、SootMethod、SootField、Body。這些數(shù)據(jù)結構使用面向對象技術來實現(xiàn),所以可以被輕易使用。通過Soot對于Apk的靜態(tài)分析可以得到Apk的詳細信息例如權限,Android四大組件信息以及Intent的調用信息。

    通過Soot框架進行的某app調用權限以及組件部分信息的情況圖,可以通得出結果,如圖1所示。

    在將權限收集完成后,與官方所給出的風險提示相比較,得出所含有的風險類型以及風險詳細描述,如發(fā)現(xiàn)第三方所需要的權限與數(shù)據(jù)庫內容不相符,則加入數(shù)據(jù)庫中并產(chǎn)生提示,在后續(xù)的維護中,進行第三方權限的補充收集工作。在通過代碼獲取四大組件的部分信息如圖2所示。

    通過簡單的邏輯代碼可以提取在權限文件中所屬的四大組件使用Intent-filter便簽的信息,例如<action name="miui.intent.calculator.FLOAT_WINDOW_SERVICE">,屬于service組件中使用intent-filter進行標注的組件,其他三大組件和此方法的提取方式一致,通過算法實現(xiàn)對intent-filter中action和category信息進行提取。

    通過對Android中四大組件信息的收集,可以分析出 exported 屬性是否為私有或者公有,通過判斷是否存在intent filter 和 android:exported的設置,對于結果進行收集,通過權限的設置和上述屬性的配置,判斷在四大組件中是否存在組件暴露的風險特征,如果出現(xiàn)了風險,則進行組件判斷,判斷是由哪個組件的產(chǎn)生的風險,跟蹤組件信息,從而定位準確位置。

    2) 語義分析

    通過在各大應用市場的Apk收集和上文所提到的惡意軟件數(shù)據(jù)集的提取,將其中的權限作為語義分析的特征之一,其中提取第三方權限和官方權限信息1800余條并分類。再通過Psout所提供的數(shù)據(jù)集,將其中敏感的權限取出保存至txt文件中。依據(jù)所提取到的權限與已提取到的數(shù)據(jù)進行數(shù)據(jù)匹配得到敏感Api,作為語義分析的第二特征。將所有提取到的特征利用集合進行存儲,再將所得到結果的集合組合,生成最終的數(shù)據(jù)集文件,利用weka進行所得到特征的數(shù)據(jù)集分析,通過決策樹,貝葉斯分類器算法進行訓練,根據(jù)訓練所得的比率,設定閾值從而預測App是否屬于惡意軟件。

    4 結論

    通過對于Androidapp的逆向工程以及反編譯知識,了解到在Androidapp背后所產(chǎn)生的種種安全。在對于權限分析和第三方SDK的分析中,可能會因為版本的變換以及權限對應Api的改變導致分析的不正確產(chǎn)生偏差,所以在后續(xù)的研究中要加強對于出現(xiàn)問題的解決能力。隨著5G時代的到來,安全的信息化建設更是重中之重,在對于移動端的安全保證方面,還需要更加努力地繼續(xù)深入研究。

    參考文獻:

    [1] 2019年Android惡意軟件專題報告 - 360 核心安全技術博客[EB/OL]. [2021/12/1]. https://blogs.#/post/review_android_malware_of_2019.html.

    [2] 2020Android平臺安全亂象:超230萬惡意程序被截獲[EB/OL].[2021/12/1].https://baijiahao.baidu.com/s?id=169519861 2017629671.

    [3] 王思遠,張仰森,曾健榮,等.Android惡意軟件檢測方法綜述[J].計算機應用與軟件,2021,38(9):1-9.

    [4] 張琳.Android安全技術分析[J].電子技術與軟件工程,2016(18):211.

    [5] 卿斯?jié)h.Android安全研究進展[J].軟件學報,2016,27(1):45-71.

    [6] Zhou Y J,Jiang X X.Dissectingandroid malware:characterization and evolution[J].2012 IEEE Symposium on Security andPrivacy,2012:95-109.

    [7] 你的Android手機安全嗎?這份報告驚呆你!-安全資訊-360官網(wǎng)[EB/OL]. [2021/12/1]. https://www.#/n/11558.html.

    [8] VirusShare.com. https://virusshare.com/.

    [9] The Drebin Dataset. https://www.sec.tu-bs.de/~danarp/drebin/.

    [10] DroidBench. https://github.com/secure-software-engineering/DroidBench/.

    [11] VirusTotal. https://www.virustotal.com/gui/.

    [12] 蔣煦,張長勝,戴大蒙,等.Android平臺惡意應用程序靜態(tài)檢測方法[J].計算機系統(tǒng)應用,2016,25(4):1-7.

    [13] Soot - A Java optimization framework. https://github.com/soot-oss/soot.

    【通聯(lián)編輯:代影】

    丹棱县| 噶尔县| 齐河县| 左贡县| 安达市| 黄浦区| 东明县| 鄯善县| 江川县| 错那县| 公主岭市| 江油市| 吴桥县| 扎赉特旗| 保康县| 吉首市| 景泰县| 嫩江县| 文化| 普洱| 宝兴县| 乐山市| 阳春市| 凤庆县| 宝丰县| 永寿县| 德昌县| 衡山县| 洛扎县| 通渭县| 桐城市| 成安县| 赫章县| 响水县| 瓦房店市| 中宁县| 英超| 永仁县| 枞阳县| 五莲县| 奈曼旗|