盧 豐,王 晨
(1.武漢郵電科學研究院湖北武漢 430000;2.南京烽火天地通信科技有限公司 江蘇南京 210000)
隨著科技發展的日新月異,計算機已經在人們的日常生活中扮演著不可代替的角色,然而人們在享受著計算機為生活帶來便利的同時也要警惕隨之而來的風險和無所不在的威脅。
伴隨著移動互聯網技術的發展,移動端應用安全也逐漸受到人們的重視。2017 年,360 公司發布的關于Android 惡意軟件調查數據顯示,2017 年平均每天約有58 人手機遭到入侵,惡意軟件日增長數量達到2 萬,入侵用戶手機總計達2.14 億次,超過八成給用戶造成了經濟損失[1]。
綜上可知,惡意代碼無論給人們日常生活還是國家的安全都帶來了嚴重的威脅和影響,因此對惡意代碼進行高效快速的識別具有十分重要的意義,吸引了全球各國大量目光與關注。鑒于此,文中給出基于圖像特征的惡意代碼識別方法,首先將代碼文件映射到紅、綠、藍通道,同時建立相應的彩色圖像文件;其次從惡意代碼文件出發,完成局部信息熵的計算,并將計算的結果作為透明度,使之轉換成擁有透明度的圖像文件;最后通過CNN 提取惡意代碼特征,形成識別檢測分類模型。在實驗結果的基礎上探究訓練集的數量,并與訓練時間關聯,再和其他實驗結果展開對比研究,最終證明文中方法有較短的檢測時間和較高的精確度,展現出了良好的實用性。
惡意代碼又稱為惡意軟件,它是指能夠在計算機系統中進行非授權操作,以實施破壞或竊取信息的代碼。惡意代碼范圍很廣,包括利用各種網絡、操作系統、軟件和物理安全漏洞向計算機系統傳播惡意負載的程序性的計算機安全威脅。惡意代碼的形式也多種多樣,它既可以是二進制的代碼,同時又可以是可執行文件。惡意代碼可利用Internet 或物理媒介傳播,在無須授權的前提下也可自主運行,以此實現對用戶計算機數據信息的非法獲取和利用,導致用戶蒙受不同程度的損失,因此必須引起高度的關注和重視。
2011 年,Nataraj[2]提出了惡意代碼圖像化的觀點,并且表示能將惡意代碼文件轉變為一種可視化的圖像,這樣就省去了對惡意代碼的解析等一系列復雜操作,節省了檢測識別所需的時間,因此被學術領域廣泛研究。惡意代碼圖像化方法直接從二進制文件的字節級別進行分析,但是在信息感知方面比以前基于字節的惡意代碼功能更全面,并且可以更快速地發現文件中的差異。因為該方法具有不同的檢測機制,所以在多次測試中均顯示出良好的獨立檢測率,并已經逐漸被業界集成到防病毒引擎群中進行集中部署,屬于全新檢測引擎。具體思路是將給定惡意代碼二進制文件讀取為8 位無符號整數向量,并生成二維數組。文件中的每個字節可以完全對應于灰度圖像中每個點的像素值,范圍為[0,255](0 表示黑色,255 表示白色)[3]。然后,研究人員使用廣義搜索樹(GIST)算法提取惡意代碼的圖像特征,并使用支持向量機(SVM)和其他深度學習算法進行惡意代碼的分類。
惡意代碼圖像化始一問世就受到學術界普遍關注,后續研究則以此為前提完成大量優化調整,最終收獲一系列有用成果。2014 年,韓曉光等[4]在惡意代碼圖像紋理聚類方面完成我國開拓性探索。2016年,任卓君等[5]研究了優化后惡意代碼可視化技術,該技術主要將代碼段局部熵轉變成熵像素圖,采用視覺形式反映代碼內部結構特征,同時依靠降維手段大幅優化相似度對比與分類效率。張晨斌[6]優化了Android 惡意代碼灰度策略,通過與GIST、Tamura等有關特征提取法,再依靠CAFFE 編寫5 種分類算法,同時開展了相應實驗。上述成果使得之前研究中對惡意代碼的靜態分析問題得到解決,找到了惡意代碼難以解決其樣本加殼的方案。伴隨著深度學習技術的快速發展,一些研究人員通過該技術完成了惡意代碼圖像分類,效果非常顯著。2018 年,Cui等[7]通過CNN 裁剪惡意代碼灰度圖像,同時以bat 算法來平衡。依靠CNN 算法對惡意代碼家族完成有效的分類。2017 年,Rezende 等[8]面向Malimg 數據開展更深層的分析工作,通過遷移學習方法順利完成了Resnet 網絡(基于ImageNet 數據集訓練后)至惡意代碼圖像的遷移,從而大大提高了原始數據集的準確性。基于惡意代碼可視化檢測法屬于端至端學習法,能有效降低檢測識別階段的特征工程開銷,由輸入至輸出惡意代碼過程直接完成預測,不必手動選取與過濾中間等環節,就能將結果誤差置于神經網絡模型各層傳輸(反向觸底),直至模型擁有所需的理想效果或者模型收斂為止。經過近10年的研究,可視化惡意代碼方案已被證實擁有可行性與實用性,而且受學術、工業領域的高度重視,應用極其普遍。
惡意代碼文件轉換為對應RGB 圖的算法如圖1所示,它的原理是將惡意代碼文件以字節為單位分別映射到對應的3 個顏色通道上。3 個顏色通道中的每一個都具有256 個顏色級別。相應的惡意代碼文件經過解壓脫殼后以字節為單位,取值范圍為0x00~0xFF。將它們按照每3 個字節單位長度劃分開后映射到3 個顏色通道。例如,將字節EFCEBC 轉化為對應的RGB 值(239,207,188)。按照這種方法便可以將惡意代碼的代碼文件分別映射到對應的紅、綠、藍3 種顏色的通道中轉化為RGB 圖像,對比于只有一種顏色通道的灰度圖,RGB 圖的顏色通道是灰度圖顏色通道的3 倍,因此具有比灰度圖更多的特征信息,在惡意代碼的分類識別中會更加精準。

圖1 RGBA圖像算法圖
信息熵通常是指信息中所包含的不確定性,如果一個數據集中只有一個元素,則該數據集的信息熵為零;相反,如果數據集中所有的元素均勻分布,則信息熵達到最大值。惡意代碼為了躲避殺毒軟件的偵測會進行壓縮加密等操作,信息熵值會普遍偏高,所以信息熵也可以用于檢測和識別惡意代碼文件。
RGBA 圖像的生成方法如下所示:
1)將惡意代碼文件劃分成字節長度為256 的數據塊,如果不足則在末尾用0 填充。
2)計算上述步驟所得到的數據塊的信息熵,具體計算公式如式(1)所示,其中,pj表示該字節出現的概率。

3)為了將信息熵映射到對應的透明通道,需要將信息熵值進行放大處理[13],用式(2)將信息熵值的取值范圍放大到[0,255]。

4)惡意代碼文件生成的RGB 圖像是由3 個顏色通道最終重疊合并為一個像素點構成的,每個數據塊中有256 個字節單位。依據這種規則將信息熵值生成對應的Alpha Map 矩陣。
5)將信息熵值所生成的對應Alpha Map 矩陣映射到透明度通道,并將RGB 圖相互融合,形成透明的彩色圖像,即為實驗生成的RGBA 圖像。
文中通過CNN 面向惡意代碼相應特征實現準確提取及分類,能夠減少噪聲對實驗結果造成的影響,使得實驗結果更準確。卷積神經網絡的結構對其性能有較大的影響,不同的結構會造成明顯差異。該實驗使用的卷積神經網絡結構,在首層卷積層采用32 卷積核對惡意代碼進行有效特征碼的提取檢測識別,每個卷積核的大小為3×3,并使用ReLu函數作為激活函數,因為其具有較好的飽和性和線性特征,然后再加上一個相同的卷積層。再使用2×2的池化層,縮小并簡化首層所得到的要素映射組,以消除冗余和次要影響的要素。最后,通過完全連接層發送到softmax 分類器來進行惡意代碼的識別及分類[14]。
在分類算法中,有基本指標和更能表達分類器效果的指標。其中,基本指標包括[15]真正例(TP)、假正例(FP)、真負例(TN)、假負例(FN)。通常把正樣例正確分類的概率稱為真例率(TR),也叫作召回率。相反地,將正樣例錯誤分類的概率稱為假例率(FP),即為誤判率。正確分類的樣例的數量占總正確樣例數量的比例用精確度(PR)來表示。精確度和召回率的調和均值用F1-Socre 來表示。所有正確樣例與總樣例的比值稱為準確率(Accuracy)。具體的評估指標公式如表1 所示。

表1 評估指標公式
該實驗數據重點來自兩方面,分別是微軟公司在Kaggle 上公開發布的惡意代碼文件的數據集[16]和互聯網上收集的樣本。文中實驗環境如表2 所示。

表2 實驗環境
數據內大量有用信息均處于載體圖像各像素點內。數據涵蓋結構等要素,但彼此間要素差異之處由圖像決定。因此選擇不同的參數作為圖像的特征可以得出不同的實驗結果。該實驗中所使用的各類圖像的主要生成方法如下:
1)灰度圖(Gray Image):如圖2 所示,該圖像是通過B2M 算法將惡意代碼文檔的二級制代碼文件映射到單一通道形成的灰度圖像[17]。

圖2 灰度圖
2)信息熵圖(Shannon Image)[18]:生成的信息熵圖如圖3 所示。信息熵圖的像素點由惡意代碼的信息熵值構成,信息熵值根據惡意代碼文檔計算得出,在將惡意代碼文件的信息熵值作為圖像的像素點坐標值之前,需要先將信息熵值進行放大,這個放大過成需要根據指標進行。

圖3 信息熵圖
3)彩色圖(RGB 圖):生成的RGB 圖像如圖4 所示。為映射到彩色圖像的R、G、B 通道,需要先將惡意代碼文件劃分為3 個數據塊,每個數據塊對應映射到相應顏色通道,最后對每個數據塊所映射的圖像進行融合處理,得到彩色圖像。圖5 為文中提出的RGBA 圖像。

圖4 RGB圖

圖5 RGBA圖
文中在所有樣本集中隨機抽取1 000 個樣本作為此次實驗的訓練集,抽取500 個樣本作為此次實驗的測試集,并且選用上述表2 中所介紹的重要指標PR、Recall、F1-Socre 和Accuracy 作為實驗的實驗結果評測指標。對不同的代碼進行不同的可視化圖像之后所得到的實驗結果如表3 所示。

表3 不同代碼可視化圖像的實驗結果
根據所得結果分析可知,在準確率方面,彩色圖高于灰度圖,灰度圖高于信息熵圖,RGBA 圖相比較于其他圖像最高,且召回率亦是如此。借此不難發現,提出方法可面向二進制惡意代碼文件進行有效的特征信息提取,并能夠對其進行正確分類,有效地提高了檢測識別效率。
接著通過實驗來分析樣本數量對準確率和訓練時間的影響。為研究兩者受影響程度,選擇500、700、1 000、1 500、2 000 個訓練樣本進行對比實驗,結果如圖6 所示。根據所得結果分析可知,在初始階段樣本增多情況下,準確率也有較為明顯的上升趨勢。但是在訓練樣本的數量超過一定數值之后,這種上升趨勢隨之逐漸變小。然而,隨著訓練樣本數量的增加,訓練所需的時間仍會呈現線性增加的形式,即隨著樣本數目的提升所需要的時間也更長。

圖6 訓練樣本數量對精確率和訓練時間的影響
文中提出了一種基于圖像特征的惡意代碼圖像化識別檢測方法,首先將惡意代碼進行查殼和脫殼之后的源代碼文件映射到紅、綠、藍3 種顏色的彩色圖像,然后計算其對應的信息熵值,并且按照計算結果作為彩色圖像的透明度值,將惡意代碼文件轉換為帶有透明度的彩色圖像文件。在科學實驗前提下分析訓練集數量與訓練時間關聯,再和其他實驗方法所得的結果進行比較分析。綜合實驗數據表明,所提方法具有較短的檢測時間和較高的精確率,展現出良好的實用性。隨著時間的不斷推移,Internet發展越來越快,惡意軟件數量隨之增多,導致Internet 安全遭受巨大威脅。為了讓用戶享有和諧、友好的網絡環境,必須盡可能提高檢測識別效果,及時消除各種危險隱患,故而文種方法的提出意義重大,未來需要進行更深層研究與探索!