流量分類——Robust Network Traffic Classification
「好論文,需要精讀和積累」
01
—
摘要
不斷出現的0-day應用給網路流量分類帶來巨大挑戰,該文提出了一種新的機制(粗統計網路分類模型,Robust statistical Traffic Classification, RTC),來發現網路流量中0-day應用產生的流量。主要採用結合監督和非監督的機器學習分類的技術來自動地進行這一過程。該文稱這種機制比目前最新水平的方法更好,如:隨機森林,基於相關性的分類,半監督聚類和one class支持向量機。
02
—
重點參考文獻
該文的方法是跟文獻[35]的半監督方法是一脈相承的,在文獻[36]中進一步提升了半監督方法的效果,在文獻[37]中主要對加密的網路流量進行分類,這些文獻都可重點閱讀;另外,該文也是作者團隊基於文獻[4]研究方法的延續。
03
—
簡介
介紹了當前流行的流量分類方法,基於埠的,基於載荷的,基於流統計的。基於埠的無法對抗埠復用;基於載荷的無法對抗加密流量;因此本文採用流統計方法,主要解決識別0-day應用產生網路流量的難題。本文的主要貢獻如下:
1.提出了RTC機制,通過結合監督和非監督的機器學習方法來解決識別0-day應用的問題;
2.提出了一種新的從未標籤的網路流量中提取0-day流量的方法;
3.發展了一種新的可以自動地優化RTC這一過程的方法。
實驗方法是作者團隊在文獻[4]的繼續,採用真實的網路數據,基於概率理論提出新的定量方法來評估流的相關性。
04
—
論文方法
該文的主要目標是收集可信的足夠的0-day應用樣本,提出了RTC方法,如下圖所示。該圖的輸入是未標記的訓練數據,輸出是作者進行了分類的0-day應用。由圖可知,主要分為三步,第一部分叫做Unknown Discovery,用來初步發現0-day應用的網路流量,作為第二部分的未知分類訓練數據;在第二部分中(BoF-Based Traffic Classification),基於流的相關性對測試數據集進行分類,以打包流集為單位(bag of flows)將已知流篩除,剩下的則為純度很高的0-day應用流量,並作為第三部分的輸入數據;第三部分(System Update),採用半監督的方式對0-day流量進行聚類,檢查聚類樣本的純度後,將樣本標記為已知類,這些樣本則可放入第二步中作為已標記的訓練數據,如此不斷地迭代第二步中的分類器,從而更高效地發現未知的0-day應用。下面,我再講一講每一步的詳細過程。
1)Unknown Discovery
這一步主要是對未標記的流量進行初步處理,大致篩選出0-day應用的網路流量。這一過程主要包含在下面這個演算法中,現將對照著演算法對每一步進行詳細解讀。
數據準備:已標記的數據集{ψ1,…,ψN,},為標記的數據集Tu。
目標:獲得0-day樣本集U。
1:是將已標記的數據集合併為Tl。
2:是將已標記的數據集和未標記的數據集合併為T。
3:通過k-means聚類將T聚類成個簇為{C1,…,Ck}。
4:初始化集合V為空集。
5-9:循環判斷Ci簇中是否包含來自於Tl的已知標記的數據樣本,如不包含,則將Ci簇中的數據存入V中。
10:結合{ψ1,…,ψN}和V數據集訓練一個(N+1類)的分類器為fc1(V代表初次獲得的一般0-day流量集合)
11:初始化集合U為空集。
12-16:將Tu中的數據流放入分類器fc1中進行分類,若流x被分為未知流類,則視為0-day流,並存入集合U中。(這一步主要是為了獲得純度更高的0-day樣本集)。
2)Bof-Based Traffic Classification
這一步主要結合流的相關性從測試樣本集中發現0-day流量,上一步發現的0-day流量僅作為未知分類的訓練數據用。該過程如下所示。
數據準備:已標記的數據樣本集{ψ1,…,ψN},上一步得到的0-day樣本集U,和測試樣本集Ωt
目標:為testing flows標記集合Lt
1:集合標記的樣本集{ψ1,…,ψN},和0-day樣本集U,訓練一個(N+1)類的分類器為fc2(U表示為一個一般的未知分類)
2:通過3元組(3元組相同的流視為相關性強的流),從測試樣本集Ωt構建打包流集BoFs為X={Xi}。
3-10:如果X不為空集,從X中循環取出一個打包流集Xi;
從Xi中選取流xij放入fc2分類器中進行分類,得到分類結果;
通過聚類預測,正文中描述為投票機制,打包流集的分類結果由得票最高的分類決定;
將分類結果標籤賦給打包流集中所有的流,分類為未知分類的流則要傳遞到下部分做進一步分析。
這部分主要是基於流的相關性(3元組相同的流)來對流進行又一次的分類,主要目的還是為了提高0-day流的純凈度,作者提到這部分的方法同樣可以用在第一步。
在這部分,論文中還從理論的層面對基於流相關性的方法做了公式推導,在理論層面,證明了打包流集中的流數量越多,分類結果越精確。
3)System Update
這部分比較簡單,對從上一步獲得的0-day應用流量進行聚類與打標籤,並將打標籤的數據作為訓練集交給上一步迭代分類器,如此不斷發現新的應用。詳細步驟如下所示。
數據準備:0-day流集Z
目標:從訓練集中獲得新的分類
1:通過k-means聚類演算法對集合Z進行聚類,得到k個簇為{C1,…,Ck}。
2:從1到k個簇中循環取出一個簇為Ci
3:從簇Ci中隨機取出A個數據流
4:人工檢查這A個數據流
5:如果檢查到這A個數據流均為同一個應用產生
6:如果這個應用為一個新的應用
7-10:如果已被識別過,則將Ci放入訓練集中;如未被識別過,則重新創建一個新應用的訓練集
11-14循環到前面的2,直到把所有的簇遍歷完
由此,整個訓練過程介紹完畢,其中多次用到了監督的和非監督的學習演算法。在下一章中,作者著力介紹了如何進行參數優化。如k-means演算法在不同樣本集的情況下k值的確定,以達到最優的效果。同時,作者做了大量的實驗比對不同方法的實驗效果,其中訓練集的來源和實驗步驟都很詳細,值得學習,這裡就不再贅述。
05
—
總結
數據集的複雜度決定了處理步驟的複雜度。面對網路數據流量的幾何級增長,流量分類再也不能通過一兩次簡單的聚類和分類來解決問題。該文即是通過三大處理步驟來綜合地提高分類的精確性,值得學習。
發表刊物:IEEE/ACM TRANSACTIONS ON NETWORKING(SCI索引)
發表時間:2015.8


TAG:CyberSecPapers |