?

基于系統調用序列的惡意軟件檢測技術

2024-04-13 06:54李樂凡劉曉東
電子設計工程 2024年7期
關鍵詞:調用準確率卷積

李樂凡,劉曉東,2

(1.武漢郵電科學研究院,湖北武漢 430000;2.武漢虹旭信息技術有限責任公司,湖北 武漢 430000)

2021年,AV-test 系統檢測到超過12.9 億個惡意軟件。作為旨在干擾計算機正常運行的軟件,惡意軟件是病毒、木馬和其他破壞性計算機程序的總稱。嵌入式設備的數量呈指數型增長[1],忽略了安全和隱私問題。近年針對Linux 內核的惡意軟件數量不斷增長,其可以針對非常多樣化的目標[2]。

綜上,對Linux 惡意軟件進行高效快速地識別十分具有必要性。惡意軟件的自動分析和檢測一直是研究的重點和難點[3]。鑒于此,文中給出了基于Linux 系統調用序列的惡意軟件檢測技術,首先,使用Linux 軟件系統調用序列進行分割和提??;其次,將特征數據映射到RGBA 圖像文件;最后,使用膠囊網絡對圖像進行檢測和識別。僅需少量標記樣本,就可在測試數據集上達到極高的準確率,在實驗結果的基礎上,優化膠囊網絡模型參數,以達到最優的檢測性能。

1 系統調用與序列特征提取

1.1 系統調用數據

在Linux 系統中,進程不能訪問內核,其中一組用于實現系統功能的子程序稱為系統調用。由于系統調用序列標識軟件的行為,系統調用序列可作為一種檢測Linux 惡意軟件的特征[4]。對于Linux 系統調用序列的研究較少并且集中在入侵檢測[5]、異常檢測等方向。

獲取惡意軟件和良性軟件的系統調用序列數據。惡意軟件的系統調用序列由基于沙箱的動態分析報告得到,目前尚無通用或官方的Linux 惡意軟件數據集,自行構建惡意軟件系統調用序列數據集。沙箱分析時會捕獲系統調用序列這一動態特征,將沙箱數據中這一冗余的分析信息利用起來,期望能到達較高的準確率。良性軟件不會對系統造成危害,因此,可采用較為簡單的方式獲取良性的系統調用序列,良性軟件的系統調用序列使用strace 命令追蹤的系統軟件得到,strace 顯示有關進程系統調用的信息,可以確定程序使用的系統函數。

1.2 系統調用序列特征處理

每個系統調用都有不同的功能,例如大多數情況下open/read/write/ioctl/close 就可以實現對各種設備的輸入、輸出、設置、控制等;connect/socket 標識了網絡行為特征。此外,系統調用序列具有前后關聯性,例如open-read-close 表示對某文件的讀操作。首先將系統調用序列按照進程pid 劃分為單進程的數據。系統調用序列的關聯性基于調用了同一參數或返回了同一地址,即對同一對象進行操作,因此基于參數進行劃分,得到可標識軟件行為的系統調用特征序列。將特征序列轉換為對應的RGBA 圖像,同樣大小的圖像RGBA 類型可以攜帶更多信息,可以攜帶比灰度圖更多的特征信息。將系統調用序列以字節為單位映射到對應的四個通道上,將整個序列按字節進行劃分,每四個字節對應四個數值,其取值范圍為0~255,每四個字節映射一個像素點,即將每四個字節對應數值映射到三個顏色通道以及一個透明度通道。如exec對應的數值為(203,227,46,62)。最終,得到的圖像如圖1 所示,圖1(a)為良性軟件系統調用序列的特征圖,圖1(b)為惡意軟件系統調用序列的特征圖。

圖1 特征生成圖像

2 核心算法與優化

2.1 核心算法

在基于系統調用的惡意軟件檢測領域[6],從最初的傳統的靜態檢測、動態檢測到基于數據挖掘和啟發式學習的檢測,發展到目前基于深度學習的惡意軟件檢測[7]。神經網絡具有良好的處理復雜信息的能力,以便處理前后關聯的序列信息[8]。對于傳統的動靜態檢測,或是當前的機器學習、深度學習算法,都存在一些問題[9]。2017年,Hinton 首次提出膠囊網絡模型[10],該模型被認為是下一代重要的神經網絡模型。由于其優異的性能,膠囊網絡模型很好地應用于小型樣本圖像分類任務[11]。膠囊網絡可以保持比卷積神經網絡(CNN)更強的空間信息關系[12]。

膠囊(Capsule)是一組神經元,用輸入輸出向量的長度表征實體存在的概率,向量的方向表示實例化參數,即實體的某些圖形屬性[13]。輸入輸出向量的長度表示了某個實體出現的概率,所以值必須在0~1 之間,為實現這種壓縮,膠囊網絡使用了Squashing 函數激活向量,該非線性函數確保短向量的長度能夠縮短到幾乎等于零,而長向量的長度壓縮到接近但不超過1。具體計算如式(1)所示,其中,vj為膠囊j的輸出向量,sj為上一層所有膠囊輸出到當前層膠囊j的向量加權和,即sj為膠囊j的輸入向量。

同一層級的膠囊通過變換矩陣對更高級別膠囊的實例化參數進行預測,當多個預測一致時,更高級別的膠囊將變得活躍。使用層間動態路由(Dynamic Routing)算法找出最好的處理路徑,其核心是迭代地計算更新耦合系數cij,其能令預測向量最符合輸出向量vj,即找到最符合輸出的輸入向量。該耦合系數的Softmax 算法如式(2)所示,bij依賴于兩個膠囊的位置與類型。

當輸出新的vj后可以迭代更新cij,不需要反向傳播而直接通過計算輸入與輸出的一致性更新參數,該路由算法容易收斂,實驗證明,通過三次迭代即可得到最佳結果。

2.2 路由算法改進

層間動態路由算法的核心是預測耦合系數的柔性最大值算法。Softmax 函數將短向量縮小到幾乎為零,將長向量長度縮小到小于1。系數分布[14]集中在0.09~1.09 區間,這使得預測向量的總和sj難以區分,路由到最終膠囊的概率特征幾乎相等。使用最小系數和最大系數之間差異更大的Sigmoid 函數代替Softmax 函數,如式(3)所示:

式中,cij不再代表最終膠囊的路由分配概率,而是代表路由到最終膠囊之間的相關強度。將重要的預測向量與較大的耦合系數相乘,使顯著性特征更具決定性,而不相關特征的耦合系數較小。

2.3 超參數優化

基于上述膠囊網絡模型,對其超參數進行調整以達到最佳的檢測效果。模型中使用隨機梯度下降算法[15],使用訓練數據集來更新模型的迭代學習算法。

batch 控制在模型的內部參數更新之前要處理的訓練樣本的數量。學習率決定了參數移動到最優值的速度快慢,學習率過大或過小都會對模型收斂及收斂速度造成影響。實驗中對照測試了不同維度的訓練批次batch 和學習率LR 對識別準確率造成的影響,訓練批次依次為1、8、32、64、128,學習率為0.000 1、0.000 5、0.001、0.005、0.01、0.05、0.1。在實驗中調整訓練批次batch 和學習率LR 對模型分類準確率的影響如圖2 所示,batch 為128 學習率為0.000 5 或0.001 時可以達到最高準確率0.998 882。

3 實驗與結果分析

3.1 膠囊網絡結構

實驗使用膠囊網絡結構,整體結構圖如圖3 所示,使用Python 語言和pytorch 機器學習庫實現膠囊網絡,該架構由兩個卷積層和一個全連接層組成。卷積核感受野為9×9,比傳統CNN 更大,在卷積層層數較少時能感受更多信息。第一個卷積層使用256個9×9 的卷積核,步幅等于1,使用ReLU 激活函數,輸出張量為20×20×256,層間權值數量為20 992 個。第二個卷積層(PrimaryCaps)中,將8 個卷積單元封裝成為一個膠囊單元,每次卷積操作會產生一個6×6×1×32 的張量,一個膠囊單元即產生了長度為8 的6×6×8×32 的張量,該卷積層參數數量為5 308 672個。第三層(DigitCaps)的輸入為第二層輸出的向量,共6×6×32 個維度為8 的向量,使用動態路由算法預測計算,即第i層共有1 152 個膠囊單元,第三層有10 個標準的膠囊單元,每個單元的輸出向量包含16 個元素,有1 152×10 個耦合系數cij,加權求和后有10 個16×1 的輸入向量,將該向量輸入到Squashing函數后得到最終的輸出向量vj,第三層網絡共有5 537 024 個參數。

圖3 膠囊網絡模型結構圖

構建損失函數,使用反向傳播更新所需參數,采用Margin loss 損失函數表達式如式(4)所示:

其中,c是分類類別,Tc是分類指示函數,c存在為1,c不存在為0,m+為上邊界,m-為下邊界,vc的模即向量的L2距離。使用全連接層對向量進行重構,利用預測的類別重新構建出該類別代表的實際圖像,第三層的輸出向量被送至包含三個全連接層的解碼器中,結合損失函數計算并重構圖像。

3.2 實驗數據和評估指標

文中的實驗環境如表1 所示。該實驗的實驗數據來自互聯網中捕獲的惡意軟件以及Linux 系統的系統軟件,數據量為10 000 個樣本數據,惡意與非惡意樣本數據均為5 000個,每種樣本中4 000 個為訓練集,1 000 個用作測試集。

表1 實驗環境

實驗流程如圖4 所示,首次提取數據中的系統調用序列,對其進行數據預處理,包含序列化與反序列化、篩選刪除、數據格式規范化等操作,然后進行特征的可視化處理,即將系統調用特征圖像化,將圖像數據分為訓練數據和測試數據。

圖4 實驗流程圖

另外,編程實現膠囊網絡模型,使用訓練數據訓練模型,測試數據測試模型分類效果,過程中記錄準確率、損失率、混淆矩陣等數據結果。

混淆矩陣中包含評估分類算法效果的基本指標[16-20],包括真正例(TP)、假正例(FP)、真負例(TN)、假負例(FN)。根據基本指標計算出更能表達分類器效果的指標精確率、召回率、準確率和F1值,具體計算公式及含義如表2 所示。

表2 評價指標公式

3.3 實驗結果與結論

選用表2 中的評價指標作為該實驗結果的評測指標,此時根據分類算法基本指標計算的精確率、召回率、準確率和F1 值如表3 所示,準確率可達到99.8%,證明該方法可以對系統調用數據進行有效的特征提取,并在分類準確度上有較好效果。

表3 模型評價指標

4 結束語

文中提出了一種基于Linux 系統調用序列的惡意軟件檢測技術,首先構建惡意軟件和良性軟件系統調用序列的數據集,將系統調用序列數據進行過濾并分割為可以表征軟件行為的子序列,然后將系統調用序列特征數據映射到可以攜帶大量信息的RGBA 圖像文件中,使用所得訓練數據對膠囊網絡進行訓練,對網絡模型進行調參,最終在測試集上取得了較高的檢測準確率。綜合實驗數據表明,該方法具有較高的準確率,可以有效對Linux 惡意軟件進行分類,模型達到了良好的指標,有效解決了所提出的問題和需求。隨著互聯網的迅猛發展,各種APT攻擊事件頻發,惡意軟件的數量和規模持續增長,未來網絡安全業界勢必面臨更大的挑戰,為國家安全帶來了嚴重威脅,為了維護用戶的權益和信息安全,勢必需要精度更高、速度更快的惡意軟件識別技術,因此該文提出的方法有重要的意義,需要未來持續性、更深入的研究和探索。

猜你喜歡
調用準確率卷積
基于3D-Winograd的快速卷積算法設計及FPGA實現
乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
2015—2017 年寧夏各天氣預報參考產品質量檢驗分析
核電項目物項調用管理的應用研究
從濾波器理解卷積
LabWindows/CVI下基于ActiveX技術的Excel調用
高速公路車牌識別標識站準確率驗證法
基于傅里葉域卷積表示的目標跟蹤算法
基于系統調用的惡意軟件檢測技術研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合