謝維
摘? 要: 當前機器學習算法應用于iOS平臺惡意軟件檢測的研究較少、公開樣本數據集獲取難、靜態檢測誤報率高。因此提出一種改進的ID3信息增益算法的動態惡意軟件檢測方法。首先創建數據集,使用改進的ID3信息增益算法選取前40個API調用序列組成特征向量并構建決策樹,然后構建測評指標對實驗進行分析和驗證。實驗結果表明,本文方法具有較好的檢測率,與改進前的算法相比準確率提高了2.5%,可有效地對惡意軟件進行動態識別。
關鍵詞: iOS平臺; 惡意軟件檢測; ID3算法; 動態檢測; 創建數據集
中圖分類號:TP181;TP309;TP311.5? ? ? ? ? 文獻標識碼:A? ? ? 文章編號:1006-8228(2023)09-32-05
Malware detection strategy based on improved ID3 algorithm
Xie Wei
(School of Information Science and Technology, Zhejiang Sci-Tech University, Hangzhou, Zhejiang 310018, China)
Abstract: Currently, malware detection on iOS platform suffers from few researches on applying machine learning algorithms, difficulty in acquiring public sample datasets, and high false alarm rate of static detection. Therefore, a dynamic malware detection method based on improved ID3 information gain algorithm is proposed. Firstly, a data set is created, and the top 40 API call sequences are selected by the improved ID3 information gain algorithm to form the feature vector and construct the decision tree. Then, evaluation indexes are constructed to analyze and verify the experiment. Experimental results show that the proposed method has a good detection performance, and the accuracy rate is increased by 2.5% compared with the original algorithm. It can effectively identify malware dynamically.
Key words: iOS system; malware detection; ID3 algorithm; dynamic detection; create data set
0 引言
一直以來,有關iOS系統惡意軟件檢測的研究較少,因為iOS是閉源系統,分析應用的行為必然會用到逆向以及插樁技術,這大大增加了研究的難度。根據Skycure 2022年移動安全報告顯示,iOS的漏洞數量近年呈逐漸上升趨勢,因此對于iOS惡意軟件檢測的研究有很大價值。
機器學習作為通用數據處理技術,在各個領域都得到了廣泛的應用。其中監督式學習采用分類和回歸技術對模型進行開發和預測,在惡意軟件檢測領域研究中取得顯著成效。例如 Moon Dami[1]等人使用良性和惡意文件的標記數據集進行監督學習,并不斷調整特征哈希向量的大小,不僅減少了70%的內存空間,而且提高了檢測精度。 Urmila T.S.[2]采用機器學習和行為特征技術,通過使用多個權限,將特征合并到預測模型中,將研究分成四個階段執行檢測惡意軟件的相關程序。Tejaswini Ghate[3]等人建議結合兩種主要的分類算法來對惡意軟件的存在進行分類,同時探索滿足實驗需求的數據集,在同一數據集上執行邏輯回歸,并加入XG-Boost以提高性能,來達到最好的分類效果。
本文在現有研究基礎上,結合iOS系統運行時的特點即方法及屬性類型的確定是在運行時候綁定,提出一種基于改進的ID3信息增益算法[4]的動態惡意軟件檢測方法,檢測效果顯著。
1 動態監測系統
1.1 iOS的安全機制
圖1是iOS系統安全架構模型圖,歸納起來主要有安全啟動策略,代碼簽名,沙盒機制,數據加密,地址布局空間隨機化[5]等幾個部分,在安全性能上,iOS系統使用了大量的密碼學理論和計算機加密技術[6],這些措施增加了iOS系統的穩定性。
越獄,是用戶為了獲取iOS系統最高權限的一種技術手段,并且可對其權限進行更改。常見的一些脫殼技術包括dump-decrypted,Clutch等。本文設計的動態監測系統也應用了越獄技術。
1.2 系統的設計
要對iOS系統進行動態分析,就要設計一個動態監測系統來實時獲取程序的運行情況。在越獄的手機上我們可以使用GDB,CYCRIPT等工具來調試[7]。本監測系統不僅可以應用在越獄手機也可以用在非越獄手機上。
本檢測框架基于Frida,它是基于Phython以及JavaScript語言的能夠對iOS系統進行Hook的一款強大的調試框架,在非越獄的手機上插入FridaGadget.dylib即可對設備進行動態監測。越獄手機在cydia上運行該檢測框架即可。
本文監測原理是在API調用層和系統層注入一個監控層。監測框架如圖2所示。
監測系統本文統一叫做EMS,一部分運行在服務器端,另一部分運行在iOS設備端,使用Phython語言開發。服務器端完成一些基礎的信息配置,比如越獄或非越獄,設置自定義腳本等等,在iOS設備端對設備模擬操作來獲取應用程序運行時的API調用序列。
2 特征提取
2.1 利用改進ID3算法篩選高危權限
獲取相冊或者視頻等這類的API都可叫做敏感的API,重載的特點很多看似不同的API實質一樣,而使用機器學習訓練模型時特征個數越多,訓練需時間越長,也容易引起特征“維度”災難,因此需要降低特征向量的維度。
2.2 ID3算法介紹
解決分類問題時,決策樹算法是用得最多,范圍最廣的算法,核心是構建一棵分類準確的決策樹[8]。它具有分類快,簡單易用的特點。本文通過使用信息增益算法對數據集中的每一個特征進行計算,從而過濾選擇出分類能力更強的特征,它的定義如下:
[Ι(S1,S2,…,Sn)=-i=1nP1?log2(Pi)? (1≤i≤n)] ⑴
式⑴表示樣本。其中,p表示某個樣本出現的概率,I表示數據集樣本的期望信息量。
[Ι(S1,j,S2,j,…,Sn,j)=-i=1nPi,j?log2(Pi,j)? (1≤j≤k)]? ⑵
式⑵表示某個特征在所有樣本中的期望信息量。
[Ε(Α)=i=1kSjS?Ι(S1,j,S2,j,…,Sn,j)] ⑶
式⑶表示A特征的信息熵。
[Gain(Α)=Ι(S1,j,S2,j,…,Sn,j)-Ε(Α)] ⑷
式⑷表示A特征的信息增益。
雖然該算法優點突出,但也有一處明顯不足,即存在多值偏向[9]的問題,會優先測試屬性較多的特征,而不是優先選擇跟結果有密切聯系的特征,基于此,本文對其進行了改進。
2.3 ID3算法的改進
2.3.1 信息增益的修正
針對ID3算法存在多值偏向的問題,本文提出了使用增益率和信息增益兩個衡量標準來共同構建ID3決策樹算法,改進公式如下:
[GR(Α)=Gain(Α)K] ⑸
其中,分母K表示各個屬性的個數,系數作為修正參數,修正了多值偏向對信息增益的影響。但這個公式結果可能會有接近0的情況,即常說的過擬合現象。
2.3.2 屬性閾值
為了解決過擬合問題提出閾值的解決方法:
[r=1S1kΕ(Α)] ⑹
其中,r代表閾值,表示數據集中所有屬性的平均信息熵,s為數據集中的樣本數量,k表示樣本中特征的數量,E(A)是式⑶表示的某個特征的信息熵值通過改進的該方法可以訪問到數據集中每一個特征屬性。
2.3.3 平衡系數
為了修復多值偏向以及信息增益補償過度的問題,需要引入平衡系數α,該系數規定,當某個特征值信息增益大于它的閾值時,選擇信息增益作為最后的結果,當某個特征的信息增益小于閾值時,使用閾值作為結果。平衡系數的計算公式為:
[α=GR(A)×rGR(A)] ⑺
該系數等效于修正后以及屬性閾值r共同作用的結果,有效地解決了ID3算法自身的缺陷,優化后的信息增益算法為:
[GR=α×Gain(A)] ⑻
用改進后的信息增益算法選出數據集中屬性計算結果最好的前40位特征,作為本數據集的特征向量集。
2.4 提取高危權限特征
特征提取的部分需要用到上述1.2節設計的EMS系統來監控API的調用,獲取API調用序列的同時,濾除冗余部分并保存結果,使其成為數據集的一部分。然后使用改進的ID3算法訓練數據集,保留前40個信息增益比較大的特征作為最后的特征集,將特征的有無量化為“1”或“0”,“1”代表該特征下的API有調用,“0”則相反,最后敏感API調用頻次的動態特征信息描述如下:
[Fdanamic=f1,f2,……,f41(0≤fi<∞)]? ⑼
[f1],[f2]...,[f40]等前40位表示的是調用的一個API序列,最后一位代表該樣本是惡意的還是良性,惡意用“0”來表示,良性的用“1”表示。
表1為篩選出的部分敏感API序列。
3 實驗結果
3.1 創建數據集
本實驗整體架構如圖3所示。
未知軟件放入EMS系統,拿到運行數據作為數據集的待測樣本,最后分類器輸出為“0”或者“1”。由于數據集獲取困難,本文從App Store 60款iPhone必備App,人氣影視與音樂,人氣攝影與視頻工具等模塊里下載一些常見的App 200款作為白名單,從第三方渠道下載惡意的軟件100款作為黑名單,如圖4所示。
下載App之前先將手機里所有的非系統軟件按照設置→通用→iPhone存儲空間→點擊需要卸載的軟件的步驟一步步操作,防止與后續需要下載的軟件產生交互或數據存留造成獲取的實驗數據不準確。軟件下載后即在EMS系統運行,并收集運行的數據。運行App的過程中會產生很多的調用API,有些API明顯跟實驗分類結果無關,基于此本文設計了過濾算法,即維氏匹配法,該匹配法滿足將不相干調用API接口從數據庫中濾除。維氏匹配法不僅可以濾除一部分毫不相干的API調用序列,也可以濾除一些冗余序列。之后對App打標為0或1,0代表惡意軟件,1代表良性軟件,并對模型進行訓練。
3.2 評測系統的建立
為了達到惡意軟件自動檢測的效果,本文設計了一款App應用運行時自動監控以及對API序列進行抓取的EMS監控系統,該監測系統的安裝環境為Windows10,被測手機設備為iPhone6s,系統的版本為10.1.2,系統的測評標準如表2所示。
表2中TP表示的是一個惡意軟件被預測為惡意樣本的數量,FP表示的是一個良性樣本的被預測為惡意軟件的數目,FN表示的是惡意的樣本被預測為良性的App的數量,而TN表示的是一個良性的樣本被預測為良性樣本的量,TRP代表的是當前的預測樣本中真正的惡意樣本總數占所有樣本的比率。
3.3 實驗
本文使用ID3機器學習算法以及改進的ID3機器學習算法分別對自創建的數據集進行實驗,數據集分為兩個部分,一部分為將要訓練的數據集,一部分作為測試集來驗證改進算法的效果,實驗結果如圖5~圖8所示(縱軸單位:%;橫軸代表樣本數,單位:個)。
由圖5~圖8可知,隨著樣本數量的增加分類效果的各個指標都穩步上升,如樣本數量從60到300后使用改進的ID3算法精確度提升了3%,而使用未改進的算法也提高了3%,除此之外隨著算法的改進各個分類的指標也較于未改進有了明顯的提升,例如召回率,在使用改進算法之后提高了2%。
最終分類效果對比如表3所示。
由此可見,本改進方法在iOS平臺惡意軟件檢測上有非常好的效果。
4 結論
本實驗使用改進的ID3算法進行惡意軟件檢測,準確率達到了92.7%,與改進前的算法相比提高了2.5%,具有很好檢測效果。
當前在iOS平臺上的惡意軟件檢測研究較少且多為靜態,誤報率高,本文自創數據集并提出動態檢測方法,解決了靜態檢測策略不足的問題。采用了改進ID3算法,提升了特征提取效果,并提升惡意軟件檢測效率以及準確率。
本文自創的樣本數量有限,后續可進一步擴充樣本的數量并結合云端分析平臺進一步提高惡意軟件檢測的準確率和效率。
參考文獻(References):
[1] Moon Damin and Lee JaeKoo and Yoon MyungKeun.Compact feature hashing for machine learning based malware detection[J]. ICT Express,2022,8(1):124-129.
[2] Urmila T.S.. Machine learning-based malware detection on Android devices using behavioral features[J].Materials Today: Proceedings,2022,62(P7):4659-4664.
[3] Machine Learning Based Malware Detection: a Boosting Methodology[J].International Journal of Innovative Technology and Exploring Engineering,2020,9(4):2241-2245.
[4] 王利軍.決策樹ID3算法的優化[J].菏澤學院學報,2020,42(5):15-19,30.
[5] 甄恩浩.基于iOS平臺的惡意軟件檢測機制研究[D].四川:電子科技大學,2015.
[6] 梁澤華.基于iOS平臺應用安全檢測及防護技術的研究[D].四川:電子科技大學,2017.
[7] 胡亮.iOS應用程序漏洞和惡意行為檢測的研究[D].北京:北京郵電大學,2019.
[8] 朱琳,楊楊.ID3算法的優化[J].軟件,2016,37(12):89-92.
[9] 謝鑫,張賢勇,楊霽琳.鄰域等價關系誘導的改進ID3決策樹算法[J].計算機應用研究,2022,39(1):102-105,112.