張雪芹,王逸璇,趙 敏
(華東理工大學(xué) 信息科學(xué)與工程學(xué)院,上海 200237)
在基于網(wǎng)絡(luò)流量的惡意軟件檢[1,2]中,Chen等[3]提出從網(wǎng)絡(luò)流量中提取流量統(tǒng)計特征和數(shù)據(jù)包統(tǒng)計特征,分別采用隨機森林、K近鄰、決策樹模型進行檢測,在隨機森林上獲得了最高95%的二分類準(zhǔn)確。王澍瑋等[4]以會話的形式對網(wǎng)絡(luò)流量進行切分并做one-hot編碼,采用雙向LSTM(long short-term memory)提取時序特征,利用LSTM從數(shù)據(jù)包向量中學(xué)習(xí)空間特征,通過softmax層進行分類,二分類實驗準(zhǔn)確率為87.55%。Wei等[5]提出采用網(wǎng)絡(luò)流量統(tǒng)計特征作為檢測特征,利用一維卷積神經(jīng)網(wǎng)絡(luò)從多個網(wǎng)絡(luò)流中提取局部特征,利用自編碼器從神經(jīng)網(wǎng)絡(luò)中提取主要的流量特征并集成到獨立遞歸神經(jīng)網(wǎng)絡(luò)中,在實驗中二分類準(zhǔn)確率為98%。Xu等[6]提取原始網(wǎng)絡(luò)流中的部分字節(jié)轉(zhuǎn)換為二維圖像,使用卷積神經(jīng)網(wǎng)絡(luò)提取流特征,將屬于同一個應(yīng)用的流特征按照時間順序送入雙向LSTM進行特征學(xué)習(xí),最后使用softmax層進行分類,實驗中二分類和多分類準(zhǔn)確率分別為97.16%和84.70%。Zhou等[7]對網(wǎng)絡(luò)流量的統(tǒng)計特征進行分析,分別使用添加了混淆分類器的支持向量機、隨機森林和XGBoost(eXtreme gra-dient boosting)3種模型進行分類,最高達到98.80%的二分類準(zhǔn)確率。
本文提出的基于DenseNet網(wǎng)絡(luò)的Android惡意軟件檢測框架結(jié)構(gòu)如圖1所示。

圖1 基于DenseNet_IS網(wǎng)絡(luò)的安卓惡意軟件檢測框架
一個APK文件運行后,會產(chǎn)生一組流量。在流量文件中,具有相同[源IP地址、源端口、目的IP地址、目的端口、傳輸層協(xié)議]五元組信息[8]的所有包的集合被稱為流,由雙向流組成的所有包的集合即為會話。將應(yīng)用軟件運行時的通信流量根據(jù)會話的五元組信息進行切分,同時丟棄不帶有實際通信數(shù)據(jù)包的單純的握手或揮手會話,并只保留大多數(shù)的應(yīng)用軟件采用的TCP協(xié)議會話。
網(wǎng)絡(luò)流量實質(zhì)上是字節(jié)序列,可以與像素灰度值相對應(yīng),因此可以轉(zhuǎn)化為灰度圖[9],稱為流量圖。文獻[10]和文獻[11]的研究結(jié)果表明,使用深度學(xué)習(xí)方法對流量數(shù)據(jù)進行檢測時,只取流量的前n個字節(jié)即可實現(xiàn)對其的有效分類。因此,對每個切分后的會話流量選取前n個字節(jié)轉(zhuǎn)化為像素點,超過部分截斷,不足的以0x00進行補充。將轉(zhuǎn)化后的像素點按照一定的規(guī)律排列,即可實現(xiàn)流量從序列到圖片的轉(zhuǎn)換,并通過深度學(xué)習(xí)方法實現(xiàn)端到端的分類[12]。
1.2.1 DenseNet52網(wǎng)絡(luò)結(jié)構(gòu)
DenseNet網(wǎng)絡(luò)與傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)相比,具有參數(shù)量較少、抗過擬合能力較強和減輕梯度消失問題的優(yōu)點[13]。
對于一個L層的DenseNet網(wǎng)絡(luò),共有L×(L+1)/2個連接,第l層的輸出如式(1)所示
xl=Hl([x0,x1,…,xl-1])
(1)
其中,Hl(·) 表示第l層的非線性變換。
DenseNet52網(wǎng)絡(luò)的整體結(jié)構(gòu)如圖2中白色方框所示,其核心是DenseBlock模塊,每個DenseBlock模塊中包含多個bottleneck層。兩個DenseBlock模塊之間使用Transition模塊進行連接,用于減小特征圖的尺寸,并通過控制卷積核的數(shù)量實現(xiàn)對模型的壓縮。

圖2 DenseNet52_IS的網(wǎng)絡(luò)結(jié)構(gòu)
1.2.2 DenseNet52_IS網(wǎng)絡(luò)結(jié)構(gòu)
由于前n個字節(jié)轉(zhuǎn)換的流量圖尺寸較小,DenseNet網(wǎng)絡(luò)原有的大卷核會在學(xué)習(xí)和提取特征時忽略細節(jié)信息。此外,DenseNet網(wǎng)絡(luò)將各層的特征圖在通道維度上進行拼接后通過Transition層進行壓縮,缺少了對重要特征圖及特征圖中重要部分的選擇。為了使DenseNet網(wǎng)絡(luò)適用于基于流量圖的惡意軟件的檢測和分類,并提高檢測和分類的精度,通過添加卷積分支、引入SimAM注意力模塊等方式對DenseNet52網(wǎng)絡(luò)模型進行了改進,改進后的網(wǎng)絡(luò)稱為DenseNet52_IS,改進部分在圖2中用斜體加粗表示。
(1)第一個卷積層(Conv)的改進
由于流量圖的尺寸較小,大卷積核會使得在學(xué)習(xí)和提取特征時較多細節(jié)信息被忽略,以及輸出的特征圖尺寸過小,不利于后續(xù)層的特征提取。因此,將第一個卷積層中7×7,步長為2,填充為3的卷積核換成了大小為3×3,步長為1,填充為1的卷積核。這樣做能夠使得經(jīng)過第一個卷積層后的圖片在保持原有尺寸的同時,還可以學(xué)到足夠多的領(lǐng)域信息,且不會被過多的填充值所干擾。
(2)bottleneck層的改進
為了進一步增加網(wǎng)絡(luò)的學(xué)習(xí)能力,借鑒Inception網(wǎng)絡(luò)結(jié)構(gòu)[14]的設(shè)計思想,采用不同卷積分支以及不同大小的卷積核對bottleneck層進行改進。DenseNet52網(wǎng)絡(luò)中bottleneck層的結(jié)構(gòu)如圖3(a)所示,改進后的bottleneck層稱為bottleneck_I層,結(jié)構(gòu)如圖3(b)所示。bottleneck_I層中增加了一個與bottleneck層結(jié)構(gòu)相同的卷積分支,但將第二個卷積層中大小為3×3、填充為1的卷積核換成了大小為5×5、填充為2的卷積核。這樣做可以采用不同大小的卷積核,以此可以獲得不同大小的感受野。采用在通道維度上對特征圖進行拼接的方式來融合不同尺度的特征,以此增強網(wǎng)絡(luò)的識別能力和泛化能力。將原網(wǎng)絡(luò)中前兩個DenseBlock結(jié)構(gòu)內(nèi)的基礎(chǔ)層全部替換為bottleneck_I層,數(shù)量保持不變。

圖3 bottleneck與bottleneck_I結(jié)構(gòu)對比
(3)引入SimAM注意力機制
為了使網(wǎng)絡(luò)能夠在學(xué)習(xí)特征的過程中對重要特征更加關(guān)注,將SimAM注意力機制[15]引入DenseNet網(wǎng)絡(luò)。與現(xiàn)有的通道和空間注意力模塊不同,SimAM同時考慮空間和通道兩個維度。在不增加原始網(wǎng)絡(luò)參數(shù)的情況下,通過優(yōu)化能量函數(shù),找到每個神經(jīng)元的重要性。
在神經(jīng)科學(xué)中,信息豐富的神經(jīng)元通常表現(xiàn)出與周圍神經(jīng)元不同的放電模式,并且激活神經(jīng)元通常會對其周圍的神經(jīng)元產(chǎn)生抑制作用[15]。因此,具有空域抑制效應(yīng)的激活神經(jīng)元應(yīng)當(dāng)被賦予更高的重要性,通過測量一個目標(biāo)神經(jīng)元與其它神經(jīng)元之間的線性可分性即可找到該類神經(jīng)元。
每個神經(jīng)元能量函數(shù)的定義如式(2)所示
(2)
其中,t是輸入特征X∈C×H×W在單通道的目標(biāo)神經(jīng)元,i是空間維度上的索引,λ是權(quán)重因子,M=H×W是該通道上的神經(jīng)元數(shù)量。和分別表示在同一通道中除了目標(biāo)神經(jīng)元以外的其它神經(jīng)元的均值和方差。
在SimAM模塊中,還使用縮放操作符來進行特征細化,經(jīng)過細化后的特征輸出如式(3)所示
(3)
其中,X代表輸入特征,E將所有神經(jīng)元的能量根據(jù)通道和空間維度進行分組。添加sigmoid函數(shù)是為了限制E中的值,防止其過大,且不會影響每個神經(jīng)元的相對重要性。
在第一個卷積層、bottleneck層以及bottleneck_I層中每個卷積分支的第二個卷積層上添加SimAM注意力模塊,根據(jù)式(2)為卷積層獲得的特征圖分配權(quán)重后,再送入到下一層進行進一步的特征學(xué)習(xí)。
綜上所述,DenseNet_IS模型在DenseNet的基礎(chǔ)上,首先通過修改卷積核的大小,使網(wǎng)絡(luò)更適合于尺寸較小的流量圖;其次,為獲得更廣泛的感受野,在采用對bottleneck層添加具有不同大小的卷積核的卷積分支;最后,通過引入SimAM注意力模塊,從空間和通道兩個維度實現(xiàn)對重要特征的權(quán)重。通過這3個改進,有效增強網(wǎng)絡(luò)的表征學(xué)習(xí)能力。
1.2.3 應(yīng)用軟件良惡性判別
每個安卓應(yīng)用軟件在與服務(wù)器端通信時會產(chǎn)生一組流量,對應(yīng)多張流量圖,DenseNet52_IS模型以單張流量圖為輸入樣本,實現(xiàn)了流量級別的良惡性檢測。考慮惡意軟件檢測的最終目的是獲得軟件級的檢測結(jié)果,采取判別機制,根據(jù)流量級判別結(jié)果獲得軟件級的分類結(jié)果。
二分類時,當(dāng)一個應(yīng)用軟件的流量圖被判定為惡意的數(shù)量占總流量圖數(shù)量的比例超過閾值T,則認為該應(yīng)用軟件是惡意的,否則認為其是良性的,如式(4)所示。T通過實驗確定
(4)
其中,Lapp表示應(yīng)用軟件的類別標(biāo)簽,Lpic表示流量圖的類別標(biāo)簽,mal表示惡意標(biāo)簽,ben表示良性標(biāo)簽,num(.) 表示數(shù)量統(tǒng)計,pic表示流量圖。
多分類時,用同樣的方法標(biāo)記出良性軟件;對于非良性軟件,如果其流量圖種多數(shù)被標(biāo)記為某類惡意軟件,該樣本就被標(biāo)記為對應(yīng)的惡意軟件類別,如式(5)所示
(5)
其中,mali表示第i類惡意,max(.) 表示統(tǒng)計數(shù)量最多的類別。
實驗中,所用的計算機操作系統(tǒng)為Windows 10,CPU配置為Intel Xeon E5-2620 v4 @ 2.10 GHz,GPU是NVIDIA GeForce GTX 1080 Ti,開發(fā)環(huán)境為Python3.6。
模型的損失函數(shù)使用交叉熵損失函數(shù),學(xué)習(xí)率設(shè)置為0.0001,優(yōu)化器使用SGD,會話流量選取前784個字節(jié)。
實驗采用CICAndMal2017[16]數(shù)據(jù)集。考慮到惡意軟件,抓取了應(yīng)用安裝后的1 min~3 min、設(shè)備重啟前15 min以及重啟后15 min這3個階段的網(wǎng)絡(luò)流量。最終完整地捕獲到1700個良性應(yīng)用和426個惡意應(yīng)用的網(wǎng)絡(luò)流量。其中,惡意軟件包括廣告軟件、勒索軟件、恐嚇軟件和短信惡意軟件4類。在通信過程中,考慮安卓應(yīng)用軟件的數(shù)據(jù)傳輸和指令收發(fā)等行為都是以會話為單元進行的,而惡意軟件產(chǎn)生的通信會話通常都隱含其惡意性。因此,在數(shù)據(jù)處理時,將應(yīng)用軟件的標(biāo)簽視作其對應(yīng)的流量圖的標(biāo)簽。


表1 二分類數(shù)據(jù)集樣本數(shù)量分布

表2 五分類數(shù)據(jù)集樣本數(shù)量分布
實驗采用的評價指標(biāo)如下:
準(zhǔn)確率(accuracy,ACC):被正確識別出來的惡意軟件和良性軟件個數(shù)在樣本總數(shù)中的占比
(6)
良性檢測率(true positive rate,TPR):被正確識別出來的良性軟件個數(shù)在所有良性軟件個數(shù)中的占比
(7)
誤報率(false positive rate,F(xiàn)PR):被錯誤識別為良性的惡意軟件個數(shù)在所有惡意軟件個數(shù)中的占比
(8)
精確率(precision):被識別為良性的軟件中,檢測正確的數(shù)量占比
(9)
F1-Score:Precision和TPR的調(diào)和平均值
(10)
其中,TP是指正確分類為良性的樣本數(shù)量,F(xiàn)P是指被錯誤分類為良性的樣本數(shù)量,TN是指正確分類為惡意的樣本數(shù)量,F(xiàn)N是指被錯誤分類為惡意的樣本數(shù)量。
在該部分,實驗(1)~實驗(3)是流量級檢測和分類實驗,實驗(4)~實驗(6)是軟件級判別實驗和對比實驗。
(1)消融實驗
本實驗為消融實驗,用于驗證對DenseNet52網(wǎng)絡(luò)改進的有效性。實驗將原始DenseNet52網(wǎng)絡(luò)、僅添加5×5卷積分支的網(wǎng)絡(luò)、僅添加SimAM模塊的網(wǎng)絡(luò)以及DenseNet52_IS網(wǎng)絡(luò)進行比較,實驗結(jié)果見表3。在表格中,僅添加了5×5卷積分支的網(wǎng)絡(luò)模型稱為DenseNet52_I,只添加了SimAM模塊的網(wǎng)絡(luò)模型稱為DenseNet52_S。

表3 消融實驗結(jié)果
從表3中可以看出,對流量圖檢測時,與DenseNet52相比,DenseNet52_I和DenseNet_S的ACC、F1-Score和Precision均得到了提高,分別提高了1.49%、1.35%和4.70%,且FPR分別降低了4.85%和5.63%,DenseNet52_S模型的ACC、F1-Score和Precision分別提高了1.14%、0.93%和5.47%,F(xiàn)PR降低了5.63%;兩個模型僅在TPR指標(biāo)上比原網(wǎng)絡(luò)分別低了2.33%和3.95%。
DenseNet52_IS的ACC和F1-Score均優(yōu)于另外3個模型,TPR分別比DenseNet52_I和DenseNet52_S高出1.92%和3.54%,F(xiàn)PR和Precision較DenseNet52相比分別降低4.72%,提高4.66%。
可見,與DenseNet52相比,DenseNet52_I學(xué)習(xí)了來自不同感受野的特征,獲得了更多特征信息,DenseNet52_S對重要特征賦予更高的關(guān)注度。兩部分的結(jié)合進一步提升了網(wǎng)絡(luò)性能。綜合來看,DenseNet52_IS的整體性能優(yōu)于原模型以及部分改進的模型。
(2)二分類對比實驗
為了進一步驗證DenseNet52_IS在二分類上的有效性,本實驗將DenseNet52_IS與DenseNet52、ResNet34、ResNet101、DPN68和Transformer進行了比較,二分類實驗的結(jié)果如圖4和表4所示。

表4 二分類實驗結(jié)果

圖4 ROC曲線對比
從圖4中的ROC曲線可以看出,DenseNet52_IS的ROC曲線下面積最大,模型的綜合性能最優(yōu)。從表4可以看出,在對流量圖進行二分類時,DenseNet52_IS在ACC、FPR、F1-Score和Precision這4個指標(biāo)上都獲得了最佳值,而TPR僅比最佳值低0.41%,整體效果最佳。分析原因,與其它幾個模型相比,DenseNet52使用到了更多的低層特征,可以有效防止過擬合問題。DenseNet52_IS在此基礎(chǔ)上改進,獲得不同感受野的特征,從空間和通道兩個維度對重要特征進行關(guān)注,進一步提高網(wǎng)絡(luò)的分類精度。
(3)五分類對比實驗
為了驗證DenseNet52_IS模型在五分類上的有效性,本實驗將DenseNet52_IS與DenseNet52、ResNet34、ResNet101、DPN68和Transformer進行了比較,五分類實驗的結(jié)果見表5。

表5 五分類實驗結(jié)果
從表5可以看出,在對流量圖進行五分類時,DenseNet52_IS網(wǎng)絡(luò)的ACC比其它5個模型平均提高3.50%,M-TPR平均提高3.67%,M-FPR平均降低0.85%,均優(yōu)于其它模型。
(4)判別閾值T確定實驗
本實驗用于選取合適的判別閾值T,實現(xiàn)應(yīng)用軟件級別上良惡性分類。對應(yīng)用軟件二分類的實驗結(jié)果見表6,對應(yīng)用軟件五分類的實驗結(jié)果見表7。

表6 不同閾值下的應(yīng)用軟件二分類實驗結(jié)果

表7 不同閾值下的應(yīng)用軟件五分類實驗結(jié)果
從表6中可以看出,對于應(yīng)用軟件二分類,當(dāng)閾值T=0.2時,模型的ACC、F1-Score、Precision和FPR分別為99.05%、99.41%、99.70%和1.18%,均優(yōu)于其它閾值的結(jié)果。盡管T=0.6或0.7時,TPR較T=0.2時高0.59%,但整體性能不再變化,且T=0.2時模型的整體結(jié)果最好。因此,在后續(xù)的應(yīng)用軟件二分類實驗中取T=0.2。
從表7中可以看出,對于應(yīng)用軟件五分類,當(dāng)閾值T=0.5或0.6時,模型的M-TPR和M-FPR均優(yōu)于其它閾值的結(jié)果。雖然當(dāng)T=0.9時ACC較T=0.5時高0.58%,但其M-TPR降低1.79%,M-FPR升高0.16%,整體性能有所下降。綜上所述,當(dāng)閾值T大于0.6后,模型整體性能下降。因此,在后續(xù)的應(yīng)用軟件五分類實驗中取T=0.5。
(5)應(yīng)用軟件良惡性分類
根據(jù)實驗(4)得到的閾值T,采用DenseNet52_IS對應(yīng)用軟件進行良惡性分類,并與DenseNet52、ResNet34、ResNet101、DPN68和Transformer進行比較。二分類實驗結(jié)果見表8。

表8 二分類實驗結(jié)果(應(yīng)用軟件)
從表8可以看出,在進行二分類時,DenseNet52_IS的ACC和F1-Score均高于其它模型,TPR僅比DenseNet52模型低0.29%。雖然ResNet34模型和ResNet101模型的Precision和FPR略高于DenseNet52_IS模型,但其ACC、TPR和F1-Score分別平均較DenseNet52_IS大幅降低24.80%、31.15%和19.16%。因此,與其它幾個模型相比,DenseNet52_IS模型的綜合性能最優(yōu)。
根據(jù)實驗(4)得到的閾值T,對應(yīng)用軟件進行五分類實驗結(jié)果見表9。

表9 五分類實驗結(jié)果(應(yīng)用軟件)
從表9可以看出,在五分類時,DenseNet52_IS比DenseNet52、ResNet34、ResNet101、DPN68、Transfor-mer分別提高2.33%、3.49%、3.49%、5.23%和5.23%,M-TPR分別提高2.42%、2.13%、1.41%、2.12%和2.83%,M-FPR分別降低0.57%、0.91%、0.81%、1.21%和1.20%,均優(yōu)于其余5個模型。因此,DenseNet52_IS網(wǎng)絡(luò)在五分類上的綜合性能最優(yōu)。
(6)與其它文獻所提方法對比
為了進一步驗證本章提出的良惡性應(yīng)用軟件分類方法的有效性,與文獻[10-12]中提出方法進行比較,實驗結(jié)果見表10。

表10 與其它文獻對比結(jié)果
從表10可以看出,本章提出的方法在5個評價指標(biāo)上優(yōu)于文獻[5]和文獻[6],在ACC上比文獻[7]提高0.26%。分析原因,一方面本文所提特征更加全面有效,另一方面改進的DenseNet_IS網(wǎng)絡(luò)中的密集連接、多卷積分支和注意力機制減少了梯度消失問題和對復(fù)雜特征的依賴性,增加了對學(xué)習(xí)到的重要特征的權(quán)重。因此,本章提出的方法性能優(yōu)于這三篇文獻的方法,進一步驗證了本章提出的方法的有效性。
針對Android惡意軟件高精度動態(tài)檢測問題,本文采用應(yīng)用軟件網(wǎng)絡(luò)通信交互階段的流量作為分析對象,并提出一種基于神經(jīng)網(wǎng)絡(luò)DenseNet52改進的檢測模型。該方法將原始流量根據(jù)會話五元組信息進行切分后轉(zhuǎn)換成流量灰度圖,利用基于DenseNet52改進的網(wǎng)絡(luò)對惡意軟件進行檢測和分類。在對DenseNet52模型的改進中,借鑒Inception網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計思想對DenseNet52模型的bottleneck層進行改進,通過添加使用不同大小卷積核的卷積分支以獲取不同感受野的特征;通過添加SimAM注意力模塊,在空間和通道兩個維度引入注意力機制,實現(xiàn)對重要特征的關(guān)注。二分類和多分類實驗結(jié)果表明,本文所提方法能有效地提高Android惡意軟件動態(tài)檢測準(zhǔn)確率。未來可進一步考慮減小模型內(nèi)存、加快模型的訓(xùn)練和檢測速度。