Wireshark 的抓包和分析,看這篇就夠了!

來自:開源Linux

Wireshark 的抓包和分析,看這篇就夠了!

WireShark是一個網路封包分析軟體。網路封包分析軟體的功能是擷取網路封包,並儘可能顯示出最為詳細的網路封包資料。Wireshark使用WinPCAP作為介面,直接與網絡卡進行資料報文交換。在網路封包和流量分析領域有著十分強大功能的工具,深受各類網路工程師和網路分析師的喜愛。

本文主要內容包括:

1、Wireshark主介面介紹。

2、WireShark簡單抓包示例。透過該例子學會怎麼抓包以及如何簡單檢視分析資料包內容。

3、Wireshark過濾器使用。透過過濾器可以篩選出想要分析的內容。包括按照協議過濾、埠和主機名過濾、資料包內容過濾。

我們首先來介紹一下Wireshark這款軟體。

首先我們先認識一下這個軟體的主介面是長這樣的

Wireshark 的抓包和分析,看這篇就夠了!

在這個介面中為Wireshark的主介面

選擇選單欄上Capture -> Option,勾選WLAN網絡卡(這裡需要根據各自電腦網絡卡使用情況選擇,簡單的辦法可以看使用的IP對應的網絡卡)。點選Start。啟動抓包。

Wireshark 的抓包和分析,看這篇就夠了!

wireshark啟動後,wireshark處於抓包狀態中。

2、操作完成後相關資料包就抓取到了。為避免其他無用的資料包影響分析,可以透過在過濾欄設定過濾條件進行資料包列表過濾,獲取結果如下。說明:ip。addr == 119。75。217。26 and icmp 表示只顯示ICPM協議且源主機IP或者目的主機IP為119。75。217。26的資料包。

Wireshark 的抓包和分析,看這篇就夠了!

3、wireshark抓包完成,就這麼簡單。關於wireshark過濾條件和如何檢視資料包中的詳細內容在後面介紹。

Wireshakr抓包介面

Wireshark 的抓包和分析,看這篇就夠了!

說明:資料包列表區中不同的協議使用了不同的顏色區分。協議顏色標識定位在選單欄View ——> Coloring Rules。如下所示

Wireshark 的抓包和分析,看這篇就夠了!

WireShark 主要分為這幾個介面

Display Filter(顯示過濾器), 用於設定過濾條件進行資料包列表過濾。選單路徑:Analyze ——> Display Filters。

Packet List Pane(資料包列表), 顯示捕獲到的資料包,每個資料包包含編號,時間戳,源地址,目標地址,協議,長度,以及資料包資訊。不同協議的資料包使用了不同的顏色區分顯示。

Packet Details Pane(資料包詳細資訊), 在資料包列表中選擇指定資料包,在資料包詳細資訊中會顯示資料包的所有詳細資訊內容。資料包詳細資訊面板是最重要的,用來檢視協議中的每一個欄位。各行資訊分別為

(1)Frame:   物理層的資料幀概況

(2)Ethernet II: 資料鏈路層乙太網幀頭部資訊

(3)Internet Protocol Version 4: 網際網路層IP包頭部資訊

(4)Transmission Control Protocol:  傳輸層T的資料段頭部資訊,此處是TCP

(5)Hypertext Transfer Protocol:  應用層的資訊,此處是HTTP協議

Wireshark 的抓包和分析,看這篇就夠了!

TCP包的具體內容

從下圖可以看到wireshark捕獲到的TCP包中的每個欄位。

Wireshark 的抓包和分析,看這篇就夠了!

Dissector Pane(資料包位元組區)。

Wireshark過濾器設定

初學者使用wireshark時,將會得到大量的冗餘資料包列表,以至於很難找到自己自己抓取的資料包部分。wireshar工具中自帶了兩種型別的過濾器,學會使用這兩種過濾器會幫助我們在大量的資料中迅速找到我們需要的資訊。

(1)抓包過濾器

捕獲過濾器的選單欄路徑為Capture ——> Capture Filters。用於在抓取資料包前設定。

Wireshark 的抓包和分析,看這篇就夠了!

如何使用?可以在抓取資料包前設定如下。

Wireshark 的抓包和分析,看這篇就夠了!

ip host 60。207。246。216 and icmp表示只捕獲主機IP為60。207。246。216的ICMP資料包。獲取結果如下:

(2)顯示過濾器

顯示過濾器是用於在抓取資料包後設置過濾條件進行過濾資料包。通常是在抓取資料包時設定條件相對寬泛,抓取的資料包內容較多時使用顯示過濾器設定條件顧慮以方便分析。同樣上述場景,在捕獲時未設定捕獲規則直接透過網絡卡進行抓取所有資料包,如下

Wireshark 的抓包和分析,看這篇就夠了!

觀察上述獲取的資料包列表,含有大量的無效資料。這時可以透過設定顯示器過濾條件進行提取分析資訊。ip。addr == 211。162。2。183 and icmp。並進行過濾。

上述介紹了抓包過濾器和顯示過濾器的基本使用方法。在組網不復雜或者流量不大情況下,使用顯示器過濾器進行抓包後處理就可以滿足我們使用。下面介紹一下兩者間的語法以及它們的區別。

wireshark過濾器表示式的規則

1、抓包過濾器語法和例項

抓包過濾器型別Type(host、net、port)、方向Dir(src、dst)、協議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運算子(&& 與、|| 或、!非)

(1)協議過濾

比較簡單,直接在抓包過濾框中直接輸入協議名即可。

TCP,只顯示TCP協議的資料包列表

HTTP,只檢視HTTP協議的資料包列表

ICMP,只顯示ICMP協議的資料包列表

(2)IP過濾

host 192。168。1。104

src host 192。168。1。104

dst host 192。168。1。104

(3)埠過濾

port 80

src port 80

dst port 80

(4)邏輯運算子&& 與、|| 或、!非

src host 192。168。1。104 && dst port 80 抓取主機地址為192。168。1。80、目的埠為80的資料包

host 192。168。1。104 || host 192。168。1。102 抓取主機為192。168。1。104或者192。168。1。102的資料包

!broadcast 不抓取廣播資料包

2、顯示過濾器語法和例項

(1)比較運算子

比較運算子有== 等於、!= 不等於、> 大於、< 小於、>= 大於等於、

(2)協議過濾

比較簡單,直接在Filter框中直接輸入協議名即可。注意:協議名稱需要輸入小寫。

tcp,只顯示TCP協議的資料包列表

http,只檢視HTTP協議的資料包列表

icmp,只顯示ICMP協議的資料包列表

(3) ip過濾

ip。src ==192。168。1。104 顯示源地址為192。168。1。104的資料包列表

ip。dst==192。168。1。104, 顯示目標地址為192。168。1。104的資料包列表

ip。addr == 192。168。1。104 顯示源IP地址或目標IP地址為192。168。1。104的資料包列表

(4)埠過濾

tcp。port ==80,  顯示源主機或者目的主機埠為80的資料包列表。

tcp。srcport == 80,  只顯示TCP協議的源主機埠為80的資料包列表。

tcp。dstport == 80,只顯示TCP協議的目的主機埠為80的資料包列表。

(5) Http模式過濾

(6)邏輯運算子為 and/or/not

過濾多個條件組合時,使用and/or。比如獲取IP地址為192。168。1。104的ICMP資料包表示式為ip。addr == 192。168。1。104 and icmp

Wireshark 的抓包和分析,看這篇就夠了!

(7)按照資料包內容過濾。假設我要以IMCP層中的內容進行過濾,可以單擊選中介面中的碼流,在下方進行選中資料。如下

右鍵單擊選中後出現如下介面

Wireshark 的抓包和分析,看這篇就夠了!

選中Select後在過濾器中顯示如下

後面條件表示式就需要自己填寫。如下我想過濾出data資料包中包含“abcd”內容的資料流。包含的關鍵詞是contains 後面跟上內容。

看到這, 基本上對wireshak有了初步瞭解。

Wireshark抓包分析TCP三次握手

(1)TCP三次握手連線建立過程

Step1:客戶端傳送一個SYN=1,ACK=0標誌的資料包給服務端,請求進行連線,這是第一次握手;

Step2:服務端收到請求並且允許連線的話,就會發送一個SYN=1,ACK=1標誌的資料包給傳送端,告訴它,可以通訊了,並且讓客戶端傳送一個確認資料包,這是第二次握手;

Step3:服務端傳送一個SYN=0,ACK=1的資料包給客戶端端,告訴它連線已被確認,這就是第三次握手。TCP連線建立,開始通訊。

Wireshark 的抓包和分析,看這篇就夠了!

(2)wireshark抓包獲取訪問指定服務端資料包

Step3:輸入過濾條件獲取待分析資料包列表 ip。addr == 211。162。2。183

圖中可以看到wireshark截獲到了三次握手的三個資料包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連線的。

第一次握手資料包

客戶端傳送一個TCP,標誌位為SYN,序列號為0, 代表客戶端請求建立連線。如下圖。

Wireshark 的抓包和分析,看這篇就夠了!

資料包的關鍵屬性如下:

SYN :標誌位,表示請求建立連線

Seq = 0 :初始建立連線值為0,資料包的相對序列號從0開始,表示當前還沒有傳送資料

Ack =0:初始建立連線值為0,已經收到包的數量,表示當前沒有接收到資料

第二次握手的資料包

伺服器發回確認包, 標誌位為 SYN,ACK。 將確認序號(Acknowledgement Number)設定為客戶的I S N加1以。即0+1=1, 如下圖

Wireshark 的抓包和分析,看這篇就夠了!

資料包的關鍵屬性如下:

[SYN + ACK]: 標誌位,同意建立連線,並回送SYN+ACK

Seq = 0 :初始建立值為0,表示當前還沒有傳送資料

Ack = 1:表示當前端成功接收的資料位數,雖然客戶端沒有傳送任何有效資料,確認號還是被加1,因為包含SYN或FIN標誌位。(並不會對有效資料的計數產生影響,因為含有SYN或FIN標誌位的包並不攜帶有效資料)

第三次握手的資料包

客戶端再次傳送確認包(ACK) SYN標誌位為0,ACK標誌位為1。並且把伺服器發來ACK的序號欄位+1,放在確定欄位中傳送給對方。並且在資料段放寫ISN的+1, 如下圖:

Wireshark 的抓包和分析,看這篇就夠了!

資料包的關鍵屬性如下:

ACK :標誌位,表示已經收到記錄

Seq = 1 :表示當前已經發送1個數據

Ack = 1 : 表示當前端成功接收的資料位數,雖然服務端沒有傳送任何有效資料,確認號還是被加1,因為包含SYN或FIN標誌位(並不會對有效資料的計數產生影響,因為含有SYN或FIN標誌位的包並不攜帶有效資料)。

就這樣通過了TCP三次握手,建立了連線。開始進行資料互動

Wireshark 的抓包和分析,看這篇就夠了!

下面針對資料互動過程的資料包進行一些說明:

Wireshark 的抓包和分析,看這篇就夠了!

資料包的關鍵屬性說明

Seq: 1

Ack: 1: 說明現在共收到1位元組資料

Wireshark 的抓包和分析,看這篇就夠了!

Seq: 1

Ack: 951: 說明現在服務端共收到951位元組資料

在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG。如下

Wireshark 的抓包和分析,看這篇就夠了!

其中,對於我們日常的分析有用的就是前面的五個欄位。它們的含義是:SYN表示建立連線,FIN表示關閉連線,ACK表示響應,PSH表示有DATA資料傳輸,RST表示連線重置。

Wireshark分析常用操作

調整資料包列表中時間戳顯示格式。調整方法為View ——>Time Display Format ——> Date and Time of Day。調整後格式如下:

這些就是WireShark的常用操作了。

TAG: 資料包過濾192168過濾器