wireshark抓包新手使用教程

@榴蓮酥發表於2020-12-03

wireshark抓包新手使用教程

  Wireshark是非常流行的網路封包分析軟體,可以擷取各種網路資料包,並顯示資料包詳細資訊。常用於開發測試過程各種問題定位。本文主要內容包括:

  1、Wireshark軟體下載和安裝以及Wireshark主介面介紹。

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

  3、Wireshark過濾器使用。過濾器包含兩種型別,一種是抓包過濾器,就是抓取前設定過濾規則。另外一種是顯示過濾器,就是在資料包分析時進行過濾資料使用。通過過濾器可以篩選出想要分析的內容。包括按照協議過濾、埠和主機名過濾、資料包內容過濾。具體規則和例項可以檢視正文。

Wireshark軟體安裝

  軟體下載路徑:wireshark官網。按照系統版本選擇下載,下載完成後,按照軟體提示一路Next安裝。

  說明:如果你是Win10系統,安裝完成後,選擇抓包但是不顯示網路卡,下載win10pcap相容性安裝包。下載路徑:win10pcap相容性安裝包

Wireshark 開始抓包示例

   先介紹一個使用wireshark工具抓取ping命令操作的示例,讓讀者可以先上手操作感受一下抓包的具體過程。

  1、開啟wireshark 2.6.5,主介面如下:

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

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

  4、執行需要抓包的操作,如在cmd視窗下執行ping www.baidu.com。

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

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

Wireshakr抓包介面介紹

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

WireShark 主要分為這幾個介面

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

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

  3. 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協議

TCP包的具體內容

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

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

Wireshark過濾器設定

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

(1)抓包過濾器

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

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

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

(2)顯示過濾器

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

執行ping www.huawei.com獲取的資料包列表如下

觀察上述獲取的資料包列表,含有大量的無效資料。這時可以通過設定顯示器過濾條件進行提取分析資訊。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模式過濾

  http.request.method=="GET",   只顯示HTTP GET方法的。

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

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

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

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

選中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連線建立,開始通訊。

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

    Step1:啟動wireshark抓包,開啟瀏覽器輸入www.huawei.com。

    Step2:使用ping www.huawei.com獲取IP。

    Step3:輸入過濾條件獲取待分析資料包列表 ip.addr == 211.162.2.183

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

第一次握手資料包

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

資料包的關鍵屬性如下:

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

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

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

第二次握手的資料包

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

 資料包的關鍵屬性如下:

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

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

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

第三次握手的資料包

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

資料包的關鍵屬性如下:

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

  Seq = 1 :表示當前已經傳送1個資料

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

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

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

資料包的關鍵屬性說明

  Seq: 1

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

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

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

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

Wireshark分析常用操作

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

參考文件

(1)https://www.cnblogs.com/linyfeng/p/9496126.html

相關文章