Wireshark是使用最廣泛的一款「開源抓包軟件」,常用來檢測網絡問題、攻擊溯源、或者分析底層通信機制。
它使用WinPCAP作為接口,直接與網卡進行數據報文交換。
Wireshark使用的環境大致分為兩種,一種是電腦直連互聯網的單機環境,另外一種就是應用比較多的互聯網環境,也就是連接交換機的情況。
「單機情況」下,Wireshark直接抓取本機網卡的網絡流量;
「交換機情況」下,Wireshark通過端口鏡像、ARP欺騙等方式獲取局域網中的網絡流量。
端口鏡像:利用交換機的接口,將局域網的網絡流量轉發到指定電腦的網卡上。
ARP欺騙:交換機根據MAC地址轉發數據,偽裝其他終端的MAC地址,從而獲取局域網的網絡流量。
安裝完成后,我們學習一下快速抓包。
1. 選擇網卡
打開 Wireshark 后,會直接進入「網卡選擇界面」,WLAN 是我連接無線的網卡,我們抓一下這個網卡的流量,雙擊網卡名,自動開始抓包。
2. 停止抓包
點擊左上角的「紅色按鈕」,可以停止抓包
3. 保存數據
點擊右上角的「文件」,選擇「保存」,可以保存抓包的數據
也可以直接點擊工具欄的保存按鈕
[圖片上傳中...(image-37b27-1684818872795-16)]
Wireshark 的主界面包含6個部分:
菜單欄:用于調試、配置
工具欄:常用功能的快捷方式
過濾欄:指定過濾條件,過濾數據包
數據包列表:核心區域,每一行就是一個數據包
數據包詳情:數據包的詳細數據
數據包字節:數據包對應的字節流,二進制
接下來,我們學習一下Wireshark常用的操作。
1. 調整界面大小
工具欄中的三個「放大鏡」圖標,可以調整主界面數據的大小。
從左到右依次是:放大、縮小、還原默認大小。
2. 設置顯示列
數據包列表是最常用的模塊之一,列表中有一些默認顯示的列,我們可以添加、刪除、修改顯示的列。
1)添加顯示列
想要在數據列表中顯示某一個字段,可以將這個數據字段添加至顯示列中。
左鍵選中想要添加為列的字段,右鍵選擇「應用為列」。
選中字段,按 Ctrl + Shift + I ,也可以實現同樣的效果。
添加為列的字段會在數據列表中顯示。
2)隱藏顯示列
暫時不想查看的列,可以暫時隱藏起來。
在顯示列的任意位置右鍵,取消列名的「勾選」,即可隱藏顯示列。
3)刪除顯示列
不需要查看的字段,可以從顯示列中刪除。
右鍵需要刪除的列,點擊最下方的「Remove this Column」 。
注意:隱藏字段時,在列名欄的任意位置右鍵即可;而刪除字段時,需要在指定的列名位置右鍵,以防誤刪。
3. 設置時間
數據包列表欄的時間這一列,默認顯示格式看起來很不方便,我們可以調整時間的顯示格式。
點擊工具欄的「視圖」,選擇「時間顯示格式」,設置你喜歡的格式。
4. 標記數據包
對于某些比較重要的數據包,可以設置成高亮顯示,以達到標記的目的。
選中需要標記的數據包,右鍵選擇最上面的「標記/取消標記」。
選中數據包,按 Ctrl + M 也可以實現同樣的效果,按兩次可以取消標記。
5. 導出數據包
演示快速抓包時,我們講過保存數據包的操作,保存操作默認保存所有已經抓取的數據包。但有時候,我們只需要保存指定的數據包,這時候可以使用導出的功能。
1)導出單個數據包
選中數據包,點擊左上角的「文件」,點擊「導出特定分組」。
在「導出分組界面」,選擇第二個 「Selected packets only」,只保存選中的數據包。
2)導出多個數據包
有時候我們需要導出多個數據包,Wireshark有一個導出標記的數據包的功能,我們將需要導出的數據包都標記起來,就可以同時導出多個數據包。
點擊左上角的「文件」,點擊「導出特定分組」。
在「導出分組界面」,勾選第三個 「Marked packets only」,只導出標記的數據包。
6. 開啟混雜模式
局域網的所有流量都會發送給我們的電腦,默認情況下,我們的電腦只會對自己mac的流量進行解包,而丟棄其他mac的數據包。
開啟混雜模式后,我們就可以解析其他mac的數據包,因此,我們使用Wireshark時,通常都會開啟混雜模式。
點擊菜單欄的「捕獲」按鈕,點擊「選項」。
勾選 在所有接口上使用混雜模式。
過濾器是Wireshark的核心功能,也是我們平時使用最多的一個功能。
Wireshark提供了兩個過濾器:抓包過濾器 和 顯示過濾器。兩個過濾器的過濾思路不同。
抓包過濾器:重點在動作,需要的包我才抓,不需要的我就不抓。
顯示過濾器:重點在數據的展示,包已經抓了,只是不顯示出來。
1. 抓包過濾器
抓包過濾器在抓包前使用,它的過濾有一個基本的語法格式:BPF語法格式。
1)BPF語法
BPF(全稱 Berkeley Packet Filter),中文叫伯克利封包過濾器,它有四個核心元素:類型、方向、協議 和 邏輯運算符。
類型Type:主機(host)、網段(net)、端口(port)
方向Dir:源地址(src)、目標地址(dst)
協議Proto:各種網絡協議,比如:tcp、udp、http
邏輯運算符:與( && )、或( || )、非( !)
四個元素可以自由組合,比如:
src host 192.168.31.1:抓取源IP為 192.168.31.1 的數據包
tcp || udp:抓取 TCP 或者 UDP 協議的數據包
2)使用方式
使用抓包過濾器時,需要先停止抓包,設置完過濾規則后,再開始抓包。
停止抓包的前提下,點擊工具欄的捕獲按鈕,點擊選項。
在彈出的捕獲選項界面,最下方的輸入框中輸入過濾語句,點擊開始即可抓包。
[圖片上傳中...(image-b54f9b-1684818872794-1)]
提示:抓包過濾器的輸入框,會自動檢測語法,綠色代表語法正確,紅色代表語法錯誤。
2. 顯示過濾器
顯示過濾器在抓包后或者抓包的過程中使用。
1)語法結構
顯示過濾器的語法包含5個核心元素:IP、端口、協議、比較運算符和邏輯運算符。
IP地址:ip.addr、ip.src、ip.dst
端口:tcp.port、tcp.srcport、tcp.dstport
協議:tcp、udp、http
比較運算符:> < == >= <= !=
邏輯運算符:and、or、not、xor(有且僅有一個條件被滿足)
5個核心元素可以自由組合,比如:
ip.addr == 192.168.32.121:顯示IP地址為 192.168.32.121 的數據包
tcp.port == 80 :顯示端口為 80 的數據包
2)使用方式
在過濾欄輸入過濾語句,修改后立即生效。
[圖片上傳中...(image-ff6004-1684818872794-0)]
提示:過濾欄有自動糾錯功能,綠色表示語法正確,紅色表示語法錯誤。