国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種Android應用漏洞檢測方法與流程

      文檔序號:12064204閱讀:1147來源:國知局
      一種Android應用漏洞檢測方法與流程

      本發(fā)明涉及一種基于靜態(tài)Dalvik虛擬機的Android應用漏洞檢測方法。



      背景技術:

      2007年Google公司正式發(fā)布了Android智能手機操作系統(tǒng),并逐漸成為智能手機的主流操作系統(tǒng),Android系統(tǒng)的應用數(shù)量突破百萬個。隨著Android應用數(shù)量的激增,安全研究員、黑客也越來越重視Android應用的漏洞挖掘,越來越多的應用被爆出存在安全漏洞,導致用戶的隱私數(shù)據(jù)被盜取、手機中木馬病毒,甚至導致嚴重的經(jīng)濟損失。目前Android應用的常見漏洞包括敏感信息泄露、權限泄露、拒絕服務、Webview遠程代碼執(zhí)行、不安全地加載鏈接庫、本地密碼學誤用等類型,大多數(shù)漏洞在于程序員對Android系統(tǒng)和框架API使用不當和配置不當、組件權限設置不當/輸入數(shù)據(jù)處理不當、應用邏輯和API(本地及遠端)使用不當、或者使用有漏洞的第三方組件等等。

      早期Android應用的漏洞檢測主要通過反編譯應用APK文件,然后人工審計反編譯來發(fā)現(xiàn)安全漏洞。人工審計的方法主要缺點是速度慢、效率低、覆蓋率低,主要依靠安全人員的經(jīng)驗知識來檢測漏洞。隨著安全研究的深入及應用數(shù)量的激增,國內逐漸出現(xiàn)Android應用自動化審計工具,主要使用靜態(tài)分析和關鍵詞匹配技術。這些自動化審計工具主要檢測的應用漏洞包括:明文保存敏感信息、文件權限問題、日志信息泄露、組件權限問題、明文傳輸、拒絕服務等,大部分是漏洞特征比較明顯的漏洞,對于比較復雜的漏洞則無法檢測。同時,由于靜態(tài)分析和關鍵詞匹配缺少上下文分析和可達性分析,檢測到的漏洞可能根本不會調用到,所以會產(chǎn)生大量誤報。

      除了靜態(tài)分析漏洞檢測工具,也有基于動態(tài)分析的漏洞檢測工具,例如Drozer和IntentFuzzer。IntentFuzzer只能夠動態(tài)檢測應用在處理Intent時是不是存在漏洞,Drozer可以通過命令行交互動態(tài)檢測應用漏洞,但是只能檢測到部分可以交互的漏洞,并且需要較多人工工作。動態(tài)分析相比靜態(tài)分析的優(yōu)點是準確率更高,但是缺點是速度較慢、效率較低、無法覆蓋所有執(zhí)行路徑。



      技術實現(xiàn)要素:

      為了克服現(xiàn)有技術的缺點,本發(fā)明提供了一種基于靜態(tài)Dalvik虛擬機的Android應用漏洞檢測方法,針對目前Android應用漏洞檢測在靜態(tài)分析及動態(tài)分析存在的缺點,本方法在Android應用靜態(tài)反編譯的基礎上,結合正則匹配及過濾引擎、函數(shù)調用圖及數(shù)據(jù)流分析技術,解決了傳統(tǒng)靜態(tài)分析關鍵詞匹配的誤報問題,通過部分模擬Dalvik虛擬機代碼執(zhí)行動態(tài)分析漏洞代碼,大大提升了Android應用漏洞檢測的準確率及檢測效率。

      本發(fā)明所采用的技術方案是:一種Android應用漏洞檢測方法,包括如下步驟:

      步驟一、提取漏洞檢測向量中的漏洞特征;

      步驟二、判斷漏洞特征是否涉及函數(shù)調用:如否,則根據(jù)反編譯的smali代碼和應用配置文件AndroidManifest.xml文件進行匹配;如是,則進入步驟三;

      步驟三、根據(jù)反編譯的smali代碼確定函數(shù)調用圖特征、函數(shù)簽名特征和函數(shù)參數(shù)特征;

      步驟四、如果漏洞檢測向量中的函數(shù)調用圖特征、函數(shù)簽名特征和函數(shù)參數(shù)特征均能成功匹配,則檢測到安全漏洞。

      與現(xiàn)有技術相比,本發(fā)明的積極效果是:

      本發(fā)明設計的基于靜態(tài)Dalvik虛擬機的Android應用漏洞檢測技術結合了傳統(tǒng)靜態(tài)分析速度快、效率高的優(yōu)點,在靜態(tài)反編譯Android應用為smali代碼的基礎上,結合正則匹配及過濾引擎、函數(shù)調用圖關聯(lián)及數(shù)據(jù)流分析技術,大大降低了傳統(tǒng)靜態(tài)分析的誤報率。同時,本發(fā)明結合大量Android應用安全漏洞的專家知識經(jīng)驗,采用插架化可擴展架構設計,可方便地進行漏洞檢測擴充,大大提高了Android應用漏洞檢測的先進性。同時,本發(fā)明基于靜態(tài)Dalvik虛擬機模擬指令執(zhí)行,針對關鍵代碼進行動態(tài)模擬來檢測應用漏洞,大大提高了漏洞檢測的準確率及覆蓋率。

      本發(fā)明結合了傳統(tǒng)Android應用漏洞檢測中靜態(tài)分析與動態(tài)分析的優(yōu)點,能夠快速、準確地檢測出Android應用存在的安全漏洞,可以提高Android應用安全研究人員的漏洞挖掘效率,同時也可以為應用開發(fā)者提供全面的安全漏洞檢測信息,協(xié)助修補安全漏洞,降低用戶的使用風險。

      附圖說明

      本發(fā)明將通過例子并參照附圖的方式說明,其中:

      圖1為本發(fā)明的原理框圖;

      圖2為基于靜態(tài)Dalvik虛擬機的漏洞檢測流程圖;

      圖3為漏洞檢測向量的函數(shù)調用特征示意圖;

      圖4為函數(shù)調用的另一實例示意圖。

      具體實施方式

      本發(fā)明的原理如圖1所示,首先基于大量Android應用安全漏洞經(jīng)驗知識提取漏洞檢測向量,每個漏洞檢測向量包含了漏洞的檢測特征信息,然后根據(jù)漏洞檢測向量及基于靜態(tài)Dalvik虛擬機的漏洞檢測技術來檢測Android應用的安全漏洞。在進行漏洞檢測的時候,首先將Android應用反編為smali代碼,然后采用靜態(tài)模擬Dalvik虛擬機執(zhí)行來匹配漏洞檢測向量,如果匹配到漏洞檢測向量則表示檢測到安全漏洞。

      漏洞檢測向量主要由安全專家基于大量Android應用安全漏洞經(jīng)驗知識庫進行人工總結、提取,并不斷更新,覆蓋了所有常見的Android應用安全漏洞,保證了漏洞檢測向量的全面性和時效性。漏洞檢測向量主要分為兩類:1.不涉及函數(shù)調用的一般配置錯誤類漏洞;2.涉及一個或多個函數(shù)調用的漏洞。漏洞檢測向量主要包含以下信息:漏洞標題、危險等級;漏洞描述、修復建議;漏洞特征:漏洞的函數(shù)調用、參數(shù)設置、配置信息。

      基于靜態(tài)Dalvik虛擬機的漏洞檢測技術主要模擬和追蹤Android系統(tǒng)中關鍵函數(shù)的調用及函數(shù)參數(shù)的傳遞,在漏洞檢測過程中主要基于Android應用反編譯smali代碼及漏洞檢測向量進行檢測,主要流程如圖2所示,包括如下步驟:

      1、根據(jù)漏洞檢測向量得到關鍵的漏洞特征,包括函數(shù)調用圖特征、參數(shù)特征、配置特征等信息;

      2、對于不涉及函數(shù)調用的配置錯誤等漏洞檢測向量,可直接根據(jù)反編譯的smali代碼和應用配置文件AndroidManifest.xml文件進行匹配。對于涉及函數(shù)調用的漏洞檢測向量,則根據(jù)應用反編譯的smali代碼分析出函數(shù)調用圖;

      3、根據(jù)漏洞檢測向量中的函數(shù)調用圖及函數(shù)簽名特征搜索反編譯得到的函數(shù)調用圖,匹配相同的函數(shù)調用圖;

      4、針對匹配到的函數(shù)調用圖,再根據(jù)漏洞檢測向量中的參數(shù)特征信息來匹配是否有相同的函數(shù)調用參數(shù);

      5、如果漏洞檢測向量中的函數(shù)調用圖特征、函數(shù)簽名特征和函數(shù)參數(shù)特征都能成功匹配,那么表示成功匹配到該漏洞檢測向量,檢測到該漏洞。

      漏洞檢測向量的函數(shù)調用特征一般包含一個或多個關鍵函數(shù)的組合調用,如圖3所示,該圖表示漏洞向量的函數(shù)調用圖特征,F(xiàn)unctionA表示任意函數(shù),Android_API_1函數(shù)及Android_API_2函數(shù)表示Android系統(tǒng)提供的API調用。我們在匹配函數(shù)調用特征的時候,首先匹配Android_API_1函數(shù)的調用,如果找到調用Android_API_1的函數(shù)FunctionA,則繼續(xù)在FunctionA函數(shù)的代碼中查找是否存在Android_API_2函數(shù)的調用,如果存在,則表示匹配到該檢測向量的函數(shù)調用特征。

      函數(shù)簽名的匹配使用smali語法的函數(shù)簽名命令方法,如下所示:

      methodName(III)Lpackage/name/ObjectName;

      methodName標識函數(shù)名,括號中表示參數(shù)類型,這里III表示三個整形參數(shù),Lpackage/name/ObjectName;表示返回值的類型。通過該函數(shù)簽名可以唯一標識一個函數(shù)。

      漏洞檢測向量中函數(shù)的參數(shù)特征對于漏洞的檢測非常重要,本發(fā)明通過靜態(tài)Dalvik虛擬機技術來模擬函數(shù)參數(shù)的傳遞及設定。我們首先通過函數(shù)調用圖特征和函數(shù)簽名特征定位到反編譯的smali代碼塊,假設函數(shù)調用如圖4所示:我們假設該漏洞檢測向量的函數(shù)參數(shù)特征是Android_API_1(ARG1,ARG2),即第一個函數(shù)參數(shù)值為ARG1,第二個參數(shù)值為ARG2。為了檢測是否匹配該漏洞向量,我們必須檢測已經(jīng)匹配到的函數(shù)調用是否有相同的參數(shù)設定,步驟如下:

      1、首先記錄Android_API_1在FunctionA函數(shù)代碼塊中的位置P1,并得到Android_API_1函數(shù)調用時所用到的寄存器,假設為v0、v1;

      2、取出FunctionA從函數(shù)開始到P1之間的所有smali指令;

      3、模擬執(zhí)行取出的每條指令,模擬過程中維護寄存器表,針對每條指令執(zhí)行寄存器表操作,主要是設置及清除操作,不執(zhí)行其他具體的行為;

      4、執(zhí)行完取出的所有指令后,得到寄存器表中v0、v1寄存器的值,如果v0的值為ARG1,v1的值為ARG2,則可以判定匹配到漏洞檢測向量的函數(shù)參數(shù)特征。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1