【保姆級教學】抓包工具Wireshark使用教學

2023-06-13 18:01:13

wireshark介紹

今天講一下另一款底層抓包軟體,之前寫過兩篇抓包軟體
分別是

  1. fiddler抓包【https://www.cnblogs.com/zichliang/p/16067941.html】
  2. mitmdump抓包【https://www.cnblogs.com/zichliang/p/16067941.html】
    Wireshark (前身 Ethereal) 是一個網路包分析工具該工具主要是用來捕獲網路封包,並自動解析封包為使用者顯示封包的詳細資訊,供使用者對封包進行分析
    當然wireshark更多的偏向於硬體底層多一點。偏向於底層介面抓包。
    wireshark可以通過過濾器可以篩選出想要分析的內容。包括按照協定過濾、埠和主機名過濾、封包內容過濾。
    那常見的協定過濾是哪幾種呢?

常見協定包抓取

  • ARP協定
  • ICMP協定
  • TCP協定
  • UDP協定
  • DNS協定
  • HTTP協定

WireShark應用

  1. 網路管理員會使用wireshark來檢查網路問題
  2. 網路安全工程師 使用Wireshark 來檢查資訊安全相關問題
  3. 軟體測試工程師使用wireshark抓包,來分析自己測試的軟體
  4. 開發人員 使用Wireshark來為新的通訊協定除錯
  5. 從事socket程式設計的工程師會用wireshark來偵錯
  6. 普通使用 使用Wireshark 來學習網路協定的相關知識
  7. 還可以抓一些敏感資訊....

下載及安裝

Kali Linux系統自帶 Wireshark 工具,而windows 需要手動安裝wireshark
下面貼上下載官網:
https://www.wireshark.org/download.html
下載完之後一直點下一步安裝即可。

wireshark的介面介紹

首先安裝完了之後,我們開啟抓包軟體

可以看到有很多的網路介面,那我們應該如何選擇呢?
win+r =====> cmd ====> ipconfig


選擇我們現在正在上網的網路卡
這裡用的wifi 就直接抓wlan這個網路卡了。
直接滑鼠雙擊點進去

可以看到有很多的封包

整體來說,介面主要分為以下幾部分:
選單欄:Wireshark的標準選單欄。
工具列:常用功能的快捷圖示按鈕,提供快速存取選單中經常用到的專案的功能。
過濾器:提供處理當前顯示過濾得方法。
Packet List面板:顯示每個資料框的摘要。這裡採用表格的形式列出了當前捕獲檔案中的所有封包,其中包括了封包序號、封包捕獲的相對時間、封包的源地址和目標地址、封包的協定以及在封包中找到的概況資訊等。
Packet Details面板:分析封包的詳細資訊。這個面板分層次地顯示了一個封包中的內容,並且可以通過展開或是收縮來顯示這個封包中所捕獲的全部內容。
Packet Bytes面板:以十六進位制和ASCII碼的形式顯示封包的內容。這裡顯 示了一個封包未經處理的原始樣子,也就是在鏈路上傳播時的樣子。
狀態列:包含有專家資訊、註釋、包的數量和Profile。

在此之前瞭解下抓包的兩種模式。

混雜模式與普通模式




不勾選就是普通模式
那什麼是混雜模式 和普通模式呢?

  • 混雜模式: 混雜模式就是接收所有經過網路卡的封包,包括不是發給本機的包,即不驗證MAC地址
  • 普通模式: 普通模式下網路卡只接收發給本機的包 (包括廣播包)傳遞給上層程式,其它的包一律丟棄

一般來說,混雜模式不會影響網路卡的正常工作,多在網路監聽工具上使用

選單欄

檔案:開啟檔案集、儲存包、匯出HTTP物件
編輯:清除所有標記的包、忽略包和時間屬性
檢視:檢視/隱藏工具列和麵板、編輯Time列、重設顏色
跳轉:跳轉到某個設定好的分組列表
捕獲:用於設定模式和開始與停止
分析:建立顯示過濾器宏、檢視啟用協定、儲存關注解碼
統計:建立圖表並開啟各種協定統計視窗
電話:執行所有語音功能(圖表、圖形、回放)
無線:用於設定無線藍芽等抓包的功能
工具:根據包內容構建防火牆規則、存取Lua指令碼工具
幫助:學習wireshark全球儲存和個人組態檔

工具列


從左至右

  • 開始捕獲
  • 停止捕獲
  • 重新開始當前捕獲
  • 捕獲選項
  • 開啟已儲存的捕獲檔案
  • 儲存捕獲檔案
  • 關閉捕獲檔案
  • 過載捕獲檔案
  • 查詢一個分組
  • 轉到前一個文組
  • 轉到後一個分組
  • 轉到特定分組
  • 轉到首個分組
  • 轉到最新分組
  • 在實時捕獲時,自動捲動螢幕到最新的分組.
  • 放大主視窗文字
  • 收縮主視窗文字
  • 使主視窗文字迴歸正常大小
  • 調整分組列表以適應內容

過濾器


當用戶面向大量需要處理的資料時,可以通過使用顯示過濾器快速的過濾自己需要的資料。
下文會詳細介紹,搜尋即可過濾。

Packet List面板


No. :包的編號 ————————————預設wireshark是按照封包編號從低到高排序,該編號不會發生改變,即使使用了過濾也同樣如此
Time:包的時間戳。時間格式可以自己設定
Source 和Destination :包的源地址和目的地址
Protocol:包的協定型別
Length:包的長度
Info:包的附加資訊

右擊還有其他的一些設定

packet details


在封包列表中選擇指定封包,在封包詳細資訊中會顯示封包的所有詳細資訊內容。封包詳細資訊面板是最重要的,用來檢視協定中的每一個欄位。各行資訊分別為
(1)Frame: 物理層的資料框概況
(2)Ethernet II: 資料鏈路層乙太網幀頭部資訊
(3)Internet Protocol Version 4: 網際網路層IP包頭部資訊
.... (這裡點點點表示 不同的包所展示的是不同的內容)
分層的顯示了一個封包中的內容,並且可以通過展開或者收縮來顯示這個封包中所捕獲的全部內容
還可以看到一些詳細資訊。

packet bytes


這個板塊 分為兩部分 左邊這部分是16進位制的資料,右邊是ASCII格式

當在packet details面板中選擇任意一個欄位後,在packet bytes面板中包含該欄位的位元組也高亮顯示

最底層狀態列


分為一些雜項和位址列。個人感覺作用不大。

過濾器的使用。

剛剛點選了停止抓包 要是重新開啟抓包點選左上角這個按鈕

如果想儲存就點選第一個,一般做測試都是不儲存的。
然後就可以重新開始抓包了。

然後就正式開始過濾抓包了,我們想抓http相關的包====> 直接輸入http或者tcp


可能這樣顯得不太直觀。

舉個三次握手四次揮手的例子。
當輸入 tcp.flags.ack == 0 即代表底層握手(連結成功)
當輸入 tcp.flags.syn == 1 即代表底層握手(資料傳送成功)
不懂的可以自己去百度什麼是三次握手四次揮手。

所抓到也都是底層連結成功和傳送成功的包。


當然 命令和命令之間也可以通過and 或者or來完成與或非的關係。


即使講到了連結和傳送的命令 再講一下傳送成功結束的命令tcp.flags.fin==1

其中展示了本機向此伺服器傳送成功的封包
之前所講到的所有協定包 都可以在這裡過濾,比如 udp,http,tcp 等等等

IP過濾

剛剛講了可以通過協定過濾 那我們再抓取網站資料的時候能不能通過IP過濾呢。
搜下我們本地傳送了那些包
ip.src_host==192.168.2.51

可以清楚的看到source來源就都是我們的主機了
搜下目標地址是百度的包 百度的IP地址是180.101.50.188
ip.dst_host == 180.101.50.188

還有一個命令 ip.addr 代表著 只有IP是xxx 就全部顯現出來,不管是接收 還是傳送

wireshark解析ARP協定

在瞭解使用wireshark分析arp協定之前,我們先來了解下,什麼是是arp協定?

通俗點說,在區域網中通訊時使用的是MAC地址,而不是常見的IP地址。
所以在區域網的兩臺主機間通訊時,必須要知道對方的MAC地址,這就是ARP協定要做的事:將IP地址轉換為MAC地址。

光看這個講arp可能太籠統了,我們肯定之前聽過一個名稱——arp欺騙,那什麼是arp欺騙呢?

ARP攻擊就是通過偽造IP地址和MAC地址實現ARP欺騙,能夠在網路中產生大量的ARP通訊量,
攻擊者只要持續不斷的發出偽造的ARP響應包就能更改目標主機ARP快取中的IP-MAC條目,造成網路中斷或中間人攻擊。
當區域網中一臺機器,反覆向其他機器,特別是向閘道器,傳送這樣無效假冒的ARP應答資訊包時,嚴重的網路堵塞就會開始。
由於閘道器MAC地址錯誤,所以從網路中計算機發來的資料無法正常發到閘道器,自然無法正常上網。這就造成了無法存取外網的問題,
由於很多時候閘道器還控制著我們的區域網LAN上網,所以這時我們的LAN存取也就出現問題了

這裡也介紹完了
我們先來抓下arp的包 ,直接在過濾器中搜尋ARP,並且隨意開啟一個包

  • Hardware type(網路卡型別):乙太網(Ethernet)是1。我們常見的網路都是乙太網
  • Protocol type:查詢中提供的網路地址的型別,IPv4是0x0800。
  • Harware size:網路卡地址長度,乙太網網路卡是6位元組。
  • Protocol size:查詢中提供的網路地址的的長度,IPv4是4位元組。
  • Opcode:查詢包值為1,響應包值為2。
  • Sender MAC address:傳送者的Mac地址。
  • Sender IP address:傳送者的IP地址。
  • Target MAC address:接收者的Mac地址,指向性查詢包是MAC地址表中記錄的mac,廣播性查詢包是00:00:00:00:00:00。(注意區分ARP頭和Eth頭,指向性查詢包Eth頭的dst mac是MAC地址表中記錄的mac,而廣播性查詢包是ff:ff:ff:ff:ff:ff)。
  • Target protocol address:要查詢目標的mac地址的ip。

再來看一下回復包

故: 由一個request 和一個reply 組成的一組arp包,有請求有回覆組成的arp響應。

WireShark解析ICMP協定

使用Ping命令用來測試網路的可達性。從而接受ICMP的報文包
首先我們ping下自己的閘道器

然後找下wireshark中剛剛抓到的包

重點看下ICMP裡面的內容

type:報文型別,8代表請求,0代表應答;
code:為0,表示為回顯應答成功;
checksum:表示認證這個ICMP報文是否被篡改過。校驗完整性。
checksum Status: 表示校驗的結果,Good代表沒問題。
identifier:表示識別符號ID
Sequence Number: 表示序列號
Data: 具體傳送到封包,當然肯定是通過加密的。

這是請求資料,還有一組回覆資料

可以看到。標示符和序列號都是一樣的

wireshark 解析TCP協定

即兩臺電腦或者是兩臺機器之間的相互連結>>>中間會經歷一個三次握手 四次揮手的過程。

TCP 三次握手

如下圖所示是示意圖>>>

我們隨意開啟一個網頁:百度 IP是180.101.50.188

如上圖所示 有syn的tcp連結包

然後我們來看下TCP協定的具體的內容

封包資訊:

  1. Frame: 物理層的資料框概況
  2. Ethernet II: 資料鏈路層乙太網幀頭部資訊
  3. Internet Protocol Version 4: 網路層IP包頭部資訊
  4. Transmission Control Protocol: 傳輸層TCP資料段頭部資訊

傳輸層TCP資料段資訊

  1. 源埠:source Port: 44922
  2. 目的埠:Destination Port: 19999
  3. 序號:sequence Number: o
  4. 確認號:Acknowledgment number: o
  5. 報頭長度:Header Length: 4o bytes
  6. 標誌位:Flags: ox002 (SYN)
  7. 校驗和:Checksum: oxac81

當然這麼看肯定不太直觀,還要結合這回復包去看每一條資訊。所以我們可以開啟流封包來檢視tcp協定報文


選擇限制顯示過濾器 選擇百度的地址

這樣看起來就非常的直觀了。

TCP斷開連結 四次揮手

既然有連結,肯定就有斷開連結 天下無不散之筵席嘛,不可能一直互相連線的。
而斷開連結則有另一個名詞—— 四次揮手

和三次握手一樣,我們直接關閉百度這個網站,
然後去wireshark中搜尋180.101.50.242這個ip(由於百度的地址會改變,我們需要實時檢視下百度的ip)

首先就會發起
第一步:使用者端打算斷開連線
第二步:伺服器收到連線釋放報文段(FIN報文)後,就向用戶端傳送ACK應答報文
第三步:伺服器也打算斷開連線,向用戶端傳送連線釋放(FIN)報文段
第四步:使用者端收到來自伺服器的連線釋放(FIN)報文段後,會向伺服器傳送一個ACK應答報文段,以連線釋放(FIN)報文段的確認序號 ack 作為ACK應答報文段的序列號 seq,以連線釋放(FIN)報文段的序列號 seq+1作為確認序號ack。

wireShark 解析HTTP協定

http的底層本質上還是TCP協定。
話不多說,直接請求百度地址。
這裡百度地址不是www.baidu地址

然後開啟抓包軟體 搜尋tcp

還可以檢視具體資訊

總結

總的來說,WireShark非常強大,不僅可以抓各種包,還能對區域網的某些資料進行監控抓包分析。非常強大。
不過要慎用。