劉 亮 劉露平 何 帥 劉嘉勇
1(四川大學網絡空間安全學院 成都 610065)
2(四川大學電子信息學院 成都 610065)
(59154092@qq.com)
隨著互聯網的高速發展,人們對互聯網產品更加依賴,但互聯網在給人們帶來便利的同時也帶來了更多的隱患,因此,信息安全的重要性更加凸顯.近年來,惡意代碼呈指數級增長,根據瑞星公司2016年中國信息安全報告統計,2016年共截獲惡意代碼樣本4327萬個,樣本總體數量比2015年同期上漲16.47%,這對互聯網用戶的財產和精神都構成了極大的威脅[1].據360公司的2016中國互聯網安全報告統計,2016年360互聯網中心共截獲PC端新增惡意程序樣本1.9億個,其中包含大量的敲詐類惡意軟件,2017年預計增長10倍[2].
在研究惡意代碼檢測技術的同時,研究人員也對惡意代碼之間的相似性進行了研究,對惡意代碼進行家族標記,根據分析技術手段的不同,可以將惡意代碼家族標記方法分為動態分析技術和靜態分析技術.Flake[3]和Dullien等人[4]使用圖匹配算法對函數調用流程圖進行相似性判斷,實現惡意代碼分類.Kolter等人[5]通過繪制系統API之間的調用關系圖,采用最長公共子序列,對繪制的API調用關系圖與已建立的圖數據庫進行相似性匹配.此外,楊軼等人[6]利用動態污點傳播技術判斷惡意代碼行為之間的相互聯系,繪制控制依賴圖和數據依賴圖,根據依賴圖之間的相似性對惡意代碼的同源性進行判斷.
近年來,惡意代碼家族標注技術取得了一定的成就,安全從業人員研發出了多種惡意代碼家族標注系統.Kancherla等人[7]將惡意代碼繪制為惡意代碼圖像,通過對圖像進行分析,使用SVM分類算法建立分類模型.徐小琳等人[8]使用動靜結合的方式,對惡意代碼樣本的動態行為和靜態代碼文本區段排列規律進行研究,實現了基于惡意軟件特征聚類的疑似樣本線上自動標注分析系統.Cesare等人[9]利用信息熵判斷惡意軟件是否加殼并進行脫殼處理,提取程序控制流程圖,通過流程圖相似匹配算法實現惡意軟件分類,設計了Malwise系統對惡意軟件家族進行自動標注.
本文采用將惡意代碼的反匯編文件映射為無壓縮的灰度圖的方法進行惡意代碼圖像繪制.對于待標注的惡意代碼,利用反匯編軟件IDA Pro獲取惡意代碼的反匯編文件,讀取該文件8 b為1個像素點,構建成1個固定行寬的2維數組.該數組中每個元素的取值范圍都是0x00~0xFF,剛好對應256階灰度,將該數組可視化為一個灰度圖.圖像的寬度選擇為PE文件對齊值(512 B),圖像的高度為文件大小與512的比值.通過上述方法,繪制惡意代碼圖像.圖1為MD5值為1d2faa9b57e871f6e426837b8df2ab62的惡意代碼圖像:

圖1 惡意代碼圖示例
本文方法采用GIST算法獲取圖像的紋理特征[10],該算法常用于進行圖像識別.
圖像的GIST特征提取方法:首先把圖像劃分為子區域,接著將子區域與不同方向和不同尺度的Gabor濾波器組進行濾波,最后把結果進行整合得到圖像的全局GIST特征.
假設待提取特征的惡意代碼圖像為一個整體,首先將其劃分為n×n的網格,每個網格表示1個子區域,用nc個通道的Gabor濾波器對子區域進程卷積濾波,其中nc等于濾波尺度和方向數的乘積,然后在每個網格內計算每個通道的平均能量得到特征,將每個網格的特征級聯起來,就得到惡意代碼圖像的全局GIST特征,即

在式(1)中,cat表示級聯運算符號,*表示卷積操作.在本文中將惡意代碼圖像劃分為4×4的網格,然后采用4個濾波尺度和8個方向的Gabor濾波器對圖像進行濾波,整合后得到4×4×4×8=512維特征向量作為惡意代碼圖像的全局特征指紋.

圖2 基于操作碼的惡意代碼圖像有效像素圖
SIFT(scale-invariant feature transform)是一種計算機視覺算法,用來偵測和描述圖像中的局部特征,可以保持對于尺度變化的不變性.
SIFT算法整體流程可以分為5步,首先構建圖像尺度空間,檢測尺度空間中的局部極值點,然后對關鍵點進行檢驗,通過計算相應的梯度對關鍵點方向進行匹配,在找到關鍵點并確認其相應的信息后,最后為每個關鍵點建立一個描述符,用1組向量將這個關鍵點描述出來.
Lowe[11]提出的采用4×4×8的描述形式通常能獲得較好的實驗結果.本文采用的方法也將關鍵點領域劃分為4×4的網格,梯度統計方向數設置為8,最終提取4×4×8=128維的向量為該惡意代碼圖像的SIFT特征向量,最終可以得到128×keypoints的特征,其中keypoints代表特征點的個數.
灰度共生矩陣(gray level co-occurrence matrix,GLCM)是分析灰度圖紋理特征最典型的一種方法,并廣泛應用在目標識別和圖像分類等方面.圖像的紋理特征不依靠于圖像的亮度或色差,表現的是圖像中局部范圍內相鄰像素灰階分布狀態的一種視覺特征.灰度共生矩陣體現了灰度圖在方向、變化幅度和局部領域的特征,是分析灰度圖的局部模式和排列規律的理論.它描述了1個灰度值為i的像素與1個灰度值為j的像素在θ方向上,距離為d出現的概率,記為P(i,j;d,θ).
雖然通過灰度共生矩陣提取的紋理特征對灰度圖具有良好的分類效果,但是計算難度比較大.通常計算灰度圖的灰度共生矩陣需要考慮4個方面:圖像灰度級L、方向θ、距離d、窗口大小Nc.Haralick等人[12]提出了灰度共生矩陣的14種特征,但是使用14種特征進行計算時計算復雜度大.韓曉光等人[13]使用PCA算法對14種特征進行計算,選取了6種對基于字節碼序列的惡意樣本圖像貢獻較大的特征,分別為對比度、齊次性、自相關、非相似度、角二階距和熵.在Ulaby等人[14]研究中發現只有4種特征是不相關的.為了簡化特征,本文從4個方向提取這4種不相干的特征作為基于字節碼序列的惡意代碼圖像的特征,分別為能量、慣性矩、相關性和熵,上述特征可以通過Matlab中的函數graycoprops得到.
基于操作碼的n-gram模型,如果n的取值過小,就無法表示較為復雜的操作,如果太大又無法檢測出混淆技術,Moskovitch等人[15]在研究中發現當n取值為2,3時效果最好.但是由于惡意代碼語料庫的差異,n的取值有所不同,在本文研究的惡意代碼語料庫中,當n取1,2,3,4時分別提取到了165種1-gram、27225種2-gram、21285種3-gram、22384種4-gram,其中當n取值為2,3,4時n-gram數量級相同,因此本文方法選擇取n分別為2,3,4.對圖2中的操作碼序列提取n-gram特征,其中:2-gram為S1=(push,lea),S2=(lea,push),S3=(push,mov)等;3-gram為S1=(push,lea,push),S2=(lea,push,mov),S3=(push,mov,call)等;4-gram為S1=(push,lea,push,mov),S2=(lea,push,mov,call),S3=(push,mov,call,mov).通過n-gram可以提取多種特征,我們通過隨機森林算法的特征重要性從其中選出TOP10的n-gram特征,如表1所示:

表1 TOP10 n-gram特征

表2 TOP10 Segment特征

圖3 操作碼文件中的Segment
在惡意代碼的操作碼文件中,每一行的開頭都是字符串加“:”的結構,其中的字符串就是這一行操作碼所屬的Segment名稱,即區塊名稱,如圖3所示,這是一個8位的ASCII碼名,通常由“.”開始,如圖3中的“.text”,但這個點并不是必須的.
通常情況下,區塊中的數據是相關聯的.在PE文件中,最少有代碼塊和數據塊2個區塊,每個區塊有自己的名字.如表2所示為微軟命名的常見的區塊重要性排名TOP10的Segment特征.但這樣的名稱并不是必須的,而區段的名稱是用戶可以自定義的,這對于惡意代碼標準是非常關鍵的,因為相同的惡意代碼家族可能會采用相同和相似的區段名稱命名方法.除此之外,不同編譯環境的命名方法也有所不同,如Borland的鏈接器采用的是CODE,DATA,HEADER這樣的命名方式.綜上所述,操作碼中的Segment特征能反映出惡意代碼作者的區塊命名特點和編譯環境,有利于惡意代碼家族標注.
本文從惡意代碼字節碼層和操作碼層提取基于惡意代碼圖像和文本的多個特征,各個特征提取的角度和特征自身的維度各不相同,本文設計的3層多分類器聯合框架,更好地利用了提取的特征.3層多分類器聯合框架分為特征組合層、分類層和聯合層.特征組合層的作用是將提取的惡意代碼特征根據其提取的算法、特征的來源和特征的維度進行組合.首先將基于惡意代碼字節碼圖像提取的GIST特征和SIFT特征進行提取.GIST特征表現的是圖像的全局特征,SIFT特征表現的是圖像的局部特征,且SIFT特征具有良好的擴展性,經過組合的特征能夠在全局和局部對惡意代碼圖像進行描述.其次,將基于惡意代碼操作碼圖像提取的像素特征與惡意代碼文本指紋特征進行組合,這2種特征都是基于惡意代碼操作碼文件提取出來的,能夠進行相互補充.最后基于惡意代碼操作碼圖像的灰度共生矩陣特征由于自身維度原因,不與其他特征進行組合.3層多分離器聯合框架圖如圖4所示:

圖4 3層多分類器聯合框架
本文實驗所采用的惡意樣本來源于Microsoft在Kaggle上的項目Microsoft Malware Classification Challenge(http://www.kaggle.com/c/malwareclassification)[16].數據集中惡意樣本家族數量分布如表3所示.
實驗采用基于惡意代碼圖像指紋的惡意代碼家族標注方法對Microsoft提供的9類惡意代碼進行惡意代碼家族標注測試,實驗采用準確率Accuracy、精確率Precision、召回率Recall和F1-score這4種評價指標評價惡意代碼家族標記效果,計算公式如下:

表3 惡意樣本家族數量分布情況


其中TP,FP,TN,FN分別表示被分類器識別為正的正樣本、被分類器識別為正的負樣本、被分類器識別為負的正樣本、被分類器識別為負的負樣本.實驗結果如表4所示:

表4 聯合層測試結果
由表4可知:除去樣本較少的Simda外,惡意代碼家族標注的準確率、精確率、召回率和F1-score均高于90%,說明該方法對于惡意代碼家族標注有較好的效果.
從實驗結果來看,本文提出的基于多特征的惡意代碼家族靜態家族方法能對惡意代碼樣本進行快速有效的惡意代碼家族標注.在下一步工作中,還可以在惡意代碼圖像處理部分,將惡意代碼圖像作為整體看待.未來可以分析惡意代碼圖像每個部分與惡意代碼各區段之間的關系,尋找與惡意代碼家族最相關的部分進行深入分析,同時在下一步研究中,應該去除重疊的部分,使提取的多特征相互獨立,有助于提高多分類器聯合的分類正確率.
致謝 本文研究受到CCF-啟明星辰鴻雁科研計劃的資助,在此表示深深的感謝!
[1]瑞星.瑞星2016年中國信息安全報告[EB/OL].[2018-03-10].http://it.rising.com.cn/dongtai/18659.html
[2]互聯網安全中心.360安全報告——2016年中國互聯網安全報告[EB/OL].[2018-03-10].http://zt.360.cn/1101061855.php?dtid=11011062514&did=490278985
[3]Flake H.Structural comparison of executable objects[C]//Proc of IEEE Conf on Detection of Intrusions and Malware&Vulnerability Assessment.Piscataway,NJ:IEEE,2004:161-173
[4]Dullien T,Rolles R.Graph-based comparison of executable objects(english version)[OL].2005[2018-03-15].http://actes.sstic.org/SSTIC05/Analyse-differentielle-debinaires/SSTIC05-article-Flake-Graph-based-comparisonof-Executable-Objects.pdf
[5]Kolter J Z,Maloof M A.Learning to detect and classify malicious executables in the wild[J].Journal of Machine Learning Research,2006,7(12):2721-2744
[6]楊軼,蘇璞睿,應凌云,等.基于行為依賴特征的惡意代碼相似性比較方法[J].軟件學報,2011,22(10):2438-2453
[7]Kancherla K,Mukkamala S.Image visualization based malware detection[C]//Proc of IEEE Symp on Computational Intelligence in Cyber Security(CICS).Piscataway,NJ:IEEE,2013:40-44
[8]徐小琳,云曉春,周勇林,等.基于特征聚類的海量惡意代碼在線自動分析模型[J].通信學報,2013,34(8):146-153
[9]Cesare S,Xiang Y,Zhou W.Malwise—An effective and efficient classification system for packed and polymorphic malware[J].IEEE Trans on Computers,2013,62(6):1193-1206
[10]Oliva A,Torralba A.Building the gist of a scene:The role of global image features in recognition[J].Progress in Brain Research,2006,155(2):23-36
[11]Lowe D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):91-110
[12]Haralick R M,Shanmugam K.Textural features for image classification[J].IEEE Trans on Systems,Man,and Cybernetics,1973,3(6):610-621
[13]韓曉光,姚宣霞,曲武,等.基于圖像紋理聚類的惡意代碼家族標注方法[J].解放軍理工大學學報:自然科學版,2014,15(5):440-449
[14]Ulaby F T,Kouyate F,Brisco B,et al.Textural infornation in SARimages[J].IEEE Trans on Geoscience and Remote Sensing,1986,GE-24(2):235-245
[15]Moskovitch R,Feher C,Tzachar N,et al.Unknown malcode detection using OPCODE representation[C/OL].//Proc of the1st EuroISI 2008.2008[2018-03-15].http://medinfo.ise.bgu.ac.il/med Lab/MembersHomePages/RobPapers/Moskovitch.OPCODE-UnknownMalcodeDetection.EuroISI08.pdf
[16]Microsoft Malware Classification[OL].[2018-03-10].https://www.kaggle.com/c/malware-classificaton