呂 臻,張 宇
(1. 浙江省嘉興市公安局科技信息通信處,浙江 嘉興 314001;2. 貴州省遵義市公安局科技信息通信處,貴州 遵義 563000)
隨著矛與盾的升級(jí),病毒檢測(cè)和病毒變形的對(duì)抗越來(lái)越激烈。檢測(cè)方式由最初的md5匹配,到簡(jiǎn)單的特征檢測(cè),再到具有啟發(fā)能力的機(jī)器學(xué)習(xí)檢測(cè)。然而病毒的變形方式也越來(lái)越多樣化,從修改 md5到切片免殺再到多態(tài)變形[2]。
如何有效的識(shí)別病毒并把病毒家族化,對(duì)于未知樣本的聚類,家族識(shí)別是我們需要面對(duì)的挑戰(zhàn)。
一個(gè)二進(jìn)制病毒可以轉(zhuǎn)化為一個(gè)灰度圖[3],轉(zhuǎn)換為灰度圖之后,我們就把病毒識(shí)別的問(wèn)題轉(zhuǎn)換為了圖片識(shí)別分類問(wèn)題。深度學(xué)習(xí)中的CNN正好是解決圖片分類問(wèn)題的好方法[4]。傳統(tǒng)的特征提取檢測(cè)引擎,特征提取的代價(jià)很高,往往無(wú)法高效的檢測(cè)新增樣本和樣本的變種[5]。傳統(tǒng)的機(jī)器學(xué)習(xí)的方法,也同樣存在特征提取的問(wèn)題,特征的好壞往往是主導(dǎo)檢測(cè)效果的主要原因[6]。
CNN神經(jīng)網(wǎng)絡(luò)卻很好的解決了上述問(wèn)題,特征自動(dòng)提取,所以特征的通用性和魯棒性更好。
在這個(gè)過(guò)程中,我們依然有一些困難。比如:訓(xùn)練樣本種類樣本數(shù)量差距較大、計(jì)算量較大,需要更多的訓(xùn)練樣本。
在之前的研究中很多人已經(jīng)開始了二進(jìn)制文件轉(zhuǎn)圖的工作[3],一般是通過(guò)整體文件轉(zhuǎn)化為圖片,然后根據(jù)家族進(jìn)行分類。 我們這里的方法,是取了文件256個(gè)字節(jié)的入口點(diǎn)代碼作為圖片像素。依然可以有效的區(qū)分病毒家族。我們舉例幾種多態(tài)變形家族的例子:
圖1 parite家族病毒不同變種的入口點(diǎn)灰色圖Fig.1 Grey diagram of entry points for different variants of parite family virus
圖2 wannacry病毒家族不同變種的入口點(diǎn)灰色圖Fig.2 Grey diagram of entry points for different variants of wannacry virus family
圖3 Virut感染型病毒家族不同變種的入口點(diǎn)灰色圖Fig.3 Grey diagram of entry points for different variants of Virut infectious virus family
通過(guò)上面的例子可以看出,二進(jìn)制轉(zhuǎn)出的圖,可以肉眼識(shí)別出家族關(guān)系和不同家族之前的區(qū)別。為了發(fā)現(xiàn)更多更深層次的特征關(guān)聯(lián),我們后面使用CNN進(jìn)行特征提取。
應(yīng)用 CNN去識(shí)別分類病毒圖像的過(guò)程中有幾個(gè)困難的地方,一個(gè)是樣本數(shù)量不均衡[7,8],一個(gè)是需要有監(jiān)督訓(xùn)練 。
本文提出:
a.采取新的損失函數(shù),來(lái)解決樣本數(shù)量不均衡的問(wèn)題。
b.聚類---打標(biāo)簽---分類的思路 來(lái)解決監(jiān)督訓(xùn)練樣本數(shù)量不夠的問(wèn)題。
(1)樣本數(shù)量不均衡:
在我們的訓(xùn)練樣本中有著樣本不均衡的情況,比如,virut、sality病毒的數(shù)量就很多每一類都5w+的數(shù)量,而 btc.xmr 類型病毒數(shù)量就會(huì)少很多,只有大概80多個(gè)。在多分類問(wèn)題中,各種類樣本數(shù)量比例應(yīng)該在 1:1 左右會(huì)有比較好的效果,這時(shí)樣本數(shù)量是均衡的。但是在我們的實(shí)際情況看,樣本很難是均衡的。訓(xùn)練出的結(jié)果也不會(huì)很好,所以我們修改了sofmax函數(shù),來(lái)解決這個(gè)問(wèn)題。
加權(quán)softmax函數(shù):
Softmax回歸模型,該模型是logistic回歸模型在多分類問(wèn)題上的推廣,在多分類問(wèn)題中,類標(biāo)簽y可以取兩個(gè)以上的值。
在 softmax回歸中,我們解決的是多分類問(wèn)題(相對(duì)于 logistic回歸解決的二分類問(wèn)題),類標(biāo)y可以取k個(gè)不同的值(而不是2個(gè))。因此,對(duì)于訓(xùn)練集(注意此處的類別下標(biāo)從1開始,而不是0)。例如,在MNIST數(shù)字識(shí)別任務(wù)中,我們有k個(gè)不同的類別。
Softmax代價(jià)函數(shù)與 logistic 代價(jià)函數(shù)在形式上非常類似,只是在 Softmax損失函數(shù)中對(duì)類標(biāo)記的k個(gè)可能值進(jìn)行了累加。注意在 Softmax回歸中將x分類為類別 j的概率為:
由于傳統(tǒng)的 softmax會(huì)平均對(duì)待每一類,那么對(duì)于樣本數(shù)量比較少的類型就會(huì)有不好的效果,我們對(duì)于每個(gè)類別的概率前面進(jìn)行加權(quán)計(jì)算。
權(quán)重ωk的計(jì)算方式如下:
這里的maxS是訓(xùn)練集合中,樣本數(shù)量最大集合的樣本數(shù)量。kS是第K個(gè)類別的樣本數(shù)量,β是用來(lái)控制權(quán)重的一個(gè)系數(shù),這個(gè)系數(shù)我們通過(guò)遍歷法來(lái)選擇一個(gè)較為好用的,我們的經(jīng)驗(yàn)值是25.
(2)監(jiān)督訓(xùn)練樣本不夠
我們通過(guò) Kmeans算法,在收集到的海量樣本中,同樣采用圖片作為特征進(jìn)行聚類,聚類后人工審核打標(biāo)簽,然后將打過(guò)標(biāo)簽的樣本類型加入訓(xùn)練。
流程圖如下:
圖4 訓(xùn)練流程圖Fig.4 Training flow chart
這個(gè)部分我們討論應(yīng)用 VGG網(wǎng)絡(luò)來(lái)進(jìn)行我們的病毒圖片分類。
(1)網(wǎng)絡(luò)結(jié)構(gòu)
VGGNet[9]是牛津大學(xué)計(jì)算機(jī)視覺組(Visual Geometry Group)和Google DeepMind 公司的研究員一起研發(fā)的的深度卷積神經(jīng)網(wǎng)絡(luò),在 ILSVRC 2014上取得了第二名的成績(jī),將 Top-5錯(cuò)誤率降到7.3%。
好學(xué)校要把學(xué)生的全面發(fā)展和個(gè)性發(fā)展結(jié)合起來(lái),才能使學(xué)生發(fā)現(xiàn)自己的長(zhǎng)處并培養(yǎng)自己的長(zhǎng)處,最后使自己成為一個(gè)人格健全、積極上進(jìn)和快樂(lè)幸福的人。好教育就是讓學(xué)生做最好的自己。我們最近也在做一些事情來(lái)配套跟進(jìn)。
GGNet 探索了卷積神經(jīng)網(wǎng)絡(luò)的深度與其性能之間的關(guān)系,通過(guò)反復(fù)堆疊3′3的小型卷積核和2′2的最大池化層,VGGNet成功地構(gòu)筑了16~19層深的卷積神經(jīng)網(wǎng)絡(luò)。VGGNet相比之前state- of-the-art的網(wǎng)絡(luò)結(jié)構(gòu),錯(cuò)誤率大幅下降,并取得了ILSVRC 2014比賽分類項(xiàng)目的第2名和定位項(xiàng)目的第1名。
同時(shí) VGGNet 的拓展性很強(qiáng),遷移到其他圖片數(shù)據(jù)上的泛化性非常好。VGGNet 的結(jié)構(gòu)非常簡(jiǎn)潔,整個(gè)網(wǎng)絡(luò)都使用了同樣大小的卷積核尺寸(3′3)和最大池化尺寸(2′2)。
深度學(xué)習(xí)中最大的問(wèn)題是過(guò)擬合[10],所以我們每層網(wǎng)絡(luò)中加入dropout,來(lái)避免過(guò)擬合。每層網(wǎng)絡(luò)中的單元被隨機(jī)丟棄。我們?cè)黾觾蓚€(gè)Droput層來(lái)防止過(guò)擬合。(VGG19并不包含dropout層)。結(jié)構(gòu)如下:
圖5 CNN網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 CNN network structure diagram
(2)加入加權(quán)softmax函數(shù)
為了解決之前說(shuō)的訓(xùn)練樣本不平衡問(wèn)題,我們把修改的加權(quán) softmax函數(shù)作為網(wǎng)絡(luò)的最后一層。下圖中的NET1、NET2均為上面這個(gè)CONV+droput的結(jié)構(gòu)。
網(wǎng)絡(luò)總體結(jié)構(gòu)如下:
圖6 判別網(wǎng)絡(luò)總體結(jié)構(gòu)圖Fig.6 General structure diagram of discriminant network
我們會(huì)比較SVM、LR、和CNN網(wǎng)絡(luò)檢測(cè)病毒圖片的能力和 CNN 使用普通的 softmax 和 加權(quán)softmax在檢測(cè)能力上的比對(duì)。并描繪在實(shí)際應(yīng)用中,通過(guò)CNN檢測(cè)linux樣本引擎的roc曲線。
SVM:使用 libsvm,參數(shù) g和 c通過(guò) easy.py計(jì)算
CNN:tensorflow + keras
操作系統(tǒng):windows 7
數(shù)據(jù):
實(shí)驗(yàn)中的數(shù)據(jù)集包含了10個(gè)病毒類別,不同類型病毒之間的樣本數(shù)量是高度不平衡的。每一種類型的名字和樣本數(shù)量在下表中列出。我們把數(shù)據(jù)分為3塊,60%的樣本作為訓(xùn)練集合,20%的樣本作為驗(yàn)證集合,最后20%的樣本作為測(cè)試集合。
表1 測(cè)試集結(jié)果Tab.1 Test set results
我們發(fā)現(xiàn) CNN算法比SVM算法在病毒圖識(shí)別中有著更高的精度,CNN加權(quán)算法相比CNN算法,在樣本比例不平衡的情況下,對(duì)于小樣本集合有著一定的優(yōu)化作用。
不足之處,在二進(jìn)制轉(zhuǎn)換圖片的過(guò)程中,發(fā)現(xiàn)僅僅使用入口函數(shù)的256個(gè)字節(jié)還是很多病毒分不開,今后會(huì)對(duì)此做出改進(jìn)。
CNN引擎檢測(cè) linux平臺(tái)惡意文件的 ROC曲線圖,如圖7所示。
我們通過(guò)二進(jìn)制轉(zhuǎn)圖,在通過(guò) CNN和加權(quán)的softmax,可以有效的檢測(cè)病毒樣本,也獲得不錯(cuò)的精度??梢酝ㄟ^(guò)CNN自動(dòng)提取代碼特征,解決了二進(jìn)制病毒識(shí)別中特征提取困難的問(wèn)題。
圖7 ROC曲線圖Fig.7 ROC curve graph
今后的工作中,我們會(huì)對(duì)于自動(dòng)提取的特征進(jìn)行人工分析,看是否存在可以解釋的特征。
本次試驗(yàn)中,雖然對(duì)于家族檢測(cè)效果較好,但是對(duì)于加殼文件沒有進(jìn)行測(cè)試,通常加殼是躲避殺軟查殺的主要方式。今后的工作中,我們會(huì)對(duì)加殼文件進(jìn)行測(cè)試。
對(duì)于樣本不平衡問(wèn)題,加權(quán) softmax方法有著較好的效果,但還需進(jìn)一步探究不同情況下β對(duì)于加權(quán)softmax的影響。