?

一種基于控制流圖特征的Linux平臺惡意代碼檢測方法

2018-04-24 07:58劉留尹顏朋王玉偉丁祝祥
現代計算機 2018年8期
關鍵詞:分類器指令代碼

劉留,尹顏朋,王玉偉,丁祝祥

(四川大學計算機學院,成都 610065)

0 引言

Linux系統的開源特點使得其能快速發展,許多的不同的發行版出現,越來越多的人也開始使用Linux系統滿足工作需要。隨著惡意代碼的快速增長,Linux平臺的安全性也在逐漸降低。

目前,有許多的惡意代碼檢測方法,這些方法可以分為靜態分析和動態分析兩類。靜態分析通過分析指令序列的二進制代碼來判斷可執行文件是否是惡意的[1]。最基本的靜態分析方法是基于簽名的檢測方法,也是應用最廣泛的方法。簽名是一段能夠標識特定惡意軟件的字節序列。通過分析大量的惡意軟件,我們能夠創建一個簽名庫。依靠模式匹配,如果一個未知文件包含了簽名庫的一個簽名,則可將該文件標識為惡意軟件,這種方法對大多數惡意軟件有很好的識別效果。一般來說,基于簽名的方法可以檢測已知的惡意軟件,但不能檢測未知的惡意軟件或變種,因為沒有可用的簽名[2]。同時也存在很多的代碼混淆手段可以隱藏可執行的惡意代碼,包括垃圾代碼插入、寄存器重命名、子程序重排、等價指令替換等[3]?;诨煜夹g,黑客可以方便地開發一個新的惡意軟件變種來繞過檢測[4]?;谛袨榈膼阂獯a檢測方法是普遍應用的動態分析方法。行為分析關注軟件執行時的信息獲取。這些信息必須精確可靠,這意味著必須在一個仿真環境中運行程序[5]。然而惡意軟件可能僅在和用戶交互時才表現出惡意行為,或者在觸發特定事件時表現出惡意行為,如到達特定時間。通過分析、收集惡意軟件的行為模式,可以建立一個數據庫。在檢測階段,將未知軟件的行為模式與數據庫中的模式作比較即可以檢測惡意軟件。

近年來,機器學習和數據挖掘算法逐漸應用于惡意代碼檢測領域,取得了不錯的效果。為了解決以上問題,本文提出了一種基于軟件控制流圖特征的惡意代碼檢測方法。通過對軟件進行靜態分析得到匯編代碼,進而分析匯編代碼構建控制流圖。提取控制流圖的屬性作為特征向量,將這些特征向量送入機器學習算法進行訓練,得出分類器,使用分類器來檢測惡意軟件。

1 相關定義

基本塊:一段有序指令序列,從第一條指令順序執行到序列的最后一條指令。除了最后一條指令外,序列中的其他指令不會是分支或者跳轉指令[6]。

控制流圖:定義V={VI,V2,...,Vn}為代表基本塊的頂點集,E={brijl brij表示Vi到Vj的控制流}為指示基本塊之間的控制流的邊集,P={V,E}即可表示一個程序的控制流圖[7]。

ELF(Executable and Linkable Format):是一種用于二進制文件、可執行文件、目標代碼、共享庫和核心轉儲格式文件,是Linux的主要可執行文件格式。

2 控制流圖構建

控制流圖構建基于匯編代碼,因此要先對軟件進行反匯編。本文采用了Linux系統提供的反匯編工具“objdump”對軟件進行反匯編,“objdump-D”命令會反匯編ELF文件中所有的段。在得到的匯編代碼中,“text”段包含了程序運行所需的主要指令,“plt”段包含了程序所調用的庫函數信息,之后通過分析這兩個段的內容來構建控制流圖。遍歷“text”段中的匯編指令,將其劃分為不同的基本塊,即控制流圖的頂點;分析控制流指令來建立基本塊之間的聯系,即控制流圖的邊。邊無權重,且為有向邊,邊的方向表明了控制流轉移方向。

圖1 構建的控制流圖

3 特征選擇

對控制流圖中的各類信息進行指標化,是特征選擇的一種常用方法。我們通過統計方法建立了22個指標,每項指標都可以作為軟件的一個特征,由此可以產生基于控制流圖的軟件特征集。表1描述了圖特征的定義和說明。

表1 基于圖指標的軟件特征描述

4 實驗和分析

實驗數據集包含了202個惡意軟件樣本和305個良性樣本。良性軟件樣本取自Linux系統“/bin”、“/sbin”、“/usr/bin”等目錄下的 ELF文件,惡意軟件樣本通過在Linux系統上編譯源代碼得來,源代碼可從網站https://www.exploit-db.com下載。使用WEKA平臺來訓練分類器,主要使用了四種機器學習算法:J48、Ran?domforest、NaiveBays、IBK,采用 10-fold 交叉驗證檢驗分類器的效果。

表2 四種分類器的分類效果

四種分類器都取得了高于98%的準確率,且FPR均低于2%,說明這四種分類器均可有效檢測Linux平臺的惡意軟件。其中,RandomForest算法的TPR達到了100%,FPR為0.7%,且準確率達到99.6%,說明該分類器的檢測效果最好。

參考文獻:

[1]Natani P,Vidyarthi D.An Overview of Detection Techniques for Metamorphic Malware[M].Intelligent Computing,Networking,and Informatics.Springer India,2014:637-643.

[2]Yin H,Song D,Egele M,et al.Panorama:Capturing System-wide Information Flow for Malware Detection and Analysis[C].Proceedings of the 14th ACM conference on Computer and Communications Security.ACM,2007:116-127.

[3]Pluskal O.Behavioural Malware Detection Using Efficient SVM Implementation[C].Proceedings of the 2015 Conference on Research in Adaptive and Convergent Systems.ACM,2015:296-301.

[4]Yan L K,Yin H.Droidscope:Seamlessly Reconstructing the OS and Dalvik Semantic Views for Dynamic Android Malware Analysis[C].Presented as part of the 21st USENIX Security Symposium(USENIX Security 12),2012:569-584.

[5]Shabtai A,Kanonov U,Elovici Y,et al.“Andromaly”:a Behavioral Malware Detection framework for Android Devices[J].Journal of Intelligent Information Systems,2012,38(1):161-190.

[6]Oh N,Shirvani P P,McCluskey E J.Control-Flow Checking by Software Signatures[J].IEEE transactions on Reliability,2002,51(1):111-122.

[7]Li J,Tan Q,Xu J.Reconstructing Control Flow Graph for Control Flow Checking[C].Progress in Informatics and Computing(PIC),2010 IEEE International Conference on.IEEE,2010,1:527-531.

猜你喜歡
分類器指令代碼
學貫中西(6):闡述ML分類器的工作流程
基于樸素Bayes組合的簡易集成分類器①
基于 Verilog HDL 的多周期 CPU 設計與實現
《單一形狀固定循環指令G90車外圓仿真》教案設計
基于動態分類器集成系統的卷煙感官質量預測方法
一種自適應子融合集成多分類器方法
關于ARM+FPGA組建PLC高速指令控制器的研究
神秘的代碼
一周機構凈增(減)倉股前20名
一行代碼玩完19億元衛星
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合