一種基于n-gram多特征的流量載荷類型檢測方法
【專利摘要】本發明公開了一種基于n?gram多特征的流量載荷類型檢測方法。本方法為:1)讀取樣本網絡流的數據包,根據該數據包的按五元組標記其所屬的樣本網絡流;然后計算該樣本網絡流五元組的哈希值作為鍵,如果哈希表中不存在該項,則將該哈希值作為新的鍵并分配一結構體作為鍵值Value,插入哈希表中;如果存在該鍵,則在哈希表中獲得對應的結構體,將該數據包的載荷數據保存到該結構體中;2)對每一結構體中的載荷數據進行n?gram子串分割,生成該樣本網絡流的特征向量;3)根據特征向量訓練得到一分類模型;4)對于待分類的網絡流,生成該網絡流的特征向量,然后利用該分類模型判斷該網絡流的類型。本發明大大提高了檢測效率。
【專利說明】
-種基于n-gram多特征的流量載荷類型檢測方法
技術領域
[0001] 本發明屬于網絡流量信息安全領域,設及一種對流量按其載荷類型進行檢測的方 法,能夠應用于提高網絡服務質量、優化網絡帶寬分配、加強網絡安全管理等方面。
【背景技術】
[0002] 隨著互聯網的普及和網絡技術的快速發展,網絡流量呈現爆炸式增長,如何高效 地網絡帶寬規劃、網絡入侵檢測與防御W及流量計費,是當前網絡服務提供商和網絡管理 者所面臨的挑戰。網絡流量分類技術能夠按照網絡應用類型或協議類型對流量進行分類, 可為上述亟需解決的問題提供重要的技術支撐。
[0003] 目前已有的網絡流量分類技術,主要是將網絡流量分類到具體的網絡應用和網絡 協議,方法有4種:基于端口的流量分類方法、基于有效負載的流量分類方法、基于主機行為 模式的流量分類方法W及基于機器學習的流量分類方法。
[0004] (1)基于端口的流量分類方法
[0005] 能夠用于高速實時流量分類,但是由于隨機端口 W及端口偽裝技術的濫用,該方 法已逐漸失效。
[0006] (2)基于有效負載的流量分類方法
[0007] 在實際工程中應用最為廣泛,主要得益于快速準確的類字符串指紋匹配算法。但 是由于應用協議指紋的提取只能針對已知的非加密網絡應用,因此無法處理加密流量或者 其它未知網絡應用的流量。
[000引(3)基于主機行為模式的流量分類方法
[0009] 該方法具有很強的理論意義,不依賴協議特征,不需要對數據包進行解析,通過主 機交互的行為信息來識別網絡流量,由于模型較為復雜難W保證實時性要求,并且無法精 細化識別出應用類型。
[0010] (4)基于機器學習的流量分類方法
[0011] 假設對于給定的網絡應用,流的行為統計特征(流間隔、單包字節長度、相鄰包時 間間隔等)具有唯一性,可W基于此類特征分類不同網絡應用流量。但缺點是很難找出有效 的特征對網絡應用或協議產生的流量進行準確的分類,而且分類過程耗費資源較多,應用 于在線環境有一定困難。
[0012] 針對未知應用流量和加密流量的分析和識別問題,提出了對流量載荷類型進行識 別與分類,方法主要有W下巧中:
[0013] (1)基于假設檢驗的分類方法
[0014] 該方法主要針對的是加密流量的識別,利用加密數據的隨機性特點,對網絡報文 逐一實施累積和檢驗,根據報文長度將結果進行加權綜合,無需解密操作,也無需匹配特定 內容,實現了對加密流量的普適識別.可動態調整報文的檢測數量,W達到時延和準確率的 統一。缺點是無法應用于其他載荷類型的識別,且容易誤識別壓縮類型的網絡流量。
[0015] (2)基于流行為特征的分類方法
[0016] 由于特定加密協議在連接建立階段交互的報文,內容相似,格式固定,往往具有特 定的流量特征,如報文長度、報文到達時間等。利用運些特定流量特征,借助于機器學習的 方法可實現對特定加密協議的識別。但是由于加密操作通常不會明顯改變報文的長度和到 達時間,運使得大部分業務數據使用明文傳輸和使用加密傳輸時具有相同的流量特征。一 些算法聲稱能夠識別加密流量,本質上是識別經加密傳輸的業務。例如P2P軟件經明文傳輸 和經加密傳輸數據時,其流量特征相同。無論是否加密傳輸,運些算法都能夠識別其為P2P 業務。但是,運些算法無法識別其業務流量是否加密。
[0017] (3)基于載荷賭值等統計特征的分類方法
[0018] 目前已有很多研究者將賭值特征應用于載荷類型的分類,并結合機器學習 SVM等 方法,將載荷類型分類為文本、加密、二進制等類型,但是W往的運類方法采用了較為單一 統計特征來刻畫不同的載荷類型,并且忽略了子串頻數分布的"長尾效應",導致整體分類 平均準確率僅在86%左右,個別類別的準確甚至低于80%,難W滿足實際需求。
【發明內容】
[0019]針對上述已有方法存在的問題,本發明公開了一種基于n-gram多特征的流量載荷 類型(文本、音頻、視頻、圖片、可執行文件、壓縮、加密等)檢測方法。
[0020] 首先給出本
【發明內容】
設及的部分定義:
[0021] (1)定義l:n-gram連續子串集合指的是W長度為η的滑動窗口分割原串得到的子 串集合,運里的原串指的是載荷內容;
[0022] 例如,原串為"alAcccde妃',η = 2時,滑動窗口如圖1,得到2-gram子串集合:
[0023] S2= {ab,t)b,bc,cc,cc,cd,de,ef ,fg}
[0024] (2)定義2:高頻連續子串集合指的是對n-gram連續子串集合去重,并統計各個子 串的頻數,由頻數超過闊值k的子串所構成的集合;
[002引例如,η = 2,k = 1時,高頻連續子串集合,即超過闊值1的2-gram連續子串集合為:
[0026] S ' 2,1 = {ab, t)b, be, CC, cd, de, ef, f g}
[0027] (3)定義3:連續相同字符子串集合指的是由形如"bb","ccc"運樣僅包含一種字符 的連續子串所構成的集合;
[0028] 本發明具體步驟包括:
[0029] (1)初始化參數:Payload結構體置0,Payload結構體中包括分別緩存對應網絡流 已經接收的載荷數據payloadjxiff,pa^oatbuff中接收的載荷數據長度payloatlen和 已經處理的數據包數pkt_num;Payload_ft結構體置0,用于保存對每條網絡流提取的載荷 特征;設置方法全局參數max_payload_len,表示接收每條流載荷數據的最大長度;設置 min_payload_len,表示用于提取載荷特征的最小數據長度;設置heatlen,表示數據包協 議頭估計的長度;設置max_packet_num,表示用于采集載荷特征的最大包數;設置最大高頻 子串頻數闊值K,設置最大n-gram最大窗口長度闊值N; train_f lag初始置為true,表示先進 入分類模型的訓練階段,在模型訓練完成后置為化Ise,進入在線分類階段;
[0030] Payload 結構體為:
[0034] (2)設置train_flag為化ue,進入模型的訓練階段,輸入已知載荷類型的樣本網絡 流量;
[0035] (3)讀取數據包并進行流重組:讀取網絡流量中的數據包,按五元組(源IP、目的 IP、源端口、目的端口、TCP/UDP)標記該數據包所屬的網絡流,計算該網絡流五元組的哈希 值,作為鍵Key,在哈希表中查找,如果不存在該項,則W該哈希值作為新的鍵Key,為該網絡 流分配一新的化yload結構體作為鍵值Value,插入哈希表中;如果哈希表中存在該項,則進 行步驟4);
[0036] (4)根據數據包的五元組計算得到的哈希值作為鍵Key,在哈希表中獲得對應的 Payload結構體,跳過數據包開始位置head_len長度后,將之后的載荷數據保存進化yload 中,并將該流已處理數據包數pkt_num加1,直至達到max_payload_len長度,轉入步驟(5); 如果當前處理的數據包數超過max_packe t_num,且pa}d oad_l en不小于min_pa}d oad_l en則 轉入步驟(5);如果當前處理的數據包是該流最后一個數據包,且payloa^len不小于min_ pa}doad_len,則轉入步驟(5),如果該網絡流處理完畢后的pa}doad_len小于min_payload_ len,則不對該流進行后續特征提取,并將該流移除哈希表;繼續執行步驟(3);
[0037] (5)若train_flag為true,則執行步驟(6),否則執行步驟(9);
[0038] (6)對流的載荷數據進行n-gram子串分割,取[1,N]間各個不同值η作為滑動窗口 大小,分割原載荷數據,得到n-gram連續子串集合W及形如"bb","CCC"運樣僅包含一種字 符的連續相同字符子串集合;
[0039] (7)統計n-gram連續子串集合中各項的頻數,取[1,Κ]間各個不同值k作為頻數闊 值,過濾n-gram連續子串集合,得到高頻連續子串集合;
[0040] (8)對步驟(6)中得到連續相同字符子串集合和步驟(7)中的高頻連續子串集合提 取如下統計特征,完成后轉入步驟(10):
[0041] (8.1)提取高頻連續子串集合的統計特征:頻數超過闊值k的不同元素種數mn,k、元 素巧大頻數mfn,k、均值meann,k、方差dn,k、f曰息賄hn,k;
[0042 ] (8.2)提取連續相同字符子串集合的統計特征:連續相同字符子串的數量sc_num、 連續相同字符子串的種數sc_diff_num、最大連續相同字符子串的長度sc_max_len、連續相 同字符子串的平均長度sc_mean_len;
[0043] (9)根據步驟(11)中分類特征集,對流載荷數據進行n-gram子串分割,并提取對應 特征,構造每條流的特征向量;轉入步驟(10);
[0044] (10)對除信息賭W外的其他特征均進行取對數處理,如方差特征山,1對數處理后 為log(di,i),將步驟(8)各個特征表示成該流的特征向量;
[0045] (11)若化ain_flag為化ue,并且數據包尚未讀完,則轉入步驟(3),如果數據包已 讀完則標識各流特征向量的載荷類型,并利用卡方檢驗和信息增益的方法對所有樣本網絡 流的特征向量計算得分并排序,按從前往后的順序,依次選擇排在兩種方法前10的特征作 為分類特征集(共選擇10個特征)作為對應網絡流的分類特征集,轉入步驟(12);若train, flag為false則轉入步驟(13);
[0046] (12)利用C4.5決策樹作為分類模型,用步驟(11)中的分類特征集構造訓練樣本, 得到C4.5分類模型;對C4.5分類模型中的分類規則,轉換成IF-ELSE規則;轉入步驟(14);
[0047] (13)根據步驟(12)中的IF-化SE規則,判斷特征向量的對應的載荷類型,輸出網絡 流的載荷類型,轉入步驟(3);
[004引(14)設置train_flag為化Ise,輸入需要分類的網絡流量,轉入步驟(3)。
[0049] 與已公開的方法相比,本發明具有如下優點:
[0050] (1)只需要提取網絡流前若干包的載荷特征信息,分類速度較快且只需要使用每 條流少量的載荷內容,占用內存較小;
[0051] (2)支持對多種載荷類型進行分類,包括文本、音頻、視頻、圖片、可執行文件、壓 縮、加密等;
[0052] (3)對載荷內容進行n-gram分割,并在利用闊值篩選后的高頻子串集合上提取有 效特征,相比已有方法具有更高的分類準確率和召回率;
[0053] (4)具有靈活的參數設置,可W設置提取特征的載荷內容的長度、數據包頭部長 度、載荷最小長度等,在性能和分類效果之間做出平衡;
[0054] (5)可W根據給定的載荷類型及已有數據集,調整所使用的特征集合,獲得更好的 分類效果。
【附圖說明】
[0055] 圖1為長度為2的滑動窗口;
[0056] 圖2為基于n-gram的載荷特征提取示意圖;
[0057] 圖3為基于n-gram多特征的流量分類流程圖。
【具體實施方式】
[0058] 下面,結合具體的實施例對本發明進行詳細說明。圖2是對載荷數據進行n-gram特 征提取的示意圖,對應步驟(6)至步驟(10),圖3是基于n-gram多特征的載荷類型分類方法 流程圖。
[0059] (1)初始化參數:Payload結構體置0,用于緩存已經接收的載荷數據payloacL buff,接收的數據長度payload_len和已經處理的數據包數pkt_num;Payload_ft結構體置 0,用于保存提取的載荷特征;設置max_payload_len,表示接收每條流載荷數據的最大長 度;設置min_pay load_l en,表示用于提取載荷特征的最小數據長度;設置head_len,表示數 據包協議頭估計的長度;設置max_packet_num,表示用于采集載荷特征的最大包數;設置最 大高頻子串頻數闊值K,設置最大n-gram最大窗口長度闊值N;化ain_flag置為化ue,表示需 要進行分類模型的訓練;
[0060] (2)輸入已知載荷類型的樣本網絡流量,設置train_f lag為true;
[0061] (3)讀取數據包并進行流重組,按五元組(源IP、目的IP、源端口、目的端口、TCP/ UDP)標記每條網絡流,對每條新網絡流W五元組的哈希值作為Key,化yload結構體作為 化lue,插入化shMap中;
[0062] (4)逐個處理每個數據包,計算數據包的五元組的哈希值,從化shMap中獲得 Pay load結構體,g兆過head_len將剩余的載荷數據保存進化y load中,并將該流已處理數據 包數地t_num加1,直至達到max_pay 1 oad_len長度,轉入步驟(5);如果當前處理的數據包數 超過max_packet_num,且payload_len不小于min_payload_len則轉入步驟巧);如果當前處 理的數據包是該流最后一個數據包或達到流重組超時時間,且payloacLlen不小于min_ 口曰5^1〇日(1_16]1,則轉入步驟(;5),如果9日5^1〇日(1_16]1小于111;[]1_9日71〇日(1_16]1,則不對該流進行后 續特征提取,并將該流移除化shMap;繼續執行步驟(3);
[0063] (5)若train_flag為true,則執行步驟(6),否則執行步驟(9);
[0064] (6)對流的載荷數據B進行n-gram子串分割,取[1,N]間各個不同值η作為滑動窗口 大小,分割原載荷數據,得到n-gram連續子串集合Sn= {si,S2,S3,. . .,si,. . .,SL-n+i},L表示 載荷數據B的長度;同時得到形如"bb","ccc"運樣僅包含一種字符的連續相同字符子串集 合;
[0065] 舉例如下:
[0066] 原串為"alAcccdefg",n = 2時,滑動窗口如圖1,得到2-gram子串集合:
[0067] S2= {ab,t)b,bc,cc,cc,cd,de,ef ,fg};
[0068] (7)統計n-gram連續子串集合Sn中各項的頻數,取[1,Κ]間各個不同值k作為頻數 闊值,過濾n-gram連續子串集合,得到高頻連續子串集合S ' η, k;
[0069] S n,k 二{s l,k,S 2,k,S 3,k,...,S m,k},k二1,2,3,...,Κ
[0070] k表示給定的頻數闊值,m表示頻數不小于闊值k的不重復元素的個數;
[0071]
用|s'i,k|表示元素 S'i,k的頻數,|S'n,k|表示集合S'n,k中所有元素的總頻數,貝U
[0072] 例如,載荷內容為"a化cccdefg",取n = 2,可W劃分成2-gram連續子串集合S2 = (ab,bb,bc,cc,cc,cd,de,ef,fg};
[0073] 當k = l時,得到S'2,l={ab,t)b,bc,cc,cd,de,ef,fg},|S'2,l|=9;
[0074] 當4 = 2時,得到5'2,2=山。},|5'2,2|=2;
[0075] (8)對步驟(6)中得到連續相同字符子串集合和步驟(7)中的高頻連續子串集合提 取如下統計特征,完成后轉入步驟(10):
[0076] (8.1)提取高頻連續子串集合的統計特征:
[0077] 頻數超過闊值k的不同元素種數:mn,k=m;
[0078] 元素最大頻數:mfn,k=max( I s'i,k| ),i = l,2, . . .,m,反映了頻數分布的峰值;
[0079] 均隹
反映了連續字符集合Sn的各元素頻數大小的平均水平;
[0080] 方差
反映了數據偏離均值的分散程度;
[0081] 信息賭
I反映了系統的混亂程度,它與元素個數和每個元 素的頻數大小都相關;
[0082 ] (8.2)提取連續相同字符子串集合的統計特征:
[0083] 連續相同字符子串的數量sc_mim:所有連續相同字符子串出現的總數;
[0084] 連續相同字符子串的種數sc_diff_num:所有出現過的不同種類(構成子串的字符 不同或者子串長度不同)的連續相同字符子串的數量;
[0085] 最大連續相同字符子串的長度sc_max_len:出現過的連續相同字符子串的最大長 度;
[0086] 連續相同字符子串的平均長度sc_mean_len:出現過的所有連續相同字符子串的 總長度除Wsc_mim得到的結果;
[0087] (9)根據步驟(11)中分類特征集,對流載荷數據進行n-gram子串分割,并提取對應 特征,轉入步驟(10);
[0088] (10)對除信息賭W外的其他特征均進行取對數處理,如方差特征山,1對數處理后 為log (di, 1 ),將各個特征表示成每條流的特征向量:
[0089] (sc_num, . . . ,sc_mean_len,mi,i,...山,1, . . . ,mn'k, . . . ,hn'k)
[0090] 其中,n = l,2,3. . .,N,k = l,2,3,. . .,Κ;
[0091] (11)若化ain_flag為化ue,并且數據包尚未讀完,則轉入步驟(3),如果數據包已 讀完則標識各流特征向量的載荷類型,并利用卡方檢驗和信息增益的方法綜合選擇排在前 10的特征作為分類特征集,轉入步驟(12);若train_flag為化Ise則轉入步驟(13);
[0092] (12)利用C4.5決策樹作為分類模型,用步驟(11)中的分類特征集構造訓練樣本, 得到C4.5分類模型;對C4.5分類模型中的分類規則,轉換成IF-ELSE規則;轉入步驟(14); [0093 ] (13)根據步驟(12)中的IF-ELSE規則,判斷特征向量的對應的載荷類型,輸出網絡 流的載荷類型,轉入步驟(3);
[0094] (14)設置train_flag為化Ise,輸入需要分類的網絡流量,轉入步驟(3)。
【主權項】
1. 一種基于n-gram多特征的流量載荷類型檢測方法,其步驟為: 1) 讀取所選已知載荷類型的各樣本網絡流的數據包,根據該數據包的按五元組標記其 所屬的樣本網絡流;然后計算該樣本網絡流五元組的哈希值作為鍵Key,根據該鍵Key在哈 希表中查找,如果不存在該項,則將該哈希值作為新的鍵Key,為該樣本網絡流分配一 Payload結構體作為鍵值Value,插入哈希表中;如果存在該鍵Key,則在哈希表中獲得對應 的Pay load結構體,將該數據包的載荷數據保存到該Pay load結構體中; 2) 對步驟1)得到的每一Pay load結構體:對Pay load結構體中的載荷數據進行n-gram子 串分割,得到該Pay load結構體對應樣本網絡流的連續相同字符子串集合和n-gram連續子 串集合,然后統計該n-gram連續子串集合中各項的頻數,得到一高頻連續子串集合;然后從 該連續相同字符子串集合、高頻連續子串集合中提取該樣本網絡流的統計特征,生成該樣 本網絡流的特征向量; 3) 根據步驟2)得到的特征向量,訓練得到一分類模型; 4) 對于待分類的網絡流,生成該網絡流的特征向量,然后利用該分類模型判斷該網絡 流的類型。2. 如權利要求1所述的方法,其特征在于,該Pay load結構體中包括用于存儲已接收載 荷數據的字段payload_buff、已接收的載荷數據長度的字段payload_len和數據包數pkt_ num〇3. 如權利要求1或2所述的方法,其特征在于,步驟1)中,將該數據包的載荷數據保存到 該Pay load結構體時,將該Pay load結構體的已處理數據包數pkt_num加1。4. 如權利要求3所述的方法,其特征在于,如果該Payload結構體的載荷數據長度 pay 1 oad_len達到設定的最大長度max_pay 1 oad_len,轉入步驟2)。5. 如權利要求3所述的方法,其特征在于,如果該Pay load結構體已接收的數據包數超 過設定的最大包數max_packet_num,且payload_len不小于設定的最小數據長度min_ payload_len則轉入步驟2)。6. 如權利要求3所述的方法,其特征在于,如果該Pay load結構體當前處理的數據包是 對應樣本網絡流最后一個數據包或達到設定的流重組超時時間,且payl〇ad_len不小于設 定的最小數據長度min_payload_len,則轉入步驟2)。7. 如權利要求3所述的方法,其特征在于,如果該Pay load結構體對應的樣本網絡流處 理完畢后的payload_len小于設定的最小數據長度min_payload_len,則將該樣本網絡流移 除哈希表。8. 如權利要求1所述的方法,其特征在于,對Pay load結構體中的載荷數據進行n-gram 子串分割的方法為:取[1,N]間各個不同值η作為滑動窗口大小,分割原載荷數據,得到n-gram連續子串集合以及連續相同字符子串集合。9. 如權利要求1所述的方法,其特征在于,從高頻連續子串集合中提取的統計特征包 括:頻數超過閾值k的不同元素種數mn, k、元素最大頻數mf n, k、均值meann, k、方差dn, k、信息熵 hn,k;從連續相同字符子串集合中提取的統計特征包括:連續相同字符子串的數量sc_num、 連續相同字符子串的種數sc_diff_num、最大連續相同字符子串的長度 SC_maX_len、連續相 同字符子串的平均長度sc_mean_len。10. 如權利要求1所述的方法,其特征在于,訓練得到該分類模型的方法為:首先利用卡 方檢驗和信息增益的方法對各樣本網絡流的特征向量計算得分并排序,為各樣本網絡流選 取若干特征作為對應樣本網絡流的分類特征集;然后利用決策樹作為分類模型,用該分類 特征集構造訓練樣本,得到分類模型。
【文檔編號】H04L12/26GK105871619SQ201610240406
【公開日】2016年8月17日
【申請日】2016年4月18日
【發明人】庹宇鵬, 張永錚, 常鵬
【申請人】中國科學院信息工程研究所