網路抓包工具 wireshark 入門教程(轉)
Wireshark(前稱Ethereal)是一個網路資料包分析軟體。網路資料包分析軟體的功能是擷取網路資料包,並儘可能顯示出最為詳細的網路資料包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。
網路管理員使用Wireshark來檢測網路問題,網路安全工程師使用Wireshark來檢查資訊安全相關問題,開發者使用Wireshark來為新的通訊協定除錯,普通使用者使用Wireshark來學習網路協定的相關知識。當然,有的人也會“居心叵測”的用它來尋找一些敏感資訊……。Wireshark相對於tcpdump而言,介面更友好,功能更強大。
安裝
基本使用
以下的介紹都是以mac下的wireshark 1.12.2版本為基礎。
認識介面
說明:
常用按鈕從左到右的功能依次是:
1、列出可用介面。
2、抓包時需要設定的一些選項。一般會保留最後一次的設定結果。
3、開始新的一次抓包。
4、暫停抓包。
5、繼續進行本次抓包。
6、開啟抓包檔案。可以開啟之前抓包儲存後的檔案。不僅可以開啟wireshark軟體儲存的檔案,也可以開啟tcpdump使用-w引數儲存的檔案。
7、儲存檔案。把本次抓包或者分析的結果進行儲存。
8、關閉開啟的檔案。檔案被關閉後,就會切換到初始介面。
9、過載抓包檔案。
設定資料抓取選項
點選常用按鈕中的設定按鈕,就會彈出設定選項對話方塊。在這個對話方塊中我們可以選中需要監聽的介面,設定混雜模式,設定抓取資料包的過濾條件。如下圖:
首先,選中需要監聽獲取資料包的介面。介面列表區列出了所有可以使用的介面。如果介面前面的複選框被選中,說明對這個介面監聽捕獲資料包。
其次,設定混雜模式。設定混雜模式的作用是將網絡卡設定到混雜模式。如果不設定混雜模式,你的計算機只能獲取資料包發往的目標是你計算機和從你計算機出去的資料包。如果設定了混雜模式,你就可以捕獲區域網中所有的資料包。如果視窗中的 "Use promiscuous mode on all interfaces"前面的複選框被選中,說明對所有的介面使用混雜模式。如果想單獨設定,可以雙擊介面列表中的介面,會彈出如下的對話方塊。然後選中或者去掉“Capture packets in promiscuous mode”前面複選框。然後點ok按鈕。
再次,設定捕獲過濾條件。在點設定按鈕彈出的主設定對話方塊中和雙擊介面列表彈出的對話方塊中都會有“Capture Filter”項。在文字框中我們可以設定捕獲過濾條件。如,我們只捕獲http相關的資料包,我們就可以設定捕獲條件為“port 80”。因為http使用的是80埠。
最後,所有的設定完畢後,點選設定主視窗中的“Start”按鈕,開始捕獲資料。資料捕獲完後,可以點常用按鈕中的“儲存”按鈕儲存資料。
使用顯示過濾器
顯示過濾器應用於捕獲檔案,用來告訴wireshark只顯示那些符合過濾條件的資料包。顯示過濾器比捕獲過濾器更常用。他可以用來過濾不想看到的資料包,但是不會把資料刪除。如果想恢復原狀,只要把過濾條件刪除即可。
過濾器表示式對話方塊,是的wireshark的可以很簡單的設定過濾表示式。點選“Expression”按鈕就可以開啟這個對話方塊。如下圖:
對話方塊分左中右三部分。左邊為可以使用的所有協議域。右邊為和協議域相關的條件值。中間為協議域與條件值之間的關係。過濾器表示式對於初學者很有用。如上圖,我們建立的表示式的作用是,只顯示http協議包中包含關鍵詞“bo56.com”的所有資料包。
Field name說明: 這個列表中展示了所有支援的協議。點選前面的三角標誌後,可以列出本協議的可過濾欄位。當選中“Field name”列表中的任何一項,只需要輸入你想要的協議域,就會自動定位到相應的協議域選項。
Relation說明: is present 如果選擇的協議域存在,則顯示相關資料包。 contains 判斷一個協議,欄位或者分片包含一個值 matches 判斷一個協議或者字串匹配一個給定的Perl表示式。
Value(Protocol)說明: 此處輸入合適的值。如果選擇的協議域和這個值滿足Relation中指定的關係,則顯示相關資料包。
Predefined values說明: 有些協議域包含了預先定義的值,有點類似於c語言中的列舉型別。如果你選擇的協議域包含這樣的值,你可以在這個列表中選擇。
Function函式說明: 過濾器的語言還有下面幾個函式: upper(string-field)-把字串轉換成大寫 lower(string-field)-把字串轉換成小寫 upper((和lower((在處理大小寫敏感的字串比較時很有用。例如: upper(ncp.nds_stream_name) contains "BO56.COM" lower(mount.dump.hostname) =="BO56.COM"
如果你熟悉了這個規則之後你就會發現手動輸入表示式更有效率。當時手動在flter文字框中輸入表達時,如果輸入的語法有問題,文字框的背景色會變成紅色。這時候,你可以繼續輸入或者修改,知道文字框中的表示式正確後,文字框的背景色又會變成綠色。
使用著色規則
你經常會在資料包列表區域中看到不同的顏色。這就是wireshark做的很人性化的一方面。它可以讓你指定條件,把符合條件的資料包按指定的顏色顯示。這樣你查詢資料包會更方便些。下面我們說一下如何設定顏色規則。
點選“view”選單,然後選擇“Coloring Rules”選項就會彈出設定顏色規則設定對話方塊。你點選顏色規則設定的快捷按鈕也可以開啟顏色設定對話方塊。如下圖:
開啟的對話方塊中預設已經有一些規則。我們抓取的資料包中經常會看到一些不同的顏色,就是應用的這些預設的規則。點選“New”按鈕可以新增規則。如下圖:
name欄位中填寫規則的名稱,方便記憶。
string欄位中填寫過濾規則。這裡的語法和顯示規則表示式一致。點選 上圖中的“Expression”按鈕,你就會看到熟悉的規則表示式對話。
Foreground Color按鈕用於選擇前景色。
Background Color按鈕用於選擇背景色。
Disabled按鈕用於指示是否禁用這條規則。
點選ok按鈕後,規則自動會新增到規則列表中的最前端。
注意:wireshark在應用規則的時候,是按自上而下的順序去應用規則。因此剛新增的規則會優先應用。如果你想調整順序,可以選中要調整順序的規則,然後點選右邊的“UP” 或則 “Down” 按鈕。
顏色規則設定好後,只需要點apply按鈕就可以應用規則了。規則效果應用如下圖:
使用圖表
圖形分析是資料分析中必不可少的一部分。也是wireshark的一大亮點。wireshark有不同的圖形展現功能,以幫助你瞭解捕獲的資料包。下面我們對經常使用的IO圖,雙向時間圖做下介紹。
IO圖
wireshark的IO圖讓你可以對網路上的吞吐量繪圖。讓你瞭解網路資料傳輸過程中的峰值和波動情況。通過“Statistics”選單中的“IO Graphs”選項可以開啟這個IO圖對話方塊。如下圖:
可以看到IO圖表對話方塊中會分為三個區。
過濾器區:設定過濾條件,用於圖形化展示過濾條件相關資料包的變化情況。而且可以為每個不同的條件指定不同的顏色。過濾條件的語法和之前介紹的顯示過濾器的語法一致。過濾條件為空,此圖形顯示所有流量。
座標區:在這裡可以設定圖表的x軸和y軸。x軸為時間,y軸為包的數量。如圖,我們設定Y軸的單位是Bytes/Tick。
趨勢圖區:根據過濾器設定的條件和座標區設定,資料分析後回在這個區域以圖形化方式展示。點選圖形中的點,會自動定位到相應的資料包。點選趨勢圖中的低谷點,你會發現大量的資料包重傳。
IO圖表還可以通過函式對資料進行聚合處理。
點選Y軸中Unit選項中的Advanced後,就會再過濾器區就會增加Calc選項。如下圖:
相關函式說明:
MIN( ), AVG( ), MAX( ) 分別是統計協議域中數值的最小,平均和最大值。注意,這三個聚合函式只對協議域的值為數字的才有效。
Count( ) 此函式計算時間間隔內事件發生的次數,在檢視TCP分析識別符號時很有用,例如重傳。
Sum( ) 該函式統計事件的累加值。和MIN()函式一樣,這個也只有協議域的值為數字的情況下才有效。
雙向時間圖
wireshark還有一個功能就是可以對網路傳輸中的雙向時間進行繪圖。雙向時間(round-trip time, RTT),就是一個數據包被確認正常接收所花費的時間。以tcp協議為例,就是你push一個數據到一臺主機,主機迴應一個ack給你的主機,你的主機併成功接收ack迴應。這兩個過程花費的時間總和就是雙向時間。雙向時間通常用來尋找網路傳輸過程中的慢點和瓶頸,用以判斷網路傳輸是否有延遲。
通過“Statistics”選單中的“Tcp StreamGraph”中的“Round Trip Time Graph”選項可以開啟這個雙向時間圖對話方塊。如下圖:
這個圖表中的每個點代表一個數據包的雙向時間。你可以單機圖表中的任何一點,然後在資料包列表區就會自動定位到相應的資料包。從資料表來看,我們下載壓縮包還是比較穩定的。資料包的rtt時間大多數在0.05s以下,其他大多數在0.1s左右,少數超過了1.5s。
跟蹤tcp流
Wireshark分析功能中最不錯的一個功能是它能夠將TCP流重組。重組後的資料格式更容易閱讀。跟蹤TCP流這個功能可以將接收到的資料排好順序使之容易檢視,而不需要一小塊一小塊地看。這在檢視HTTP、FTP等純文字應用層協議時非常有用。
我們以一個簡單的HTTP請求舉例來說明一下。開啟wireshark_bo56_pcap.pcapng,並在顯示過濾器中輸入“http contains wireshark”,點選“apply”按鈕後,在資料包列表框中就會只剩下一條記錄。如下圖。
右鍵單擊這條記錄並選擇Follow TCP Stream。這時TCP流就會在一個單獨的視窗中顯示出來。如下圖:
我們看到這個視窗中的文字會有兩種顏色。其中紅色用於表示從源地址到目標地址的流量。在我們的例子裡面就是從我們本機到web伺服器的流量。你可以看到最開始的紅色部分是一個GET請求。藍色部分是和紅色部分相反的方向,也就是從目標地址到源地址的流量。在我們的例子中,藍色部分的第一行是“HTTP/1.1 200 OK”,是來自伺服器的一個http成功響應。
在這個視窗中除了能夠看到這些原始資料,你還可以在文字間進行搜尋,將其儲存成一個檔案、列印,或者以ASCII碼、EBCDIC、十六進位制或者C陣列的格式去檢視。這些選項都可以在跟蹤TCP流視窗的下面找到。