谷勇浩 黃博琪 王繼剛 田 甜 劉 焱 吳月升
1(北京郵電大學計算機學院 北京 100876) 2(智能通信軟件與多媒體北京市重點實驗室(北京郵電大學) 北京 100876) 3(廣東省信息安全技術(shù)重點實驗室(中山大學) 廣州 510275) 4(中興通訊股份有限公司 南京 210012) 5(百度在線網(wǎng)絡技術(shù)(北京)有限公司 北京 100080)
木馬,別稱木馬病毒,英文名為Trojan.它是指隱藏在正常程序中的一段具有特殊功能的惡意代碼,是具備破壞和刪除文件、發(fā)送密碼、記錄鍵盤和發(fā)起DoS攻擊等特殊功能的后門程序.木馬病毒是計算機黑客用于遠程控制計算機的程序,將控制程序寄生于被控制的計算機系統(tǒng)中,對被感染木馬病毒的計算機實施操作.
國內(nèi)外對木馬病毒檢測方法的研究開展得較早,檢測方法主要包括3種:1)基于程序特征碼的檢測方法;2)基于主機行為特征的檢測方法;3)基于網(wǎng)絡行為特征的檢測方法.前2種檢測方法在木馬病毒種類增多和變異較快的特點下性能下降明顯;第3種方法因硬件捕獲流量能力的提升,可以實時地識別未知流量,彌補了前2種方法的缺陷,已成為學術(shù)界的研究熱點.
基于網(wǎng)絡行為的木馬檢測方法的有效性主要取決于特征的提取和分類算法.傳統(tǒng)機器學習方法依靠人工設計的特征,如基于網(wǎng)絡協(xié)議的特征、基于進程、api等統(tǒng)計特征,以及支持向量機、決策樹、k-means聚類和決策樹等分類算法,取得了較好的檢測效果.但依然存在特征設計不夠準確、識別未知樣本能力不足的問題.
近年來得益于人工智能領域的發(fā)展,深度學習迅速在圖像識別、自然語言處理等領域取得成功[1-2].傳統(tǒng)機器學習相對于深度學習而言都為淺層結(jié)構(gòu)算法,這些算法在解決簡單分類問題時足夠優(yōu)秀,但在擬合非線性函數(shù)時其泛化能力會下降.而深度學習方法是利用多層神經(jīng)網(wǎng)絡結(jié)構(gòu),對樣本進行表征學習,可以很好地彌補這些算法在特征選擇和未知樣本分類的不足.
為了解決現(xiàn)有木馬流量檢測方法中人工提取特征不夠準確、大量標記樣本難以獲取、無標記樣本沒有充分利用、模型對于未知樣本識別率較低以及半監(jiān)督深度學習模型mean teacher中隨機噪聲引起的泛化能力不足等問題,本文采用對抗訓練來改進半監(jiān)督深度學習的方法,將虛擬對抗訓練和mean teacher模型相結(jié)合,主要貢獻包括2個方面 :
1) 引入半監(jiān)督深度學習模型mean teacher,充分利用未標記數(shù)據(jù)來改善模型檢測性能.在USTC-TFC 2016數(shù)據(jù)集中,模型僅需要10%的標記數(shù)據(jù)就能在二分類、多分類以及未知樣本分類任務中達到98%的準確率.同時,隨著標記樣本數(shù)量的減少,半監(jiān)督深度學習模型檢測性能的下降程度明顯小于有監(jiān)督模型.
2) 將虛擬對抗訓練與mean teacher模型相結(jié)合,提出虛擬對抗mean teacher模型(virtual adver-sarial mean teacher, VMT),改進mean teacher模型中的隨機噪聲,進一步提升模型泛化性能.相比mean teacher模型,VMT模型在各對比實驗中具有更好的檢測效果,在多分類任務中提升明顯.
1) 基于程序特征碼的檢測方法
該類方法是最早用于惡意軟件的檢測,所謂程序特征碼是從木馬病毒文件不同位置提取的字節(jié)序列,通過特征碼匹配識別木馬病毒.這類方法能夠準確檢測已知的惡意軟件,但是它依賴專家經(jīng)驗,需要花費大量的人力和物力不斷更新特征庫.同時,該類方法無法檢測新型惡意軟件,尤其是采用混淆和變形技術(shù)的惡意軟件.文獻[3]在此基礎上,將樣本的二進制特征碼轉(zhuǎn)換為灰度圖,再使用基于K-均值和多樣性選擇的集成學習分類方法進行分類.
2) 基于主機行為特征的檢測方法
該類方法需要監(jiān)視程序在主機上的動態(tài)行為,判斷該程序是否為木馬.監(jiān)視內(nèi)容主要包括:進程派生和執(zhí)行情況、系統(tǒng)文件的讀寫情況、注冊表項的操作情況、特定API的調(diào)用情況、非法驅(qū)動程序加載情況、Socket外連情況等.該類方法主要缺點包括:①對未知惡意軟件的檢測,存在誤報的可能;②需要實時監(jiān)控主機行為,系統(tǒng)資源的開銷大,會影響主機的正常工作.文獻[4]通過訓練一個基于主機行為特征的SVM分類器,解決第一類方法存在的特征碼提取錯誤和提取滯后等問題.同時,采用交叉驗證方法提高60種惡意軟件家族的檢測準確率.
3) 基于網(wǎng)絡行為特征的檢測方法
該類方法分為基于網(wǎng)絡通信負載特征匹配方法和基于通信行為的木馬檢測方法.
基于網(wǎng)絡通信負載特征匹配方法采用深度包檢測技術(shù),截獲網(wǎng)絡通信負載信息并且提取特征,建立惡意流量行為特征庫,當待測流量的特征與特征庫中的特征匹配成功時,觸發(fā)流量異常報警.文獻[5]分別利用IP包頭信息和DPI技術(shù)提取pcap包負載特征,進行網(wǎng)絡惡意軟件的分類.文獻[6]提取HTTP數(shù)據(jù)包負載中的URL等信息后計算URL的可疑度,可以對木馬流量進行有效檢測.
基于通信行為的木馬檢測方法不是通過截取流量負載中的特征進行分析,而是通過分析木馬流量通信行為進行識別.這類方法的有效性取決于提取的通信行為特征,對專家經(jīng)驗有著較高的要求.通過人工提取特征,再利用機器學習模型實現(xiàn)對木馬流量的識別.人工提取特征雖然有一定效果,但是對未知惡意流量檢測能力有限,存在誤報或漏報.文獻[7]通過提取早期階段的木馬流量通信行為特征,識別遠程訪問特洛伊木馬.文獻[8]從傳輸層和網(wǎng)絡層提取6個特征,這些特征與具體應用層協(xié)議無關(guān),不受流量加密技術(shù)的影響;同時,該方法不需要木馬結(jié)構(gòu)及其通信協(xié)議等先驗知識也能進行檢測.文獻[9]通過跨協(xié)議和跨層提取的972個行為特征,采用有監(jiān)督分類方法對網(wǎng)絡流量分類,實現(xiàn)惡意軟件檢測.特征的選擇來源于事務、會話、流和時間窗口等不同粒度的流量數(shù)據(jù),通過特征選擇方法選出有效特征,提高檢測準確率.文獻[10]比較了4種機器學習算法(隨機森林、序列最小優(yōu)化、多層感知器和Logistic回歸模型)的性能,尋找最佳超參數(shù)和特征集選擇來優(yōu)化分類器.隨機森林分類器通過查看網(wǎng)絡包標識符,如包長度、包和標志計數(shù)以及到達間隔時間,識別出與TrickBot相關(guān)的流,準確率達到99%.文獻[11]提出一種面向HTTPS隱蔽隧道的加密流量檢測方法,并將木馬通信劃分為元數(shù)據(jù)交互階段與加密應用數(shù)據(jù)交互階段,提出基于時間序列模式的木馬流量檢測方法,從測試結(jié)果看,該方法能夠有效檢測出使用HTTPS 隧道傳輸數(shù)據(jù)的加密木馬.
本文所提方法是基于網(wǎng)絡行為的檢測方法,但基于網(wǎng)絡行為的檢測方法的有效性取決于人工提取的特征,而受到木馬變異速度的加快,特征越來越難以設計,這就需要深度學習中的表征學習進行特征的提取.
分類模型的好壞很大程度上取決于選取的特征,即從原始流量中提取能區(qū)分該流量是否是木馬流量的屬性特征,如分析木馬流量負載中的特征碼和不同階段中木馬流量通信行為特征等.這些特征的提出都依賴專家經(jīng)驗,而專家經(jīng)驗的準確與否直接影響分類效果.本文使用原始流量可以很好地利用深度學習進行特征提取,從而代替人工提取特征,這就是表征學習.表征學習按照表征方法的不同,可以分為表征為圖像、表征為時間序列數(shù)據(jù)和表征為拓撲圖.
1) 表征為圖像
表征學習又稱表示學習,是利用某種方法獲取每個樣本的向量化表達,以便構(gòu)建分類器模型,避免手動提取特征的繁瑣,典型方法是表征為圖像,也是最早用于惡意流量分類的表征方法.文獻[12]提出一種基于卷積神經(jīng)網(wǎng)絡的惡意軟件流量分類方法.該方法不需要手工設計特征,直接將原始流量轉(zhuǎn)化為圖像作為分類器的輸入數(shù)據(jù).文獻[13]先訓練遞歸神經(jīng)網(wǎng)絡提取進程行為特征,然后訓練卷積神經(jīng)網(wǎng)絡將所提特征轉(zhuǎn)化為特征圖像后進行惡意軟件分類.文獻[14]通過將流量表征為圖像,利用集成森林交替生成類向量和特征向量,對惡意軟件進行分類,提出一種混合分層感知方法.該方法具有自動設置參數(shù)的自適應特性,因此對小尺度和大尺度數(shù)據(jù)都能很好地工作,具有較好的計算效率.
2) 表征為時間序列數(shù)據(jù)
從數(shù)據(jù)的時序關(guān)系來看,惡意軟件通信行為數(shù)據(jù)類似于自然語言中的單詞,都是按照順序獲取,惡意軟件通信流量數(shù)據(jù)間的潛在語義關(guān)系類似于句子的先后關(guān)系.同時,不同目的地和不同通信內(nèi)容的惡意軟件產(chǎn)生的流量可能具有相同功能,這和不同單詞組成不同句子可能具有相同語義類似.文獻[15]利用惡意軟件通信行為變化和具有相同潛在語義特征的特點,挖掘惡意軟件通信動態(tài)行為與自然語言句子間的相似性,使用遞歸神經(jīng)網(wǎng)絡模型進行分類,預測未知惡意軟件.文獻[16]提出了一種基于時空分層特征的神經(jīng)網(wǎng)絡檢測模型——HSTF模型,采用CNN和LSTM相結(jié)合的方式,輸入數(shù)據(jù)包括原始圖像數(shù)據(jù)、包級特征和流級特征,提高模型的自學習能力,檢測基于HTTP的木馬,準確率達到99.4%.
3) 表征為拓撲圖
圖表示學習,也稱為圖嵌入,它是將高維度的圖信息降到低維空間,同時最大化保留圖原本的結(jié)構(gòu)信息,圖表示學習常用于節(jié)點分類和鏈路預測等任務.圖中節(jié)點的相似性可以通過學習拓撲圖中節(jié)點間的結(jié)構(gòu)一致性進行表征,struc2vec表征學習方法使用層次結(jié)構(gòu)來度量拓撲圖中節(jié)點的相似性,通過構(gòu)建一個多層圖對結(jié)構(gòu)相似性進行編碼,然后生成節(jié)點間的結(jié)構(gòu)上下文語義.文獻[17]利用深度學習模型和圖嵌入方法實現(xiàn)惡意軟件檢測,采用的深度學習框架包括2個疊加去噪自編碼器,其中一個去噪自編碼器與node2vec技術(shù)結(jié)合用于學習程序函數(shù)調(diào)用圖的潛在表示,另一個用于學習程序的Windows API調(diào)用關(guān)系的潛在表示.
為了更好地保留流量的原始特征信息,發(fā)揮深度學習模型的表征學習能力,本文擬采用表征為圖像的方法.
木馬流量檢測系統(tǒng)主要包括數(shù)據(jù)準備、數(shù)據(jù)預處理、模型訓練,以及檢測和結(jié)果輸出等四大功能模塊,如圖1所示.其中,準備輸入的數(shù)據(jù)是實時網(wǎng)絡流量或靜態(tài)pcap文件,數(shù)據(jù)預處理的詳細流程在第3節(jié)描述,訓練數(shù)據(jù)經(jīng)過數(shù)據(jù)過濾和格式化用于模型訓練,待測數(shù)據(jù)經(jīng)過數(shù)據(jù)過濾后輸入模型進行檢測和結(jié)果輸出.本文采用半監(jiān)督深度學習模型進行訓練,相應模型分別在2.2節(jié)和2.3節(jié)詳細說明.
Fig. 1 Trojan traffic detection system architecture圖1 木馬流量檢測系統(tǒng)架構(gòu)圖
Fig. 2 Temporal ensembling model training steps圖2 Temporal ensembling模型訓練步驟
半監(jiān)督深度學習方法先用有標記數(shù)據(jù)訓練網(wǎng)絡,通過隱藏層提取特征,用這些特征訓練的分類算法對未標記數(shù)據(jù)進行分類,將分類結(jié)果作為未標記樣本的偽標簽,經(jīng)過多次訓練,網(wǎng)絡對未標記樣本的預測趨于正確,達到提升模型性能的目的.
mean teacher模型[19]解決temporal ensembling模型更新較慢的問題,即無標簽數(shù)據(jù)的信息只能在下一個epoch 時才能更新到模型中.該模型既充當學生,又充當老師.作為老師,用來產(chǎn)生學生模型學習時的目標;作為學生,利用教師模型產(chǎn)生的目標進行學習.同時,教師模型的參數(shù)是由上一次(step)學生模型的參數(shù)經(jīng)過EMA得到.教師網(wǎng)絡權(quán)重參數(shù)計算公式為
(1)
如圖3所示,mean teacher模型中的連續(xù)損失函數(shù)Lm定義為教師網(wǎng)絡預測值(權(quán)重μ*和噪聲γ′)與學生網(wǎng)絡預測值(權(quán)重μ和噪聲γ)間的均方誤差,再加上學生網(wǎng)絡對有標記樣本xl的交叉熵分類損失:
(2)
其中,f′為教師網(wǎng)絡輸出預測值,f為學生網(wǎng)絡輸出預測值,x為輸入樣本,M為類別總數(shù),c為類別編號,yxlc為樣本xl是否屬于c類的指示變量(1表示屬于,0表示不屬于),pxlc為樣本xl屬于c類的預測概率.其中,μ與μ*由式(1)所得.
Fig. 3 Trojan traffic detection model based on mean teacher圖3 基于mean teacher的木馬流量檢測模型
mean teacher模型中教師網(wǎng)絡和學生網(wǎng)絡的結(jié)構(gòu)與文獻[12]使用的CNN模型一致,都采用手寫網(wǎng)絡lenet-5的結(jié)構(gòu),如圖4所示:
Fig. 4 Network structure of teacher and student圖4 教師和學生的網(wǎng)絡結(jié)構(gòu)圖
mean teacher模型的訓練過程如算法1所示.
算法1.mean teacher模型訓練.
輸入:x為輸入樣本,xlab為有標簽樣本,xt為第t批的輸入樣本;
α為超參數(shù);
γ為隨機噪聲生成函數(shù);
epochs為訓練步數(shù),取值6 000;
batch為一批訓練數(shù),取值50.
輸出:網(wǎng)絡參數(shù)為μ*的教師網(wǎng)絡.
① foriin [1,epochs] do
② fortin [1,batch] do
③f=fμt(γ(xt));
/*學生網(wǎng)絡預測值f*/
/*教師網(wǎng)絡預測值f′*/
ln(pxlabc));/*描述見式(2)*/
⑧ end for
⑨ end for
⑩ outputμ*./*最終訓練得到的網(wǎng)絡參數(shù)*/
1) 虛擬對抗訓練
由于未標記樣本的存在,隨機噪聲的數(shù)據(jù)增強方式不利于半監(jiān)督學習.為了克服隨機噪聲產(chǎn)生類似對抗樣本攻擊對模型性能的影響,Goodfellow等人提出對抗訓練Adversarial Training[20]方法,即在模型訓練過程中的訓練集包括原始樣本和對抗樣本,對抗樣本生成方法取名為fast gradient sign method(FGSM).該方法利用模型參數(shù)、輸入樣本以及樣本標簽生成噪聲radv,損失函數(shù)Ladv定義為
Ladv=D[q(y|xlab),p(y|xlab+radv,θ)],
(3)
(4)
其中,D[p,q]為計算分布p和q之間距離的函數(shù)(如交叉熵函數(shù)),p為模型的預測分布函數(shù),q為實際的分布函數(shù).y為標簽,xlab為標記樣本,r為擾動,θ為模型參數(shù),ε為控制擾動大小的超參數(shù).radv可以近似為
radv≈εsgn(g),
(5)
其中,g為模型梯度下降值:
(6)
對抗訓練在有監(jiān)督學習模型的泛化能力已經(jīng)得到證明,但式(3)和(4)不適用于半監(jiān)督學習.為解決該問題,Takeru等人提出虛擬對抗訓練(virtual adversarial training, VAT)方法[21].Goodfellow提出對抗訓練方法,對抗訓練尋找的輸入樣本擾動方向是使模型對輸入樣本的預測結(jié)果最大程度地偏離該樣本正確標簽的方向,只適用于有標記樣本的訓練;VAT尋找的擾動方向是使無標記樣本預測的輸出分布偏離模型預測虛擬標簽(virtual label)的方向,可以適用于無標記樣本.因此,VAT可以同時計算有標記樣本和無標記樣本的擾動.VAT算法損失函數(shù)定義為
Lvadv=D[q(y|x*),p(y|x*+rvadv,θ)],
(7)
(8)
LDS(x*,θ)D[q(y|xlab),p(y|xlab+radv,θ)]+
(9)
(10)
其中,rvadv可以近似為
(11)
(12)
2) 虛擬對抗mean teacher模型
為了提升mean teacher模型的泛化能力,本文將虛擬對抗訓練與mean teacher模型相結(jié)合,提出虛擬對抗mean teacher模型,如圖5所示.對抗噪聲一方面能使模型抵御對抗樣本攻擊,另一方面添加的擾動使模型擬合產(chǎn)生的對抗樣本,達到比隨機噪聲更好的正則化效果,提高mean teacher模型的泛化性能.在虛擬對抗mean teacher模型的訓練過程中,對抗噪聲的訓練與mean teacher網(wǎng)絡的訓練同時進行.模型在每個訓練步驟進行梯度下降的同時,要使連續(xù)損失函數(shù)Lm和對抗損失函數(shù)LDS都下降到最小,故虛擬對抗mean teacher模型的損失函數(shù)L為
L=Lm+LDS.
(13)
圖5所示的虛擬對抗mean teacher模型相對于圖3所示的mean teacher模型有3點變化:
① 輸入教師網(wǎng)絡和學生網(wǎng)絡的樣本從添加隨機噪聲變?yōu)樘砑訉乖肼暎?/p>
② 增加對抗損失函數(shù)(式(9)),同時更新對抗噪聲(式(11));
③ 網(wǎng)絡權(quán)重參數(shù)的更新從只依賴于連續(xù)損失函數(shù)(式(2))變?yōu)橥瑫r依賴于連續(xù)損失函數(shù)和對抗損失函數(shù)(式(13)).
虛擬對抗mean teacher模型的訓練過程如算法2所示,模型的3點變化反映在算法2中,分別表現(xiàn)為:
① 算法1輸入中的“γ為隨機噪聲生成函數(shù)”變?yōu)樗惴?輸入中的“r為對抗噪聲生成函數(shù)”;
② 算法1方法體的行⑥變?yōu)樗惴?方法體的行⑥⑦,同時算法2中增加行⑧;
③ 算法1方法體的行⑦變?yōu)樗惴?方法體的行⑨.
Fig. 5 Trojan traffic detection model based on virtual adversarial mean teacher圖5 基于虛擬對抗mean teacher的木馬流量檢測模型
算法2.虛擬對抗mean teacher模型訓練.
輸入:x*為輸入樣本,包含xlab有標簽樣本和xunlab無標簽樣本,x*t為第t批的輸入樣本;
α為超參數(shù);
r為對抗噪聲生成函數(shù);
epochs為訓練步數(shù),取值6 000;
batch為一批訓練數(shù),取值50.
輸出:網(wǎng)絡參數(shù)為μ*的teacher網(wǎng)絡.
① foriin [1,epochs] do
② fortin [1,batch] do
③f=fμt(r(x*t));
/*學生網(wǎng)絡預測值f*/
⑦LDS=D[q(y|xlab),p(y|xlab+radv,
⑧ 分別利用式(5)和式(11)更新radv和rvadv;
⑩ end for
異常流量檢測領域的開源數(shù)據(jù)集多數(shù)是提供每個樣本的特征屬性,這些特征是經(jīng)過人工篩選或統(tǒng)計計算得到,如KDD99和NSL-KDD提供了41個流量特征.本文所提方法不采用人工提取的特征,而是使用原始流量信息,但是木馬流量分類中可用原始流量的開源數(shù)據(jù)集較少,本文使用USTC-TFC 2016[12]數(shù)據(jù)集作為輸入.該數(shù)據(jù)集的文件格式為pcap,大小為3.71 GB,數(shù)據(jù)集中流量采集服務器的ip和mac已用隨機地址代替.
USTC-TFC 2016數(shù)據(jù)集包含惡意流量與正常流量2部分.惡意流量數(shù)據(jù)集包含Nsis,Virut,Neris,Tinba,Hitbot,Cridex,Geodo,Zeus,Miuref和Shifu等10種流量.該流量由CTU大學研究人員于2011—2015年從真實環(huán)境采集.正常流量數(shù)據(jù)集包含SMB,Facetime,MySQL,World Of Warcraft,Gmail,BitTorrent,FTP,Weibo,Outlook和Skype等10種流量.該流量使用IXIA公司專業(yè)仿真設備IXIABPS進行采集.按照文獻[12]對流量的處理方法,本文將原始流量pcap包,經(jīng)過流量切分和流量清理后得到的數(shù)據(jù)流個數(shù)為417 383,各類型數(shù)據(jù)流數(shù)目如表1所示,惡意流量和正常流量中數(shù)據(jù)流個數(shù)比例約為3∶4.
Table 1 Number of Different Data Flows in USTC-TFC 2016表1 USTC-TFC 2016中各類型數(shù)據(jù)流數(shù)目
本文將對比半監(jiān)督深度學習mean teacher模型(以下稱MT)、虛擬對抗mean teacher模型(以下稱VMT)、CNN模型[12]、HSTF模型[16]、機器學習模型(決策樹(DT)、隨機森林(RF)[10]、梯度下降決策樹(GBDT)),下面詳細描述各模型流量預處理過程.
1) mean teacher和CNN模型預處理
深度學習模型設計之初是為了識別和分類圖像,要將其用于木馬流量檢測需要把木馬流量表征為圖像.圖6是流量預處理流程,具體有6個步驟.
Fig. 6 Flow preprocessing圖6 流量預處理流程
步驟1. 流量切分.按照一定的粒度將原始流量切分為多個離散單元,切分規(guī)則是按照會話或流的方式對數(shù)據(jù)進行切分,輸入和輸出數(shù)據(jù)的格式都是pcap.同一個pcap文件存儲同一會話(源ip、源端口、目的ip、目的端口、傳輸協(xié)議等)的所有內(nèi)容.
步驟2. 流量清理.刪除步驟1中應用層信息為空的會話,消除冗余會話(完全相同的會話保留一份).
步驟3. 統(tǒng)一長度.深度學習模型的輸入向量需要統(tǒng)一長度,本文選擇統(tǒng)一為784個字節(jié).小于784個字節(jié)的輸入在后面補充0x00直到784個字節(jié),大于784個字節(jié)則截取前784個字節(jié) .選取前784個字節(jié)主要考慮3方面因素:1)木馬流量檢測選取的特征一般來自連接建立階段,更能體現(xiàn)流量的行為特點,而后續(xù)數(shù)據(jù)傳輸階段因長度過長難以反映類型特征[12].2)90%選取原則.實驗發(fā)現(xiàn)USTC-TFC 2016數(shù)據(jù)集經(jīng)過前2步驟處理后,90%的流量會話都小于784個字節(jié),僅有少部分會話超過784個字節(jié),考慮到數(shù)據(jù)實時處理需求和檢測效果的平衡,選取長度應大于80%~90%的會話大小.3)借鑒了經(jīng)典圖像識別網(wǎng)絡lenet-5的輸入向量大小(28×28),由于該網(wǎng)絡結(jié)構(gòu)存在2個2×2大小的池化層,需要保證輸入向量可以被4整除為7×7的大小.
步驟4. 打上標簽.按照前面3個步驟將數(shù)據(jù)集切分得到樣本集,后續(xù)實驗為滿足半監(jiān)督訓練的要求,按比例對樣本打標簽,實驗1中分別標注為10%,5%,1%,0.1%,實驗2為100%標注,實驗3為10%標注.
步驟5. 數(shù)據(jù)選擇.3.4節(jié)實驗2需要從10種木馬流量中選出一種作為未知木馬,其他實驗無需該步驟.
步驟6. mat文件生成.將圖像轉(zhuǎn)換為MAT格式的文件輸入模型,主要作用是將大量樣本壓縮存儲,并輸入到深度學習模型中訓練.
2) 機器學習模型預處理
對比的機器學習模型包括DT,RF和GBDT,這些模型需要從數(shù)據(jù)集中提取特征進行訓練,預處理流程有3步:
① 同mean teacher和CNN模型預處理的步驟1和步驟2.
② 提取包含數(shù)據(jù)包總數(shù)、流持續(xù)時間在內(nèi)的35維流級特征[9-10, 22],如表2所示:
Table 2 Flow Level Features表2 流級特征表
續(xù)表2
③ 將其存儲為csv格式的文件.
3) HSTF模型預處理
HSTF模型[16]采用了CNN和LSTM深度學習融合模型,輸入數(shù)據(jù)包括原始圖像數(shù)據(jù)、包級特征和流級特征.各類輸入數(shù)據(jù)預處理流程有3步:
① 原始圖像數(shù)據(jù).同mean teacher和CNN模型預處理的步驟1~3,將其存儲為npy格式文件.
② 包級特征.首先,同mean teacher和CNN模型預處理的步驟1和步驟2;其次,為了統(tǒng)一輸入到LSTM模型中的向量長度,根據(jù)原始圖像數(shù)據(jù)特征提取時提出的90%選取原則(統(tǒng)一為784字節(jié)),對應地選擇同一流中的前6個數(shù)據(jù)包進行包級特征提取,不足6個數(shù)據(jù)包的特征全部置0,提取的12維包級特征如表3所示,將其存儲為npy格式的文件.
Table 3 Package Level Features表3 包級特征表
③ 流級特征.同機器學習模型預處理流程,特征如表2所示.
實驗使用的評價指標包括:
(14)
(15)
(16)
(17)
其中,準確率Accuracy是被分類器正確分類的樣本所占的百分比,反映分類器對各類樣本的正確識別情況;精確率Precision是標記為正類的樣本實際為正類所占百分比;召回率Recall是正樣本(木馬樣本)標記為正的百分比.TP表示正確分類的正類樣本數(shù),TN表示正確分類的其他類樣本數(shù),F(xiàn)P表示錯誤分類的正類樣本數(shù),F(xiàn)N表示錯誤分類的其他類樣本數(shù).
本節(jié)設計了3組實驗來驗證RF,DT,GBDT,HSTF,CNN,MT,VMT這7種模型的對比效果,包括少標記樣本下的二分類實驗(實驗1)、未知樣本檢測的實驗(實驗2)和少標記樣本下的多分類實驗(實驗3).
實驗1.7種模型在少標記樣本下(10%,5%,1%,0.1%標記樣本)的二分類(木馬流量、正常流量)效果對比.其中MT和VMT模型的神經(jīng)網(wǎng)絡結(jié)構(gòu)與CNN模型一致,網(wǎng)絡參數(shù)一致,實驗結(jié)果如圖7所示.
實驗2.7種模型對未知樣本檢測能力的對比,即從10類樣本中選取9類作為訓練集,另一類作為測試集,重復10次,參與訓練的樣本全部是標記樣本,測試模型對未知木馬流量的檢測能力.該實驗的目的是驗證所提半監(jiān)督深度學習模型(MT和VMT)在檢測未知樣本下分類效果是否比有監(jiān)督學習好,解決有監(jiān)督學習模型對于未知樣本檢測能力不足的問題,實驗結(jié)果如圖8所示.
Fig. 7 Binary classification results under different proportions of labeled samples圖7 不同標記樣本占比下的二分類結(jié)果圖
Fig. 8 Classification accuracy rate of unknown samples圖8 未知樣本的分類準確率對比圖
實驗3.7種模型在少標記樣本下的多分類效果對比,驗證不同模型在少標記樣本下對不同種類或家族木馬流量的識別能力.分別設置10類木馬流量以及包含所有類的全集木馬流量(All,將每類樣本的準確率按照樣本量加權(quán)平均獲得),標記樣本占比為10%.多分類任務本身比二分類任務更難,尤其是在少標記樣本下,更能反映模型的分類檢測能力.除了模型輸出的分類數(shù)不同,本實驗深度學習模型的網(wǎng)絡結(jié)構(gòu)和參數(shù)與實驗1的一致,實驗結(jié)果如圖9所示.
Fig. 9 Comparison of accuracy rate for multi-class classification with few labeled samples圖9 少標記樣本多分類準確率對比圖
由圖7可知,在10%標記樣本下,半監(jiān)督和有監(jiān)督學習除CNN外,各指標都達到0.99以上的水平,說明該數(shù)據(jù)集二分類難度并不大,靠10%的標記數(shù)據(jù)集,大部分模型可以準確識別惡意流量.隨著標記樣本量的減少和未標記樣本占比的上升,半監(jiān)督深度學習模型逐漸顯示出更好的分類效果.當標記樣本占比下降到1%時,除HSTF模型依然保持0.99的水平外其他模型指標都有下降,但半監(jiān)督深度學習模型整體效果要優(yōu)于其他有監(jiān)督模型.當標記樣本占比下降到0.1%時,有監(jiān)督模型指標出現(xiàn)明顯下降(F1降到0.8至0.9區(qū)間),而半監(jiān)督深度學習模型依然保持在0.95以上.該實驗說明:1)HSTF模型采用了豐富的特征集,使其在1%標記樣本下仍有較好的二分類效果;2)標記樣本占比逐漸減少對半監(jiān)督深度學習模型造成的影響相對較小,尤其是標記樣本占比下降到0.1%時,半監(jiān)督深度學習模型(MT和VMT)優(yōu)勢更加明顯.
由圖8可知,半監(jiān)督深度學習和有監(jiān)督學習模型都具有一定的未知樣本識別能力.半監(jiān)督深度學習(MT和VMT)模型在10類未知樣本識別準確率上達到0.99,HSTF和RF模型在9類未知樣本(除Nsis)識別準確率上達到0.99,GBDT模型在8類未知樣本(除Nsis,Hitbot)識別準確率上達到0.99,DT模型在7類未知樣本(除Nsis,Hitbot,Neris)識別準確率上達到0.99,CNN模型在6類未知樣本(除Nsis,Hitbot,Neris,Tinba)識別準確率上達到0.99.總體上看,半監(jiān)督深度學習模型有較好的未知樣本識別能力.
由圖9可知,在標記樣本占比為10%的條件下,半監(jiān)督和有監(jiān)督學習的多分類指標相比二分類稍有下降,表明多分類任務要比二分類任務更難.圖9中,半監(jiān)督深度學習模型對所有10個類別識別準確率均在0.96以上,其中VMT模型準確率在0.98以上,優(yōu)于MT模型.HSTF模型對7個類別(除Neris,Nsis,Virut)識別準確率在0.96以上,CNN模型對7個類別(除Hitbot,Miuref,Neris)識別準確率在0.96以上,RF,GBDT,DT模型對6個類別(除Hitbot,Neris,Nsis,Virut)識別準確率在0.96以上.該實驗說明:1)半監(jiān)督深度學習模型在多分類任務上的識別準確率明顯優(yōu)于有監(jiān)督學習模型;2)在多分類檢測任務中,VMT模型比MT模型表現(xiàn)出更強的泛化性.
此外,綜合圖7和圖9可知,在標記樣本占比繼續(xù)減少,尤其是標記樣本占比降低到0.1%時,半監(jiān)督深度學習模型在多分類任務中識別準確率的優(yōu)勢將更加明顯.
除了檢測性能外,本文還考慮模型的時間復雜度,包括流量預處理時間、模型訓練時間和模型檢測時間.實驗中各模型的檢測時間都很短暫,差別非常小,主要耗時是在流量預處理和模型訓練階段.
1) 流量預處理時間
流量預處理流程見3.2節(jié),下面分別介紹各模型的預處理時間.
① CNN,MT和VMT模型.3個模型預處理流程相同,對于輸入的原始流量,流量切分和統(tǒng)一長度可在一次流量遍歷中完成,完整的遍歷時間為Tf,而處理過程中大于784字節(jié)的會話流量不再處理,因此實際遍歷時間Ts TCNN=TMT=TVMT=Ts+Tc. (18) ② DT,RF和GBDT模型.3個模型預處理流程相同,對于輸入的原始流量F,為了提取表2的流級特征,需要完整遍歷一次流量,時間為Tf,因此DT,RF和GBDT的預處理時間為 TDT=TRF=TGBDT=Tf+Tc. (19) ③ HSTF模型.該模型預處理流程包含圖像特征、流級特征和包級特征,圖像特征與CNN相同,流級特征與DT相同,包級特征提取需要遍歷前6個數(shù)據(jù)包,時間為Tp,因此HSTF的預處理時間為 THSTF=Tf+Ts+Tp+Tc. (20) 由式(18)~(20)可知,對于同樣大小的輸入流量,各模型的預處理時間復雜度大小關(guān)系為 TCNN=TMT=TVMT 可見,MT和VMT模型在流量預處理階段的速度要比傳統(tǒng)機器學習模型DT,RF和GBDT快,而HSTF模型因其復雜的特征提取過程導致其預處理速度最慢. 2) 模型訓練時間復雜度 ① CNN模型.該模型時間復雜度來自卷積層(convolution layer, CL)和全連接層(fully connected layer, FCL)的計算,卷積層的計算時間TCL取決于輸入樣本量和卷積核大?。?/p> (21) 其中,DCL為卷積層的層數(shù),l為本層,M為特征圖的大小,K為卷積核大小,Cl-1為上層輸入的大小,Cl為本層輸出的大小.對于全連接層,層間的神經(jīng)元互相連接,是每層神經(jīng)元狀態(tài)維數(shù)的乘積,全連接層的計算時間TFCL為 (22) 其中,DFCL為全連接層的層數(shù),l為本層,Sl為本層的神經(jīng)元數(shù)量.因此CNN的復雜度TCNN=TCL+TFCL. ② MT和VMT模型.2個模型中的學生網(wǎng)絡和教師網(wǎng)絡在訓練中為滑動平均關(guān)系,實際進行卷積計算的為學生網(wǎng)絡,而損失函數(shù)只定義了參數(shù)的更新方向,使用的都為梯度下降,所以MT和VMT的時間復雜度相同,比CNN多計算了一次梯度下降(時間復雜度記為g),MT和VMT的時間復雜度為TMT=TVMT=TCL+TFCL+g. ③ HSTF模型.該模型除了卷積層和全連接層外,還需要LSTM層的計算.LSTM時間主要由輸入序列的長度決定,其復雜度為TLSTM~O(N×CLSTM×L),其中N是樣本量大小,CLSTM是單元狀態(tài)維數(shù),L是序列長度.因此,HSTF模型的時間復雜度為THSTF=TCL+TFCL+TLSTM. ④ DT,RF和GBDT模型.DT的訓練時間復雜度是O(N×M×D),其中N是訓練樣本量,M是特征數(shù)量,D是樹的深度;RF的訓練時間復雜度是O(N×m×D×d),其中m是每輪采樣特征數(shù)量,d是產(chǎn)生子樹的個數(shù);GBDT的訓練時間復雜度是O(N×M×D×d). 各模型的訓練時間復雜度大小關(guān)系為TDT 綜上所述,在各模型檢測時間差距很小的情況下,影響各模型檢測實時性的主要因素為流量預處理時間.本文所提半監(jiān)督深度學習模型的流量預處理速度最快,因此本文所提模型(MT和VMT)可采用離線訓練、在線檢測的方式,實現(xiàn)木馬流量檢測. 實驗中各模型用到的超參數(shù)如表4所示.下面介紹網(wǎng)絡結(jié)構(gòu)和超參數(shù)選擇依據(jù). 1) CNN[12],MT,VMT的網(wǎng)絡結(jié)構(gòu)和超參數(shù)設置 本文所提MT和VMT模型是對基于CNN模型的木馬流量檢測方法的改進,從而提出基于半監(jiān)督深度學習的檢測方法.所以,模型中教師網(wǎng)絡、學生網(wǎng)絡的結(jié)構(gòu)與文獻[12]使用的CNN網(wǎng)絡結(jié)構(gòu)一致,都采用手寫網(wǎng)絡lenet-5的結(jié)構(gòu).同時,訓練步數(shù)、一批訓練樣本數(shù)、學習率3個參數(shù)也相同.另外3個參數(shù)EMA超參數(shù)、噪聲超參數(shù)、擾動超參數(shù)分別參考mean teacher模型[19]和虛擬對抗訓練[21]原始論文. 2) RF等機器學習模型的超參數(shù)設置 對這類模型的超參數(shù)設置,Python sklearn中常用的有GridSearchCV和RandomizedSearchCV兩種策略.其中GridSearchCV是依次嘗試每一組超參數(shù),然后選取分類結(jié)果最好的一組,費時且面臨維度災難問題.本文采用RandomizedSearchCV搜索策略,步驟為:對于搜索范圍是distribution的超參數(shù),根據(jù)給定的distribution隨機采樣;對于搜索范圍是list的超參數(shù),在給定list中等概率采樣.本文預設按照distribution隨機采樣,對采樣所得參數(shù)組進行遍歷后,選取分類結(jié)果最好的一組作為最終超參數(shù). 3) HSTF模型[16]的網(wǎng)絡結(jié)構(gòu)和超參數(shù)設置 本文在復現(xiàn)HSTF模型時,基本按照原論文中的網(wǎng)絡結(jié)構(gòu)和超參數(shù)設置方法,但部分超參數(shù)原論文沒有給出,只能按照經(jīng)驗以及重復多次選擇效果最好的超參數(shù).因此,卷積層神經(jīng)元數(shù)目設置為32,卷積核大小為3×3,步長為2,最大池層池化窗口大小為2×2,步長為1,LSTM層神經(jīng)元數(shù)目為16,在LSTM層后增加丟失概率為0.3的Dropout層避免模型過擬合.模型訓練過程中,使用learningrate=0.000 1的Adam優(yōu)化器作為學習率優(yōu)化算法,根據(jù)損失函數(shù)的收斂程度確定模型epochs=200,batch=128. Table 4 Model Hyper-parameters表4 模型超參數(shù)表 本文主要開展了3方面工作: 1) 將半監(jiān)督深度學習模型mean teacher引入木馬流量檢測領域,充分利用未標記數(shù)據(jù)提高模型檢測性能.在USTC-TFC 2016數(shù)據(jù)集中,模型僅需要10%的標記數(shù)據(jù)就能在二分類、多分類以及未知樣本分類任務中達到0.98的準確率.同時,隨著標記樣本數(shù)量的減少,半監(jiān)督深度學習模型檢測性能的下降程度明顯小于有監(jiān)督模型. 2) 將虛擬對抗訓練與mean teacher模型相結(jié)合,提出虛擬對抗mean teacher模型,用虛擬對抗訓練獲得的對抗噪聲代替mean teacher模型中的隨機噪聲,提高模型泛化能力,達到識別未知樣本的目的. 3) 在各模型檢測時間差距很小的情況下,影響各模型檢測實時性的主要因素為流量預處理時間,本文所提模型可采用離線訓練、在線測試的方式,實現(xiàn)木馬流量檢測. 本文所提模型在少標記樣本下有助于提升木馬流量檢測性能,但仍然存在2方面不足: 1) 雖然與RF,GBDT等傳統(tǒng)機器學習和改進的深度學習模型HSTF相比,本文所提半監(jiān)督深度學習模型預處理時間更短,但是為了滿足實時性檢測的需求,模型預處理速度仍需進一步提高,對于實時網(wǎng)絡流量檢測需要大數(shù)據(jù)平臺的支持. 2) 本文所提模型為半監(jiān)督深度學習模型,為了保證模型的準確率,仍然需要一定數(shù)量和類別的標記樣本. 作者貢獻聲明:谷勇浩和黃博琪負責創(chuàng)新方法的提出和論文的撰寫;王繼剛負責論文的潤色和修改;田甜負責相關(guān)工作的調(diào)研;黃博琪、劉焱和吳月升負責模型的實驗和對比.3.7 模型網(wǎng)絡結(jié)構(gòu)和超參數(shù)選擇
4 總 結(jié)