跳到主要內容區塊

ntuccepaper2019

專題報導

網路行為分析
  • 卷期:v0044
  • 出版日期:2018-03-20

作者:游子興 / 臺灣大學計算機及資訊網路中心資訊網路組


網管人員對於網路流量之分析,過去大都使用 MRTG 進行流量或封包數分析,但對於使用者上網行為一般常使用UDP、TCP加上Port Number進行分析,而此方法在現今網頁服務已成主流之情況下,分析結果已無特別意義。本文提供使用IP-Based + AS Number及使用nDPI兩種方法來進行網路行為分析。

 

網路行為分析方式使用Port Number

針對使用者上網行為分析,傳統且最簡單的方式就是使用TCP/IP 協定的第四層Port Number來進行分析,例如Port 53表示DNS服務、Port 22為SSH服務、Port 443為HTTPS服務,Port 80為HTTP服務等。依據Port Number之網路流量來進行排序,可粗略瞭解使用者上網行為之分佈,如下圖1所示,網路流量以網頁服務為主,其中加密流量 HTTPS 比例最多,其他依序為未加密之網頁服務與 SSH 連線服務等。

 


圖1. 網路行為分析 Port Number

 

網路行為分析方式使用AS Number

使用傳統Port Number進行網路行為分析,僅能得知大部分使用者皆在使用網頁相關服務,至於詳細在使用哪些網頁服務,就無法得知了。
在Internet上使用之Public IP address原則上都有該IP或網段所屬之識別號碼,稱為Autonomous System Number(ASN),ASN是BGP路由協定用來交換路由資訊之重要資訊之一,藉由查詢ASN之擁有者或註冊者,可大略知道使用者之上網行為。
至於如何查詢IP所屬ASN有多種方法,針對單一或少數IP可查詢網路上免費提供之Looking Glass Server得知ASN,至於需要批次查詢大量IP則建議使用IP Geolocation資料庫中所提供之ASN資訊,可自行在網路上搜尋maxmind、ip2location皆有提供此資料庫服務。
此方法還有個優點,就是適用於傳統IP-Based分析方法例如netflow,統計網路流量中所有IP之ASN資訊後,可依據ASN流量大小進行排序,如下圖2所示,流量最高為臺灣學術網路,其他依序為Google、Facebook等。

 


圖2. 網路行為分析 AS Number

 

使用AS Number分析上網行為的方法,還可結合Port Number進行分析,可進一步瞭解網路協定與上網服務之進一步關係。如下圖3所示,其中牽涉個人隱私的服務Facebook全部使用加密服務,而非加密的服務包含臺灣學術網路、微軟與蘋果等相關服務。

 


圖3. 網路行為分析 Port Number + AS Number

 

網路行為分析方式使用DPI

若要明確分析使用者上網行為,就需要對TCP/IP之應用層或第七層協定(Payload)進行分析,此方法一般稱為DPI(Deep Packet Inspection)分析。
目前市面上已有許多商業硬體設備可進行DPI分析,例如 P-Cube及之後被 Cisco 併購成為Cisco SCE Service Control Engine系列、Procera等。這些商業設備使用Proprietary protocol pattern來分析封包中的payload資訊,藉此來辨識不同的網路應用協定,新的應用協定需有新的pattern,而舊的應用協定pattern也可能隨時更改,此方法需倚賴廠商不斷的更新來維持正確之辨識率。因此這些設備需有維護合約才能持續更新,但若設備本身也進入End of Life or End of Service,那就真的只能自求多福了。
在網路上是否有開源又免費之DPI分析套件呢?在此介紹一套Open Source DPI Library稱為nDPI,程式使用Portable C library (Win and Unix, 32/64 bit),可自行在https://github.com/ntop/nDPI下載及編譯。nDPI專案在Github一直有著非常高的活躍度,如下圖4所示,從2015年至今仍不斷進行更新,因此靠著網路社群集眾多人之力可得到長久不斷之更新。

 


圖4. nDPI 於 Github 上之活躍度

 

目前nDPI v2.3.0已可辨識239以上之protocols,支援之應用類別如下:
P2P (Skype, BitTorrent)
Messaging (Viber, Whatsapp, MSN, The Facebook)
Multimedia (YouTube, Last.gm, iTunes)
Conferencing (Webex, CitrixOnLine)
Streaming (Zattoo, Icecast, Shoutcast, Netflix)
Business (VNC, RDP, Citrix, *SQL)

 

目前nDPI也已經應用於許多網路軟體專案中,例如Network Forensics (Xplico)、Linux-kernel packet filtering(ndpi-netfilter)、Ntopng等。

 

在Wireshark 使用 nDPI 進行封包分析

Wireshark原有功能即可針對封包應用層進行剖析,但其原理仰賴事先設定對應之TCP/UDP Port Number如下圖5所示,因此Wireshark並無自動辨識Layer 7之能力,與先前所提使用Port Number辨識網路行為方法一樣。

 


圖5. Wireshark Preference Protocol 設定畫面

 

使用 nDPI 應用於 Wireshark 需先進行編譯,以下使用Ubuntu 16.04為範例進行說明。
安裝編譯所需相關套件:

 

apt-get build-essential
apt-get install autoconf automake autogen libpcap-dev libtool libjson-c-dev

 

從github下載 nDPI套件程式:
git clone https://github.com/ntop/nDPI.git

 

進入nDPI目錄進行編譯:
cd nDPI
./autogen.sh
./configure --enable-json-c --with-pic
make

 

上述編譯完成後將在 /example目錄下產生ndpiReader執行檔,將此檔案複製於Wireshark "Help -> About Wireshark: Folders: Extcap path" 目錄下,另外複製/wireshark目錄下ndpi.lua檔案到Wireshark "Help -> About Wireshark: Folders: Global or Personal Plugins“目錄下,如下圖6所示。

 


圖6. Wireshark About Wireshark: Folders 畫面

 

之後開啟Wireshark程式,Capture畫面會多了一個選擇:nDPI interface: ndpi,點選⊙可進入設定選項,如下圖7所示。此選項畫面提供Live Capture或PCAP File進行nDPI分析,此外還提供Layer7 Filter過濾條件,可針對應用層進行過濾,例如僅過濾顯示 Skype 封包。

 


圖7. Wireshark 安裝 nDPI 後 Capture 畫面

 

之後在Wireshark原有之Protocol欄位中,即可顯示nDPI分析之結果,如下圖所示。另外在封包Layer2,也可看到nDPI所加上之Trailer標記,以及在最後加上之nDPI Protocol分析結果。

 


圖8. Wireshark nDPI分析結果

 

結論

在現今網頁服務已成主流之情況下,傳統使用Port Number分析網路行為的方式已不具太大的效益,本文提供了簡易IP based + AS Number的方法可快速分析使用者行為,另外提供了精確有效的nDPI Library工具結合Wireshark 可進一步進行網路行為分析。

 

參考資料:

1. https://sharkfestus.wireshark.org/assets/presentations17/10.pdf
Knowing the Unknown:How to Monitor and Troubleshoot an Unfamiliar Network SharkFest'17 US
2. https://github.com/ntop/nDPI/