新四季網

一種Android軟體動態行為分析中的路徑感知方法與流程

2023-06-16 04:12:01


本發明屬於信息安全技術、Android惡意軟體檢測技術領域,具體涉及一種Android軟體動態行為分析中的路徑感知方法。



背景技術:

隨著移動網際網路的發展和智慧型手機的普及,基於Android系統的各類應用出現爆發式增長,截至2014年底Google Play上最新應用數量已經達到了143萬,非官方應用電子商店提供的應用數量更為龐大。但在增長的同時,Android軟體的安全性問題也不容忽視。2014年Android惡意軟體繼續保持高速增長。據阿里巴巴移動安全年度報告顯示,2014年第四季度Android惡意軟體感染設備量月均漲幅高達45%,感染安卓設備高達1833萬臺,阿里聚安全查殺病毒高達2528萬個。大多數情況下,Android惡意軟體具有惡意扣費、隱私竊取、簡訊劫持等惡意行為,其目標主要是獲取用戶的金融信息。例如源自俄羅斯的手機版Carberp木馬可以竊取用戶發送給銀行伺服器的登錄數據。由此可見,Android軟體安全性問題日益凸顯,Android惡意軟體越來越嚴重地威脅著終端用戶的隱私和權益。

當前,企業界和科研院所已經加強了對Android惡意軟體檢測方法的研究。動態檢測因其檢測準確率高的優勢,在Android惡意軟體檢測過程中起了關鍵作用。動態檢測主要是把Android應用軟體安裝到Android沙箱上運行,並觀察應用軟體在沙箱中是否會實際調用敏感API來表現出惡意行為。這裡的敏感API是指需要顯式申請操作權限的系統調用函數。Android沙箱是在Android模擬器的基礎上,對一些系統敏感API進行劫持,如果應用軟體運行過程中調用這些敏感API時,就會被實時記錄下來,證實該軟體具有相應的惡意行為。目前,雖然動態檢測的準確率高,可以記錄惡意行為的觸發,但是卻無法獲取惡意行為的整個函數執行路徑及上下文環境。

Android軟體動態行為分析技術目前面臨的一個問題是如何有效自動化的驗證被測軟體具有的惡意行為,即動態分析僅僅能夠檢測出軟體具有的敏感行為,卻無法自動化的溯源整個執行路徑現場,也就無法有效的驗證敏感行為。因為通過動態分析給出的Android軟體的惡意行為可能是與該軟體無關的其他程序在滿足某一特定條件下觸發的,例如:Android沙箱在檢測某被測軟體時,此時與該軟體無關的一個後臺服務讀取了用戶通訊錄信息,則動態沙 箱檢測結果誤報該被測軟體存在讀取通訊錄行為。對此,業界的解決方法主要有兩種,一是對被測程序進行代碼插樁;二是輸出敏感函數執行的函數調用棧信息。第一種方法被測程序代碼插樁,需要修改被測軟體smali代碼,並對軟體進行二次打包,由於目前Android軟體中加入的代碼對抗機制,導致一旦插樁Android軟體運行就會報錯,所以該方法的成功率不高。第二種方法輸出敏感函數執行的函數調用棧信息,通過列印函數調用棧,獲取敏感操作的執行路徑,但是這種方法只能輸出敏感操作的單條執行路徑,無法確定執行過程中的其他操作,丟失了上下文信息。例如對於將電話號碼通過網絡外發的惡意行為,第二種方法可以確認被測軟體獲取了電話號碼,但卻無法驗證電話號碼通過網絡進行了外發。因此,設計出一種Android動態行為分析中的路徑感知方法顯得尤為重要。



技術實現要素:

鑑於以上問題,本發明的目的是提供一種Android動態行為分析中的路徑感知方法,通過獲取Android軟體運行時函數調用關係,並通過路徑過濾去除系統API調用信息,大大提高了執行效率,從而解決了在一個基於Android動態行為分析環境裡,無法高效輸出被測軟體程序執行路徑的問題。

本發明首先通過在Android程序執行端獲取函數兩兩調用信息,包括被測軟體函數調用和作業系統函數調用。作業系統函數調用關係數目龐大,如果記錄大量系統調用信息會在很大程度上影響程序執行端的性能,所以需要通過路徑過濾去除系統調用信息。由於通過被測軟體包名過濾作業系統函數調用的方式,軟體包名的數量無法估計,而且在程序執行端函數調用中作業系統函數調用的數量遠大於第三方軟體函數調用的數量,所以,通過被測軟體包名匹配進行過濾的方式,匹配成功率很低,性能低下,實際應用中,該方法很難實施。為了真正提高Android程序執行端的性能,本發明基於已知的作業系統API的包名,對函數調用關係的輸出採用二級包名前端匹配的方法,對於二級包名匹配成功的函數調用進行過濾,從而過濾掉作業系統函數調用信息。獲取被測軟體函數調用信息後,路徑解析通過對函數兩兩調用日誌進行分析,從而生成完整的函數執行路徑。

本發明從結構上主要包括三個部分:路徑獲取、路徑過濾、路徑解析。路徑獲取負責截獲Android軟體的函數調用信息,即在軟體運行過程中獲取發生函數調用時的主調函數和被調函數信息。路徑過濾通過對已知的作業系統函數包名進行二級包名前端匹配,實現對已知的系統函數調用進行過濾。經過路徑獲取與路徑過濾,函數調用日誌信息被輸出到動態行為分析模塊的指定文件中。路徑解析負責解析指定文件中的函數兩兩調用關係,將直接的函數調用進行拼接,同時由於Android中可以使用AsyncTask和Handler兩種方式來進行異步處理, 所以路徑解析也需要對文件中函數的間接調用,即異步調用進行查找與拼接,從而生成函數執行全路徑。

本發明提供的技術方案如下:

本發明是採用路徑獲取和路徑過濾相結合的方式在程序執行端獲取Android軟體執行過程中的函數兩兩調用關係,通過路徑獲取得到程序執行時的函數調用信息,然後通過路徑過濾去除作業系統函數調用信息,最後通過路徑解析得到被測軟體的執行全路徑。具體步驟如下:

1)獲取函數調用信息。在對被測軟體進行動態行為分析過程中,從程序執行端截獲被測軟體程序在發生函數調用時的主調函數信息和被調函數信息。

Android作業系統在執行函數調用時dalvik虛擬機使用invokeXXX指令完成調用操作,包括了invokeVirtual指令、invokeSuper指令、invokeInterface指令、invokeDirect指令、invokeStatic指令、invokeVirtualQuick指令、invokeSuperQuick指令,這些指令的內部調用關係如圖1所示,由於這些指令均會調用invokeMethod指令,同時該指令中包含有主調函數和被調函數,所以路徑獲取首先通過invokeMethod指令獲取函數調用的主調函數和被調函數信息。

2)路徑過濾判斷主調函數是否是系統函數。由於Android作業系統API函數調用數目龐大,如果記錄所有的函數調用關係會帶來系統性能的嚴重下降,所以需要過濾主調函數是系統API的調用。基於已知的作業系統API的包名,對函數調用關係中的主調函數採用二級包名前端匹配的方法,若匹配成功,則認為該主調函數是系統函數,否則認為該主調函數為被測軟體函數。

本發明所述二級包名為JAVA包名中第二個分隔符之前的部分,例如com.android.xxx中,二級包名為com.android。本發明所述二級包名前端匹配的方法是指:(圈定Android作業系統API二級包名種子列表,提取主調函數所在類的二級包名,將該二級包名與種子列表進行精確匹配)。

3)列印被測軟體函數兩兩調用關係。對於主調函數為被測軟體函數的函數調用,列印主調函數和被調函數信息;對於主調函數是系統函數的函數調用,過濾該函數調用信息。

4)路徑解析分析日誌文件,生成函數調用全路徑信息。軟體運行完成後,所有日誌信息被輸出到動態行為分析模塊的指定文件中,路徑解析讀取日誌文件中函數兩兩調用關係,對直接函數調用按照函數名進行拼接,對間接函數調用按照不同的異步處理方式進行拼接,最終生成函數調用全路徑信息。

5)判定檢測結果。如果動態行為分析檢測出軟體具有敏感行為,並且有該行為對應的函數調用路徑上下文信息,則可以自動化的驗證該敏感行為。

與現有技術相比,本發明的積極效果為:

本發明能夠獲取被測軟體敏感行為的整個執行路徑,從而自動化的驗證Android軟體存在的敏感行為,而目前已知的兩種方法分別存在成功率不高和只能獲取敏感行為單條執行路徑信息問題,均無法有效地輸出整個敏感行為的執行路徑上下文信息。同時,由於該技術使用了路徑過濾方法,通過採用二級包名前端匹配的方式過濾了已知的作業系統API調用信息,提高了Android程序執行端的執行效率。

附圖說明

圖1是Android dalvik虛擬機invoke指令調用及本發明方法框架圖。

圖2是本發明方法的邏輯流程圖。

圖3是實施例中採用本發明方法生成的執行路徑圖。

具體實施方式

為使本發明的上述目的、特徵和優點能夠更加明顯易懂,下面通過具體實施例和附圖,對本發明做進一步說明。

汙點跟蹤是Android軟體動態行為分析的重要方法,通過跟蹤敏感數據源,可以檢測被測軟體是否具有隱私洩漏等惡意行為。但是,目前的汙點跟蹤只是單純的數據流分析,無法提供Android軟體程序執行的控制流信息,所以,現有的動態汙點跟蹤方法無法對被測軟體存在的敏感行為進行有效的驗證,無法溯源。基於此,本發明使用了一種Android動態行為分析中的路徑感知方法,其邏輯流程圖如圖2所示。

在汙點跟蹤路徑感知插件中,當Android軟體啟動後,程序執行端開始截獲軟體執行時的函數調用指令(包括:invokeVirtual指令、invokeSuper指令、invokeInterface指令、invokeDirect指令、invokeStatic指令、invokeVirtualQuick指令、invokeSuperQuick指令),這些指令的內部調用關係如圖1所示,由於這些指令均會調用invokeMethod指令,同時該指令中包含有主調函數和被調函數,所以路徑獲取首先通過invokeMethod指令獲取函數調用的主調函數和被調函數信息,例如:路徑獲取截獲函數調用中某主調函數為Lcom/baidu/mapapi/Mj;eV。

在獲取函數調用信息後,需要判斷主調函數是否是作業系統函數。根據Android的開源性可知,已知的作業系統API的包名一般以Lcom/android/、Lcom/google、Lorg/apache/等字符串開頭,因此可通過二級包匹配的方法名前端對主調函數進行判定。當遇到主調函數是作業系統函數時,不對該調用進行其他操作;當遇到主調函數是被測軟體函數時,需要劫持該函數調用信息,方法是在invokeMethod指令中加上Log函數,把函數調用中主調函數和被調函數的函數名、參數、返回值都用Log函數進行列印,如該方法列印的某條日誌為: Lcom/baidu/mapapi/Mj;eV->Landroid/content/ContextWrapper;getSystemService(Ljava/lang/Stri ng;)Ljava/lang/Object;,這條日誌表明被測軟體函數Lcom/baidu/mapapi/Mj;eV調用了函數Landroid/content/ContextWrapper;getSystemService(Ljava/lang/String;)Ljava/lang/Object;。

被測軟體在汙點跟蹤模塊運行結束後,所有日誌信息輸出到模塊的/tmp/anal.log文件中,部分日誌信息如下:

D/VARAS_ASMA(1872):1|

Lcom/baidu/mapapi/BMapManager;init(Ljava/lang/String;Lcom/baidu/mapapi/MKGeneralList ener;)Z->Lcom/baidu/mapapi/Mj;(Lcom/baidu/mapapi/BMapManager;Landroid/content/Con text;)V

D/VARAS_ASMA(1872):1|

Lcom/baidu/mapapi/Mj;(Lcom/baidu/mapapi/BMapManager;Landroid/content/Context;)V->Lcom/baidu/mapapi/Mj;eV

D/VARAS_ASMA(1872):1|

Lcom/baidu/mapapi/Mj;eV->Landroid/content/ContextWrapper;getSystemService(Ljava/lang/String;)Ljava/lang/Object;

D/VARAS_ASMA(1872):1|

Lcom/baidu/mapapi/Mj;eV->Landroid/telephony/TelephonyManager;getDeviceIdLjava/lan g/String;

接著,路徑解析讀取/tmp/anal.log文件中函數兩兩調用關係,通過自上而下讀文件的方式對兩兩函數調用進行拼接。對於直接函數調用,日誌解析直接根據被調函數名向下查找與其相同的主調函數名。對於間接函數調用,日誌解析根據不同的異步處理方式對函數調用進行拼接,如當遇到函數名中包含「;onPreExecute(」字符串時,可初步確定存在AsyncTask類的異步調用,所以需要向下查找相同類名下函數名中包含「;doInBackground(」字符串的函數進行拼接;當遇到函數名中包含「;startV」字符串時,初步確定此處存在線程啟動,路徑解析則向下查找相同類名下函數名中包含「;runV」字符串的函數進行拼接。拼接完成後,即得到完整的被測軟體函數執行路徑。

如果動態汙點跟蹤模塊中初步確認被測軟體有敏感信息洩露,如:..86404600],該信息表明被測軟體可能存在洩露設備IMEI的敏感行為,則可通過檢測函數執行路徑中是否有該敏感操作對應的函數調用路徑上下文信息,完成動態汙點跟蹤模塊對被測軟體的判定。

為了驗證本發明動態路徑感知方法對軟體分析效率的影響微小,本實驗對比了汙點跟蹤 模塊使用路徑感知方法記錄函數調用前後的分析時間,結果如表1所示。對比顯示,採用本發明方法記錄函數調用關係並沒有影響分析效率。

表1.使用路徑感知方法記錄函數調用前後的分析時間

由於Android作業系統API函數調用數目龐大,如果記錄所有的函數調用關係會帶來系統性能的嚴重下降,所以本發明採用了二級包名前端匹配的方法過濾主調函數為系統API的調用。表2顯示了被測軟體在採用二級包名前端匹配方法過濾前後的對比,結果表明由於本發明的二級包名前端匹配,被測軟體函數調用關係的獲取效率大大提高。

表2.採用二級包名前端匹配方法過濾前後的對比

使用動態路徑感知方法,對函數調用關係進行解析提取,生成的執行路徑圖如圖3所示,深色陰影所示的節點表示應用的敏感操作,淺色陰影所示的節點表示調用的函數名稱。使用該方法能夠高效的實時分析被測軟體的函數執行路徑信息,為軟體敏感行為的檢測提供了有力的證據。

表3是常用的Android動態路徑執行信息獲取的方法對比,結果顯示本發明的動態路徑感知方法相對其他方法具備一定的優勢。

表3.常用的Android動態路徑執行信息獲取的方法對比

本發明可以應用於Android動態行為分析中,上述實施例僅是其中的一個示例。其他實施例還包括了動態行為沙箱的路徑感知、動態手工分析的路徑感知等方面。

以上實施例僅用以說明本發明的技術方案而非對其進行限制,本領域的普通技術人員可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明的精神和範圍,本發明的保護範圍應以權利要求書所述為準。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀