【第164期 May 5, 2011】
 

研發新視界

網路封包分析工具Wireshark介紹及應用

作者/蕭育杰

[發表日期:2011/4/29]



前言

網路又斷線了?為什麼會突然發生?各式各樣的問題充斥在網路世界中,為了解決這些問題,常常需要先對網路中的資料進行擷取和分析。分析網路封包,除了能夠找出異常行為和網路流量之外,更可以用來學習各種不同通訊協定。一般常見的網路封包分析工具(Network Packet Analyzer)有Tcpdump、Sniffer、NetXRay、Wireshark(Ethereal)等,其中Wireshark雖然屬於Open Source軟體,但是其完善的功能足可與許多商業軟體相提並論。

Wireshark採用GNU General Public License(GPL)授權,在GNU GPL通用授權的保障之下,使用者可以免費取得軟體及其程式碼,並擁有修改原始碼與客製化的權利。 最新的版本為1.4.5版,並提供許多不同作業系統的版本。Wireshark的前身為Ethereal,源起於1997年,後來因為商標的問題而改名為Wireshark。


《表一》說明Wireshark所支援在多種不同的平台下網路型態的封包
(資料來源: http://wiki.wireshark.org/CaptureSetup/NetworkMedia)


Wireshark被廣泛應用在網路封包的解析,目前已經能夠解析超過700種的通訊協定,對於目前網路上所使用的通訊協定,幾乎都能加以辨識。Wireshark也結合了功能強大的過濾語言,讓使用者針對特定的目標來分析網路封包,有助於研究通訊協定的行為與偵測網路上的異常行為。此外,Wireshark的圖形化介面相當的人性化,可以清楚的辨別封包的種類,對整個封包解讀的過程相當有幫助。

認識網路封包分析

網路封包是網路用來傳送資料的最小單位。封包因為不同的應用服務或通訊協定,而有各種不同的大小。一個封包由標頭(Headet)和資料(Data)所組成,封包的屬性被詳細地定義在標頭中,包括所使用的通訊協定、來源的IP位址、來源的通訊埠、目的地的IP位址、目的地的通訊埠等欄位,不過並非所有的通訊協定都有相同的欄位資料,由於採用不同的通訊協定,網路封包的結構都有些許的差異。

以下所列出的檔案格式是由其它封包擷取工具所取得的資料,但可以透過Wireshark開啟並解析:

‧libpcap, tcpdump and various other tools using tcpdump's capture format
‧Sun snoop and atmsnoop
‧Shomiti/Finisar Surveyor captures
‧Novell LANalyzer captures
‧Microsoft Network Monitor captures
‧AIX's iptrace captures
‧Cinco Networks NetXray captures
‧Network Associates Windows-based Sniffer and Sniffer Pro captures
‧Network General/Network Associates DOS-based Sniffer (compressed or uncompressed) captures
‧AG Group/WildPackets EtherPeek/TokenPeek/AiroPeek/EtherHelp/PacketGrabber captures
‧RADCOM's WAN/LAN Analyzer captures
‧Network Instruments Observer version 9 captures
‧Lucent/Ascend router debug output
‧HP-UX's nettl
‧Toshiba's ISDN routers dump output
‧ISDN4BSD i4btrace utility
‧traces from the EyeSDN USB S0
‧IPLog format from the Cisco Secure Intrusion Detection System
‧pppd logs (pppdump format)
‧the output from VMS's TCPIPtrace/TCPtrace/UCX$TRACE utilities
‧the text output from the DBS Etherwatch VMS utility
‧Visual Networks' Visual UpTime traffic capture
‧the output from CoSine L2 debug
‧the output from Accellent's 5Views LAN agents
‧Endace Measurement Systems' ERF format captures
‧Linux Bluez Bluetooth stack hcidump -w traces
‧Catapult DCT2000 .out files
‧Gammu generated text output from Nokia DCT3 phones in Netmonitor mode
‧IBM Series (OS/400) Comm traces (ASCII & UNICODE)
‧Juniper Netscreen snoop captures
‧Symbian OS btsnoop captures
‧Tamosoft CommView captures
‧Textronix K12xx 32bit .rf5 format captures
‧Textronix K12 text file format captures
‧Wireshark .pcapng captures (Experimental)
(資料來源: http://www.wireshark.org/docs/wsug_html_chunked/ChIOOpenSection.html#ChIOInputFormatsSection)

WinPcap(Windows Packet Capture)

若要在Windows平台上安裝Wireshark,需要先安裝WinPcap。WinPcap是Windows系統所需要的lippcap函式庫,Wieshark使用此函式庫來擷取網路上的封包。


《圖一》Wireshark安裝過程,須先安裝WinPcap


Wireshark的操作介面

Wireshark提供的介面和功能相當完整,具備豐富的過濾語言和統計分析的功能。其操作介面包含最上方的功能表、工具列、篩選工具列、網路封包清單、封包內容、封包位元組和狀態列。另外,在網路封包清單中,可以針對不同的通訊協定或過濾規則指定顏色,這種設計方式可以協助使用者快速辨識各種不同通訊協定,或是過濾規則符合目前網路流量的情況,能夠更方便進行後續處理工作。


《圖二》Wireshark的主畫面


  • 封包清單窗格(packet list pane): 顯示封包清單,所列出的可能是目前擷取的封包,或是之前存檔的封包內容,預設會以第一個欄位(流水號)來排序。

  • 封包內容窗格(pane details packet): 會依封包清單窗格所選擇的封包而改變Wireshark將該封包內容解碼後,以比較容易理解的分層形式顯示出來。

  • 封包位元組窗格(packet bytes pane): 顯示內容和封包內容窗格相同,但以位元組的格式來呈現,當使用者選取封包內容窗格中的通訊協定欄位時,此處相對應的位元組會自動反白顯示。

Capture功能視窗


《圖三》Capture Option


  • Interface: 顯示目前系統上找到的所有網路卡,但只能選取一個作為封包擷取的介面。

  • Capture packets in promiscuous mode: 擷取封包的模式,如果勾選會擷取整個LAN的封包;如果不勾選,則只會擷取從你的電腦發送或接收的封包。

  • Buffer size: 代表擷取網路封包時所用的緩衝區大小。

  • Capture Filter: 用來指定篩選規則,擷取特定的封包。此Capture Filter與主頁面的Filter是不一樣的。在這裡是指在封包擷取時同時過濾封包(Filter while capturing),而Filter是指已擷取完畢,在檢視封包時過濾出想要的封包(Filter packets while viewing),所以這兩者所使用的運算式是不同的。

  • Capture Files(s): 設定擷取下來的資料檔名、存放位置、是否分割為多個檔案和分割規則。

  • Stop Capture: 設定停止擷取封包的規則,可以封包數、檔案大小或時間來制訂規則。

  • Display Options: 設定是否及時更新packet list pane的封包資訊、自動捲動到最新的頁面和隱藏詳細內容。

  • Name Resoluion: 設定是否將網路卡MAC address的前三個位元組轉換成製造商名稱、將IP address轉換為DNS網域名稱和通信埠轉換成通訊協定。

Filter while capturing與Filter packets while viewing的語法簡易介紹

一、Filter while capturing: Capture Filter是使用libpcap filter語言,詳細語法可以參考官方wiki
舉例說明:
擷取連線到知名BBS台大PTT的 telnet 封包
語法為:host 140.112.172.1 and port 23
擷取port 443的封包但排除port 23的連線
語法為:host 140.112.172.1 and not port 23 and port 443


《圖四》Capture Filter


二、Filter packets while viewing: 主頁面的篩選工具列Fllter語法: ip.dst == 10.11.22.206


《圖五》Filter Expression


篩選結果如圖六,列出所有送到10.11.22.206的封包。


《圖六》Filter篩選後的結果


Follow TCP Stream


《圖七》


因為我們擷取到的資料可能是非常大量且雜亂的內容,如果只想觀察同一筆資料的所有封包,可以在封包資料列按右鍵,選擇"Follow TCP Stream",即可查看該筆訊息從開始到結束的封包資料,此作法是以Filter packets while viewing的方式來進行:


《圖八》


如上圖可看到兩邊主機完整的交談過程,過濾結果的資料形式可以選為ASCII、EBCDIC、Hex Dump、C Arrays和Raw,可依不同的需求來轉換,非常的方便。

Wireshark無法作到的事

1.Wireshark不是入侵偵測系統,當網路上有人對你作出不合法的行為時Wireshark並不會因此而發出警告。但是如果有異常情況發生時,Wireshark可以幫助你找出問題的所在。

2.Wireshark不會竄改網路上的資訊,只會將這些資訊擷取下來。Wireshark也不會在網路上傳送封包或其他主動的動作(除了轉換名稱之外,但此功能可以取消)。

總結

使用Wireshark的介面來觀察網路封包的情形,大大降低了操作上的難度,而且支援各種常見的格式,更可以在多種作業系統上執行,更因為開放原始碼的關係,更新網路協定的支援相當迅速。網路封包分析工具是網管人員甚至從事軟體產業的人員必學的工具之一。

從網路封包的觀察當中,讓我們了解到使用明碼的危險,因為我們目前所使用的區域網路大部份為乙太網路,使用廣播(Broadcast)技術為基礎,很容易透過sniffer軟體將別人的封包擷取下來,基至取得別人的隱私內容。所以使用SSL或https等方式將封包內容編碼已經被廣泛的運用,各種加密機制的發展也越來越蓬勃。

參考資料
1.WinPcap
2.TCPDUMP
3.CaptureFilters
4.NetworkMedia
5.Wireshark User's Guide
6.Wireshark 介紹
7.網路安全理論與實務,2008年9月,楊中皇