崔弘,蔣言,郭士串,汪洋
(烽火通信科技股份有限公司,江蘇南京 210019)
隨著大數(shù)據(jù)時(shí)代的到來(lái),在計(jì)算機(jī)網(wǎng)絡(luò)方向的工程應(yīng)用中,很多時(shí)候都需要對(duì)流量所屬應(yīng)用類型進(jìn)行識(shí)別,軟件流量識(shí)別分類是網(wǎng)絡(luò)管理、網(wǎng)絡(luò)安全和流量工程等網(wǎng)絡(luò)研究和應(yīng)用的重要組成部分,也是解決網(wǎng)絡(luò)擁塞、安全監(jiān)管、網(wǎng)絡(luò)異常檢測(cè)等研究的基礎(chǔ)。
在互聯(lián)網(wǎng)流量識(shí)別的歷史中,經(jīng)歷了3個(gè)階段:第一個(gè)階段是通過(guò)端口來(lái)識(shí)別,但是后來(lái)由于動(dòng)態(tài)端口和偽裝端口等技術(shù)的出現(xiàn)導(dǎo)致這個(gè)方法不再適用;第二個(gè)階段是采用深度包檢測(cè)技術(shù),基于應(yīng)用層的流量檢測(cè)和控制技術(shù),當(dāng)IP數(shù)據(jù)包、TCP或UDP數(shù)據(jù)流通過(guò)時(shí),DPI系統(tǒng)通過(guò)深入讀取IP包載荷的內(nèi)容來(lái)對(duì)協(xié)議中的應(yīng)用層信息進(jìn)行分析讀取,進(jìn)而識(shí)別各類型應(yīng)用[1,2];第三個(gè)階段是通過(guò)機(jī)器學(xué)習(xí)的方法識(shí)別流量,通過(guò)統(tǒng)計(jì)一系列流量數(shù)據(jù)的外在特性來(lái)形成特征,例如流的持續(xù)時(shí)間和分組的數(shù)目等外在特征,然后采用機(jī)器學(xué)習(xí)的方法訓(xùn)練模型進(jìn)行流量識(shí)別[3]。本文采用第二類和第三類相結(jié)合的方式,考慮到數(shù)據(jù)外在特征的抽取具有一定的迷惑性,同時(shí)在進(jìn)行純凈數(shù)據(jù)提取時(shí)會(huì)損失大量的外在特性,所以本文首先對(duì)即時(shí)通訊軟件流數(shù)據(jù)提取報(bào)文載荷,利用信息熵對(duì)獲得特征進(jìn)行離散化處理,結(jié)合離散載荷特征與XGBoost的方法進(jìn)行流量數(shù)據(jù)量化與分類訓(xùn)練,該方法具有數(shù)據(jù)處理效率高、適應(yīng)性強(qiáng)、流量分類精度高等優(yōu)點(diǎn)。
本文所使用的數(shù)據(jù)來(lái)源于多個(gè)手機(jī)端即時(shí)通訊軟件聊天流量數(shù)據(jù),其中包括圖片、語(yǔ)音、文字等不同形式數(shù)據(jù)。分別對(duì)每種類別通訊軟件利用Wireshark抓取對(duì)應(yīng)軟件的聊天流量數(shù)據(jù)報(bào)文,由于在Wireshark抓取過(guò)程中無(wú)法避免噪音流量的數(shù)據(jù)的干擾,需要對(duì)抓取的每類報(bào)文數(shù)據(jù)進(jìn)行提純。
為了能充分利用報(bào)文中所有信息,又能準(zhǔn)確提取有價(jià)值數(shù)據(jù)降低數(shù)據(jù)維度,此次提純的方式采用五元組(源IP地址、源端口、目的IP地址、目的端口、傳輸層協(xié)議)識(shí)別的方式進(jìn)行,首先采用五元組對(duì)各流量數(shù)據(jù)進(jìn)行聚類,然后對(duì)于聚類后的數(shù)據(jù),剔除數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層數(shù)據(jù)維度,提取傳輸層有效凈載荷構(gòu)建識(shí)別模型[4~6]。通過(guò)這種方式獲取到的報(bào)文基本只屬于對(duì)應(yīng)的通訊軟件,由此獲得純凈的輸入數(shù)據(jù)。報(bào)文的示意圖如圖1所示。
圖1 報(bào)文示意圖
對(duì)每條報(bào)文去除五元組頭部信息,只保留數(shù)據(jù)部分,為了防止心跳報(bào)文等空?qǐng)?bào)文的影響,同時(shí)避免數(shù)據(jù)字段后續(xù)部分無(wú)用信息的影響,只保留每條報(bào)文前50個(gè)字節(jié)長(zhǎng)度的數(shù)據(jù),同時(shí)舍去小于9個(gè)字節(jié)的報(bào)文數(shù)據(jù),對(duì)于大于9個(gè)字節(jié)不足50個(gè)字節(jié)的數(shù)據(jù)設(shè)置缺失值為0。同時(shí)以每條報(bào)文中每個(gè)字節(jié)為一個(gè)特征維度,將每個(gè)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),對(duì)于每一條報(bào)文數(shù)據(jù),這樣可以得到一個(gè)特征維度為50的輸入向量,每個(gè)特征均為正整數(shù)數(shù)值類型。為避免類別數(shù)量不均衡帶來(lái)不良影響,設(shè)置獲取的每種類別報(bào)文均為10,000條。數(shù)據(jù)準(zhǔn)備過(guò)程示意圖如圖2所示。
圖2 數(shù)據(jù)準(zhǔn)備過(guò)程示意圖
對(duì)所有的原始報(bào)文流數(shù)據(jù),依據(jù)五元組特征對(duì)五元組進(jìn)行聚類,通過(guò)報(bào)文提純的方式對(duì)各五元組提取其中的有效載荷,具體聚類流程如圖3所示。
圖3 五元組聚類示意圖
謝宏和程浩忠等[7~9]人提出當(dāng)訓(xùn)練數(shù)據(jù)的數(shù)量通常不足以使用連續(xù)特征來(lái)獲得準(zhǔn)確的模型時(shí),使用離散特征而不是連續(xù)特征的算法的分類誤差較低。由于網(wǎng)絡(luò)流量中的IP地址、協(xié)議和端口等屬性在分布特征上表現(xiàn)出較強(qiáng)的自相似性和重尾特性,各個(gè)屬性在分布特征上存在明顯的差異[10]。因此將信息熵應(yīng)用于載荷特征離散化,用熵值量化網(wǎng)絡(luò)流量載荷的不同屬性。特征離散化就是在特定屬性的取值范圍內(nèi)設(shè)定若干個(gè)劃分點(diǎn)(即斷點(diǎn)),將該屬性的值域范圍劃分成一些子區(qū)間(離散化區(qū)間),每個(gè)子區(qū)間用一個(gè)符號(hào)或整數(shù)值代替[11]。本文采用信息熵方法對(duì)提取的五元組連續(xù)載荷特征進(jìn)行離散化,分別計(jì)算每條報(bào)文流在這些有效載荷上的熵值。
(1)信息熵離散化原理
上式中、為可調(diào)參數(shù),可用于控制屬性X的離散區(qū)間數(shù)k。本文取,則準(zhǔn)則函數(shù)簡(jiǎn)化為:。
豬偽狂犬病毒,除感染豬外,還可以感染多種家畜和野生動(dòng)物,是一種急性傳染性疾病。豬偽狂犬病發(fā)病沒(méi)有季節(jié)性限制,春夏秋冬四季均可發(fā)生,但以冬春季節(jié)氣溫寒冷、外界應(yīng)激因素多變?cè)斐傻陌l(fā)病率和死亡率最高。患病豬和帶毒豬可以通過(guò)體內(nèi)分泌物、流產(chǎn)物、尿液、乳汁排毒,健康豬接觸這些污染物質(zhì)后,感染該種病毒的幾率極大增加。近年,隨著豬養(yǎng)殖產(chǎn)業(yè)不斷向集約化和規(guī)?;较虬l(fā)展,豬偽狂犬病已經(jīng)成為嚴(yán)重?fù)p害豬養(yǎng)殖產(chǎn)業(yè)健康發(fā)展的主要病毒性疾病。因此,做好該種疾病的防控,具有重大現(xiàn)實(shí)意義。
(2)信息熵方法離散化算法
基于Shannon熵的準(zhǔn)則函數(shù),通訊流量的特征離散化算法步驟為:
步驟一:對(duì)報(bào)文載荷區(qū)間進(jìn)行初始化。依次掃描各個(gè)報(bào)文,使單個(gè)取值的樣本成為一個(gè)區(qū)間,記錄每個(gè)區(qū)間的相關(guān)信息;
步驟二:對(duì)于單個(gè)報(bào)文,掃描所有載荷區(qū)間,按區(qū)間內(nèi)樣本值的大小對(duì)區(qū)間進(jìn)行遞增排序;
步驟三:對(duì)排序后的區(qū)間進(jìn)行掃描,如果兩個(gè)相鄰區(qū)間內(nèi)樣本的分類情況對(duì)應(yīng)相同,將這兩個(gè)區(qū)間合并。每合并一次,區(qū)間數(shù)減1,合并結(jié)束后得到k個(gè)區(qū)間;
由于該算法只針對(duì)單個(gè)載荷特征,而實(shí)際報(bào)文中往往有多個(gè)載荷特征,因此需要按照以上步驟,對(duì)多個(gè)載荷特征分別使用該算法進(jìn)行離散化計(jì)算熵值。
APP識(shí)別模型,本質(zhì)上是一個(gè)多分類的問(wèn)題。對(duì)于多分類問(wèn)題,通常有兩種實(shí)現(xiàn)模式,一是直接進(jìn)行多種類別編碼,二是劃分為多個(gè)二分類問(wèn)題。前者一次訓(xùn)練,耗時(shí)小、預(yù)測(cè)快,但不易于增量擴(kuò)展;后者需要構(gòu)建多個(gè)識(shí)別模型,訓(xùn)練耗時(shí)、預(yù)測(cè)總時(shí)間也長(zhǎng),但易于增量擴(kuò)展。本項(xiàng)目采用第二種方法,即針對(duì)N個(gè)APP中的每個(gè)APP,分別訓(xùn)練N個(gè)二分類模型;測(cè)試時(shí),對(duì)于任意一條(或一批)報(bào)文,同時(shí)丟入N個(gè)二分類模型,最后取N個(gè)模型得分最高者作為輸出。多二分類器的流量識(shí)別模型如圖4所示。
圖4 多二分類器的流量識(shí)別模型
對(duì)通訊軟件各批報(bào)文數(shù)據(jù)分別提取五元組中有效載荷的基礎(chǔ)上,通過(guò)Shannon熵方法對(duì)各個(gè)有效載荷劃分為離散化區(qū)間,并對(duì)離散區(qū)間計(jì)算有效載荷熵值。采用構(gòu)建好的APP分類器分別對(duì)每個(gè)五元組的每個(gè)報(bào)文的五元組載荷特征熵值進(jìn)行識(shí)別,再對(duì)每個(gè)五元組的識(shí)別結(jié)果,依據(jù)得分高低進(jìn)行競(jìng)選投票,最后輸出該五元組的流量歸屬類別,模型構(gòu)建流程示意圖如圖5所示。
圖5 模型構(gòu)建示意圖
本實(shí)驗(yàn)針對(duì)目前市面上常見(jiàn)的10種手機(jī)即時(shí)通訊軟件(QQ、微信、Whatsapp、陌陌、COCO、易信、YY、阿里旺旺、微會(huì)、米聊),分別利用Wireshark抓取對(duì)應(yīng)軟件的聊天流量數(shù)據(jù)報(bào)文。由于在抓取過(guò)程中無(wú)法避免噪音流量的數(shù)據(jù)的干擾,對(duì)每類報(bào)文數(shù)據(jù)進(jìn)行提純,通過(guò)報(bào)文提純的方式對(duì)各五元組提取其中的有效載荷,獲得每種類別的五元組連續(xù)數(shù)據(jù)10,000條。為了描述載荷分布特征差異,提高分類準(zhǔn)確率,對(duì)五元組加載荷連續(xù)特征離散化后,每種類別五元組報(bào)文數(shù)據(jù)均為10,000條,數(shù)據(jù)總量為100,000條。
對(duì)于每種通訊軟件,設(shè)置訓(xùn)練數(shù)據(jù):測(cè)試數(shù)據(jù)=0.7:0.3,因?yàn)橛?xùn)練模型為二分類模型,故針對(duì)每種訓(xùn)練模型,設(shè)置對(duì)應(yīng)訓(xùn)練類別為正例,其余9種數(shù)據(jù)混合為反例,反例中保持9種數(shù)據(jù)數(shù)量相等,且正例數(shù)據(jù)量與反例數(shù)據(jù)量相等。針對(duì)每個(gè)分類模型的訓(xùn)練數(shù)據(jù)量和測(cè)試數(shù)據(jù)量為7,000條和3,000條,其中訓(xùn)練數(shù)據(jù)中3,500條為正例,3,500條為反例,測(cè)試數(shù)據(jù)中1,500條為正例,1,500條為反例。
實(shí)驗(yàn)采用機(jī)器學(xué)習(xí)模型廣泛使用的框架Scikit-learn,具體軟硬件環(huán)境如表1所示。
表1 實(shí)驗(yàn)軟硬件環(huán)境
XGBoost采用樹(shù)模型,Silent采用默認(rèn)值打印運(yùn)行時(shí)輸出信息,有助于模型的調(diào)參,Nthread為XGBoost運(yùn)行時(shí)的線程數(shù),基于實(shí)驗(yàn)室設(shè)備,在保證運(yùn)行速度情況下設(shè)置為4;學(xué)習(xí)率eta是在更新過(guò)程中用到的收縮步長(zhǎng),決定著學(xué)習(xí)速度的快慢,一般設(shè)置為0.01到0.2之間,本次實(shí)驗(yàn)設(shè)置為0.02。Gamma默認(rèn)值為0,max_depth表示樹(shù)的最大深度,其設(shè)置得當(dāng)可以防止過(guò)擬合,本次實(shí)驗(yàn)設(shè)置值為8。由于本次實(shí)驗(yàn)選取的數(shù)據(jù)類別平衡性良好,故max_delta_step、scale_pos_weight等參數(shù)使用默認(rèn)值即可,對(duì)于學(xué)習(xí)任務(wù)和學(xué)習(xí)目標(biāo)中的目標(biāo)函數(shù)選定為multi:softprob,輸出為類別數(shù)*訓(xùn)練數(shù)據(jù)量大小的矩陣,每行數(shù)據(jù)表示每個(gè)樣本屬于各個(gè)類別的概率。選取最大的概率對(duì)應(yīng)的類別作為分類器對(duì)輸入數(shù)據(jù)預(yù)測(cè)的類別。經(jīng)過(guò)調(diào)整最終設(shè)置循環(huán)迭代次數(shù)為30次。
分別采用離散載荷特征與連續(xù)載荷特征構(gòu)建XGBoost分類模型,以測(cè)試模型的準(zhǔn)確率與召回率作為比較依據(jù)。測(cè)試性能結(jié)果如表2所示,由于離散載荷考慮了流量數(shù)據(jù)的分布特征,量化了流量載荷的不同屬性,所以采用離散化流量分類器比連續(xù)流量特征分類更有效。
分別與隨機(jī)森林、SVM以及樸素貝葉斯進(jìn)行對(duì)比。在相同數(shù)據(jù)的情況下其他分類算法的測(cè)試性能結(jié)果如圖6所示,可以看出XGBoost在識(shí)別手機(jī)即時(shí)通訊應(yīng)用具有較高的準(zhǔn)確率和召回率,同時(shí)其比隨機(jī)森林、SVM和樸素貝葉斯算法在大部分應(yīng)用流量識(shí)別情景中的應(yīng)用性能要高。
表2 XGBoost測(cè)試性能結(jié)果
圖6 RF、SVM、MNB測(cè)試性能結(jié)果
本文提出一種基于離散載荷特征的即時(shí)通訊軟件流量分類技術(shù),一是基于信息熵對(duì)流量特征進(jìn)行離散化,了解流量特征分布情況以便進(jìn)行流量分類,二是采用了具有自學(xué)習(xí)、自適應(yīng)功能的XGBoost算法提高了流量識(shí)別的準(zhǔn)確率和識(shí)別速率。實(shí)驗(yàn)結(jié)果表明,本方法對(duì)即時(shí)通訊軟件流量分類的準(zhǔn)確率高達(dá)92.6%,較傳統(tǒng)流量分類方法準(zhǔn)確率提高4.3%,與采用連續(xù)特征分類相比分類準(zhǔn)確率提高2.3%。綜上所述基于離散載荷特征的即時(shí)通訊軟件流量分類技術(shù)這項(xiàng)研究對(duì)市場(chǎng)手機(jī)通訊軟件的使用分布,以及通訊軟件的逆向追蹤都有著極其重要的現(xiàn)實(shí)意義。