CCS 2021 | 自動化網路流量分析新方向
- 一、摘要
- 二、nPrint
- 三、nPrintML
- 四、實驗
- 4.1 Overview
- 4.2 主動設備指紋識別(Active Device Fingerprinting)
- 4.3 被動作業系統指紋識別(Passive OS Fingerprinting)
- 4.4 DTLS 應用識別(DTLS Application Identification)
- 4.5 其他實驗(Additional Case Studies)
- 4.5.1 netML 挑戰賽(netML Challenge Examples)
- 4.5.2 移動應用來源分類(Mobile Country of Origin)
- 4.5.3 流媒體視頻提供商識別(Streaming Video Providers)
- 五、總結
| 論文名稱 | New Directions in Automated Traffic Analysis |
|---|---|
| 錄用資訊 | CCS 2021(CCF-A) |
| 作者 | Jordan Holland, Paul Schmitt, Nick Feamster, Prateek Mittal |
| 團隊 | 普林斯頓大學資訊技術政策中心 芝加哥大學網路運營和互聯網安全實驗室 |
| 原始碼 | https://github.com/nprint/nprint |
| 資料集 | https://drive.google.com/drive/folders/158Lwb9TwopIJ0lGPuFik5744qPiqrg9F |
一、摘要
機器學習技術被廣泛的應用在入侵檢測、應用程式識別等網路流量分析任務中,然而在使用機器學習方法時,特征表示、模型選擇和引數調整等程序仍然需要大量的人力成本和專業知識,此外,流量模式會不斷的發生變化,使得模型和人工提取的特征過時,因此,本文提出一種自動化流量分析方法(nPrintML),使機器學習技術更容易應用于更廣泛的流量分析任務,nPrintML 包含 nPrint 流量表示和 AutoML 兩部分,首先 nPrint 通過對 IP 資料包頭進行對齊和拼接形成統一的資料表征,然后使用 AutoGluon-Tabular 框架進行自動化的進行特征提取、模型搜索和超引數優化,作者在 8 個不同的流量分析任務上對 nPrintML 進行評估,都取得了很好的效果,
二、nPrint
在應用機器學習方法時,對資料進行編碼是非常重要的一環,為了實作上述提出的目標,資料編碼需要滿足以下要求:
- 完整性(Complete):我們的目的是找到一種統一的資料編碼,而不依賴于專家知識,所以該編碼方式需要包含資料包的所有資訊,
- 不變性(Constant size per problem):機器學習模型要求輸入的資料保持同樣大小,因此,對于不同的資料包,也應該有相同的資料表征,
- 歸一性(Inherently normalized):歸一化可以減少模型的訓練時間并提高模型的穩定性,因此資料表征應該是經過歸一化的,
- 一致性(Aligned):不同資料包頭的同一部分在編碼后應該位于同樣的位置,
首先來看傳統的流量資料包頭:

從圖 2 可以看出,不同的網路協議(如 TCP 和 UDP)有著不同的資料表示方案,甚至相同的網路協議(如 IP)也不相同(是否包含 Options 選項),這顯然無法滿足上述需求,因此,作者提出了一個標準化的資料包表征方法:nPrint(圖 3),

nPrint 使用每種協議允許的最大包頭長度來表示該協議,同時將不同協議頭部拼接組合成固定長度的包頭,因此,nPrint 符合了上述幾個性質:完整性(理論上可以包含所有協議)、不變性(資料表征可以是一個確定的長度)、歸一性(資料被表示為 1/0/-1)、一致性(不同資料包頭的同一選項在同一位置),
三、nPrintML
作者將 nPrint 與 AutoGluon-Tabular 框架相結合,提出 nPrintML,實作了機器學習自動化的流程(圖 1),

AutoGluon-Tabular:一個 Aws 開源的 AutoML 框架,僅需要幾行代碼即可在未預處理的表格型資料(如 csv)上訓練高精度的機器學習模型,(AutoGluon 也支持處理非結構化資料)
關于 AutoGluon 的詳細介紹見 [5],[6],[7],
四、實驗
4.1 Overview
作者在 8 個不同的網路流量分析任務上進行實驗分析,結果表明(表 1):nPrintML 可以應用于不同場景,相較于對比方法能夠取得更好的性能:

4.2 主動設備指紋識別(Active Device Fingerprinting)
Nmap 通過發送一些探針到目標主機進而判斷其設備指紋,作者修改 Nmap 使其輸出每個探針的原始回應內容,nPrintML 使用 Nmap 產生的原始回應為每個設備構建一個 nPrint,
Comparison method:Nmap
Input:21 個 packets 組成的 nPrint,即探針的回應資料
Dataset:Holland et al. 2020 + 使用 Shodan 標注的 4 種 IoT 設備
Packet Transformation and Data Representation:
nPrint 配置為使用 IPv4、TCP 和 ICMP 頭((60+60+8) Bytes = 1024 bit = 1024 個特征),nPrintML聚合來自每個設備的所有回應,為每個設備創建一個包含 21 個資料包的 nPrint(為什么是 21 個資料包?),
Nmap 開發了一系列復雜的測驗(表 10),將每個探針的回應轉換為指紋,本文使用兩種方式來使用這種指紋進行評估:
- Nmap 將生成的指紋與其資料庫進行比較,對遠程設備進行分類(Nmap Direct/Nmap Aggressive),
- 使用指紋和對每個測驗編碼的類別特征(categorical feature)創建一個特征向量,用于 AutoML 訓練和驗證(ML-Enhanced Nmap),
先前研究[3]表明 Nmap 首先掃描設備上 1000 個最常見的開放埠以找到一個開放埠,然后向設備發送 16 個探針,其中 10 個用來探測開放埠,6 個(3 TCP + 1 UDP + 2 ICMP)用來探測關閉的埠,

Conclusion:
1) Nmap’s heuristics perform poorly for some devices.
表 2 顯示了 Nmap 直接輸出設備猜測結果(Nmap Direct)和多種探針加權聚合結果(Namp Aggressive)兩種方法的對比情況,結果表明:Nmap 在 Cisco、Juniper 和 Adtran 設備分類上具有較高的精度和相對較低的召回率,此外,Nmap 在整個資料集上的其他設備分類上效果都很差,

2) nPrintML outperforms an AutoML-enhanced Nmap.
為了更好的比較 nPrint 和 Nmap 長期積累的特征提取技術,作者在每個經過 one-hot 的 Nmap 指紋上使用 AutoML 進行指紋識別,替代了原有的結果生成方案(heuristic),同時,在每個設備產生的 nPrint 表征上運行 nPrintML,表 3 顯示了 Nmap 和 nPrintML 的最高性能分類器的平均精度,結果表明,在 nPrint 表征方法上訓練的模型不需要手動的特征工程就可以區分設備,而且 nPrintML 的性能優于 Nmap,

表 4 顯示了 Nmap 和 nPrintML 的最佳模型性能,可以發現 nPrintML 在每個指標上都優于 Nmap 長期積累的特征,

表 5 顯示了 Nmap 和 nPrintML 兩個性能最高的模型的訓練和推理時間,

圖 4 顯示了從使用 nPrintML 訓練的隨機森林模型中收集的特征重要性熱力圖,可以發現,探針回應資料包的 TCP 源埠是對設備供應商進行分類的最重要的特征之一,此外,我們還看到 IP TTL 和 TCP 視窗大小有助于識別設備,

4.3 被動作業系統指紋識別(Passive OS Fingerprinting)
Comparison method:p0f
Input:1/10/100 個資料包組成的 nPrint(表示不同識別難度)
Dataset:CIC-IDS 2017(13 種可用的作業系統流量)
Packet Transformation and Data Representation:使用每種設備的前 100,000 個資料包,將它們劃分為 1、10、100 資料包的樣本集(即 100,000 個包含 1 個資料包的 Pcap,10,000 個包含 10 個資料包的 Pcap 和 1000 個包含 100 個資料包的 Pcap),也就產生了 3 個獨立的分類問題,同時,為這些流量樣本生成僅含有 IP 和 TCP 頭部的 nPrint 表征,洗掉其中的 IP 源地址、IP 目標地址、IP 標識、TCP 源和目標埠以及 TCP 序列號和確認號,避免模型記住這些欄位而不是學會區分,
p0f 從每個資料包中提取一些欄位,并將提取的值與指紋資料庫進行比較,為提取的欄位找到匹配的作業系統,
Conclusion:
1) nPrintML can perform OS classification with high recall and few packets.
表 6 顯示了 3 個實驗的精度和召回率, 結果表明 p0f 生成的設備資訊粒度較粗(如 p0f 將所有 Ubuntu 設備和 Web Server 分類為“Linux 3.11 及更高版本”,將所有 Windows 設備分類為“Windows 7 或 8”),此外,隨著 p0f 訪問的資料包數增多,其性能通常會不斷提高,但其召回率整體都很低,nPrintML 相比而言,精度和召回都很高(使用 p0f label),即使只有 1 個資料包,

圖 5 顯示了從使用 nPrintML 訓練的性能最高的隨機森林模型中收集的特征重要性熱力圖,對于 IPv4 包頭,最重要的特性是 TTL 欄位,其次是 ID 欄位,這些結果證實了過去的一些經驗,即 TTL 和 ID 可用于作業系統檢測,因為不同的作業系統對這些欄位使用不同的默認值,在 TCP 報頭中,視窗大小欄位是最重要的特征,此外還可以觀察到,TCP 選項中的某些位有助于確定作業系統,因為某些作業系統默認包括特定選項,如最大段大小(maximum segment size)、視窗縮放(window scale)或 SACK(selective acknowledgement permitted),

2) nPrintML can reveal fine-grained differences in OSes.
接下來,作者使用了相同的 100-packet 樣本來驗證在 nPrint 表征上訓練的模型是否能夠在更細粒度的級別上實作自動化被動作業系統檢測(13 個類別的分類任務),圖 6a 顯示了最高性能模型的 PR 曲線, 圖 6b 更詳細地展示了模型分類結果的混淆矩陣,盡管細粒度分類的精度不如粗粒度,但幾乎所有的錯誤都出現在同一個作業系統大類中(合理),

3) nPrintML differentiates OSes, not simply devices.
為了驗證 nPrintML 是否能夠檢測作業系統,而不是學習識別網路上的特定設備,作者構建了一個實驗,使用資料集中的五臺 Ubuntu 主機和五臺 Windows 主機設定一個二分類任務,并且迭代地從兩個串列中選擇對來訓練模型,并針對串列中的其余主機進行測驗,結果表明無論使用哪一對設備進行訓練,nPrintML 都能以完美的準確率、ROC AUC 和 F1-Score 區分 Ubuntu 和 Windows 機器,這是由于模型學習到了兩個作業系統設定的初始 IP TTL 不同,
不同型別的作業系統,默認的起始 TTL 值是不同的[8]:
- windows:128(65-128)
- linux/unix:64(1-64)
- 某些 Unix:255
最后,為了確保 nPrint 不會通過設備的 TTL 值來記住主機在網路中的位置,作者將 TTL 統一設定為初始值進行了實驗,結果(圖 7)表明錯誤仍然發生在作業系統大類的內部,
p0f 使用沿路徑的位置作為特征,p0f 嘗試通過 64、128 或 255 三種值來猜測初始 TTL,然后使用遞減的 TTL 計算距離初始 TTL 的“距離”

4.4 DTLS 應用識別(DTLS Application Identification)
Input:DTLS 握手包組成的 nPrint
Dataset:Kyle MacMillan et al. 2020(來自 Firefox 和 Chrome 的 4 種約 7000 次的 DTLS 握手包:Facebook Messenger、Discord、Google Hangouts 和 Snowflake)本文設計為 7 分類任務,

Comparison method:Kyle MacMillan et al. 2020(作者參與的另一項作業,人工提取特征)
Packet Transformation and Data Representation:將握手包轉換為 nPrint 表征,同時在多種配置(表 1)下測驗 nPrintML,
Conclusion:
1) nPrintML can automatically detect features in a noisy environment.
在 nPrint 表征上訓練的加權集成分類器獲得了完美的 ROC AUC 分數、99.8% 的準確率和 99.8% 的 F1-Score,nPrintML 幾乎可以完美地識別生成每次握手的<瀏覽器,應用程式>對,雖然在以前的作業中,手動設計的特征可以達到相同的精度,但 nPrintML 完全避免了模型選擇和特征設計,此外,表 1 還顯示,在 nPrint 表征上訓練的模型可以僅使用每個資料包中的 UDP 報頭以高精度執行此任務,

2) nPrintML performs well across models and trains quickly.
表 8 顯示了每個經過訓練的非集成分類器和總體性能最高的加權集成分類器在測驗資料集上的 F1-Score、訓練時間和總推斷時間,nPrint 表征可跨模型作業,推理和訓練時間與模型相關,

3) nPrintML can be used to understand semantic feature importance.
圖 8 顯示了從 nPrint 表征上訓練的性能最高的隨機森林模型中收集的特征重要性熱力圖,在該場景下,頭部的長度資訊和 DTLS 有效載荷中的資訊在很大程度上決定了 nPrintML 的性能,

4.5 其他實驗(Additional Case Studies)
4.5.1 netML 挑戰賽(netML Challenge Examples)
使用 netML 流量分析挑戰賽資料集,包含三個場景:入侵檢測、物聯網設備惡意軟體檢測和流量識別,實驗結果見表 1,在每項任務中,除了 IoT 惡意流量分析的一個場景外,nPrintML 的性能都優于 netML排行榜上性能最高的模型(不公平的比較:netML 挑戰賽只給出了統計特征,但作者使用了原始的資料包),作者還提供了復現的具體命令:
# Intrusion Detection
$ nprintml -L labels.txt -a pcap --pcap-dir traffic_flows/ -4 -t -u -c 5 -x "ipv4_src.*|ipv4_dst.*"
# Malware Detection
$ nprintml -L labels.txt -a pcap --pcap-dir traffic_flows/ -4 -t -u -c 10 -x "ipv4_src.*|ipv4_dst.*"
# Traffic Identification(No Payload bytes)
$ nprintml -L labels.txt -a pcap --pcap-dir traffic_flows/ -4 -t -u -c 5 -x "ipv4_src.*|ipv4_dst.*"
# Traffic Identification(10 Payload bytes)
$ nprintml -L labels.txt -a pcap --pcap-dir traffic_flows/ -4 -t -u -p 10 -c 5 -x "ipv4_src.*|ipv4_dst.*"
作者此處沒有給出使用 Payload 和不使用 Payload 的性能對比
4.5.2 移動應用來源分類(Mobile Country of Origin)
使用 Cross Platform 資料集[4]確定移動應用程式流量來源國家(中國、美國、印度),nPrintML 可以使用每個資料包的 IPv4、TCP 和 UDP 報頭以 96% 以上的準確率執行此任務,
$ nprintml -L labels.txt -a pcap --pcap-dir application_traces/ -4 -t -u -p 50 -c 25 -x " ipv4_src.*|ipv4_dst.*"
4.5.3 流媒體視頻提供商識別(Streaming Video Providers)
僅使用 SYN 資料包能夠以 98% 的準確率識別流媒體服務提供商(Netflix、YouTube、Amazon 和 Twitch),資料集來自本文第三作者先前參與的作業,
$ nprintml -L labels.txt -a pcap --pcap-dir video_traces -4 -t -u -R -c 25 -f "tcp[13] == 2"
五、總結
Contributions:
- 為自動化流量提供了一種新的方向,提出一種統一的網路資料包表征方法 nPrint;
- 將 nPrint 與自動化機器學習工具 AutoGluon 相結合,提出 nPrintML,實作了自動化流量分析;
- 在 8 個不同流量分析場景進行了實驗評估,結果表明 nPrintML 可以更好地獲取網路流量的特征資訊,nPrintML 獲取的機器學習模型在性能上比傳統特征工程得到的機器學習模型更加優越,
Deficiencies:
- 面對流量的加密化趨勢,越來越多的作業轉向使用流級別的序列資訊或統計資訊進行流量分析,nPrint 表征方法對流級別的序列資訊提取幾乎沒有幫助;
- 作者的分類問題設計的普遍比較簡單,缺少和最先進的流量分析方法(基于機器學習技術)的比較,而且使用加密后的 Payload 進行分類也很難解釋;
- AutoML 技術當前存在的一些缺點也會影響到流量分析任務,如何自動化構建更復雜的模型、如何基于資料構建更復雜的關系(跨流捕獲時間關系)等都是未來需要改進的方向,
附錄:
1. nPrint 配置選項
-4, --ipv4 include ipv4 headers
-6, --ipv6 include ipv6 headers
-A, --absolute_timestamps include absolute timestmap field
-c, --count=INTEGER number of packets to parse ( if not all )
-C, --csv_file=FILE csv (hex packets) infile
-d, --device=STRING device to capture from if live capture
-e, --eth include eth headers
-f, --filter=STRING filter for libpcap
-F, --fill_int=INT8_T integer to fill missing bits with
-h, --nprint_filter_help print regex possibilities
-i, --icmp include icmp headers
-N, --nPrint_file=FILE nPrint infile
-O, --write_index=INTEGER Output file Index (first column) Options :
0: source IP (default)
1: destination IP
2: source port
3: destination port
4: flow (5-tuple)
-p, --payload=PAYLOAD_SIZE include n bytes of payload
-P, --pcap_file=FILE pcap infile
-R, --relative_timestamps include relative timestamp field
-S, --stats print stats about packets processed when finished
-t, --tcp include tcp headers
-u, --udp include udp headers
-V, --verbose print human readable packets with nPrints
-W, --write_file=FILE file for output , else stdout
-x, --nprint_filter=STRING regex to filter bits out of nPrint . nprint -h for details
-?, --help Give this help list
--usage Give a short usage message
--version Print program version
2. nPrintML 示例
作者提供了一個從頭開始復現 4.4 節中結果的示例,
1)克隆存盤庫以獲取資料
$ git clone repo_name
2)解壓縮流量資料
$ tar -xvf dataset.tar.gz
3)撰寫一個腳本來生成標簽
# Generate Labels, not necessary if labels exist
import sys
import pathlib
# Example file name: dataset/facebook/windows_chrome_facebook_1383.pcap
# Get file paths
paths = list(pathlib.Path(sys.argv[1]).rglob('*.pcap'))
for path in paths :
# Build label
tokens = str(path.stem).split('_')
label = '{0}_{1}'.format(tokens[0], tokens[1])
print('{0},{1}'.format(path, label))
4)運行標簽生成腳本
$ python gen_labels.py dataset/ > labels.txt
5)運行 nPrintML 執行流量分析
# IPv4, UDP, first 10 payload bytes of each packet:
$ nprintML -L labels.txt -a pcap --pcap_dir dataset/ -4 -u -p 10
# First 100 payload bytes of each packet:
$ nprintML -L labels.txt -a pcap --pcap_dir dataset/ -p 100
# UDP headers only:
$ nprintML -L labels.txt -a pcap --pcap_dir dataset/ -u
參考資料:
- Holland J, Schmitt P, Feamster N, et al. New directions in automated traffic analysis[C]//Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security. 2021: 3366-3383.
- Erickson N, Mueller J, Shirkov A, et al. Autogluon-tabular: Robust and accurate automl for structured data[J]. arXiv preprint arXiv:2003.06505, 2020.
- Holland J, Teixeira R, Schmitt P, et al. Classifying Network Vendors at Internet Scale[J]. arXiv preprint arXiv:2006.13086, 2020.
- Ren J, Dubois D J, Choffnes D. An International View of Privacy Risks for Mobile Apps[J]. 2019.
- https://mp.weixin.qq.com/s/QCTGWcL01DZ3sQYh4wQxGw
- https://www.freesion.com/article/4292383268/
- https://www.bilibili.com/video/BV1F84y1F7Ps/
- https://mp.weixin.qq.com/s/nCkqGmmVmUcGV1pxhLnFjg
- https://blog.csdn.net/weixin_43876557/article/details/106351768
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/404067.html
標籤:其他


