Wireshark 分析操作介紹——Wireshark 新手教程(4)
1. Wireshark 分析操作
Wireshark 的強大之處在于它不僅能捕獲數(shù)據(jù)包,還能對捕獲的數(shù)據(jù)進行進一步的分析。具體來說,對pcap包的分析可以分為:
過濾功能——輸入過濾規(guī)則,并顯示符合規(guī)則的分組
統(tǒng)計功能——對所有/部分數(shù)據(jù)包的情況進行總覽
分析功能——將某些字段作為過濾器應用&啟用/停用某些協(xié)議
查找功能——在所有/部分數(shù)據(jù)包中查找特定值
查看功能——查看字段/分組/會話的字節(jié)流
1.1 過濾功能
顯示過濾器
顯示過濾器是 Wirshark 最強大的分析工具之一,可以輸入規(guī)則過濾出符合規(guī)則的分組,并顯示在分組列表中。配合其他功能可以達成 1+1>2 的效果。
Wireshark 的顯示過濾規(guī)則由三要素組成:
字段名稱 - 關系 -?值
其中字段名是必須項。
字段可以指定偏移范圍。打開顯示過濾器表達式窗口,可以看到 Wireshark 支持的各種字段和邏輯關系:

????????上圖中,顯示過濾器支持的邏輯關系符號含義總結如下:

每次打開表達式窗口選擇字段過于麻煩,更好的方法是直接在顯示過濾器欄中輸入:

顯示過濾器欄的顏色提示規(guī)則語法的正確程度:
綠色表示語法正確,可以應用;
黃色表示語法有歧義,但可以應用;
紅色表示語法有問題,且無法應用??刹榭醋笙陆堑腻e誤原因:

點擊顯示的字段,狀態(tài)欄會顯示這個字段的名稱。
如果懶得輸入字段名,可以直接在分組詳情中右鍵字段 - 作為過濾器應用 - 選中:

若選中欄為灰色不可選狀態(tài),點擊其他區(qū)域后再次選中就行。
這里列出了一些常用的顯示過濾規(guī)則作為參考:


常用的規(guī)則,可以直接添加到顯示過濾器書簽中。之后就無須輸入,直接選擇即可。

1.2 統(tǒng)計
會話/對話統(tǒng)計
拿到一個pcap包,不管對其中的數(shù)據(jù)是陌生還是熟悉,推薦的第一步操作是打開統(tǒng)計功能,查看數(shù)據(jù)包整體的會話情況。點擊統(tǒng)計 - 會話打開會話統(tǒng)計窗口:

會話統(tǒng)計窗口的頂部顯示不同層級和協(xié)議的會話數(shù)量,在這個數(shù)據(jù)包中可以看到 TCP 流有16條而 UDP 流有14條。對比會話數(shù)量可以得到數(shù)據(jù)包的 IPv4/IPv6 占比和 TCP/UDP 協(xié)議占比情況。
點擊TCP可以查看所有TCP流的各種字段,如源IP、源端口、目的IP、目的端口、分組數(shù)量、會話流量、單向的分組數(shù)量和流量、會話開始時間、會話持續(xù)時間等等。
會話默認按照 Address A 字段升序排列,Port A 默認大于 Port B。如果要按照某個字段大小升序或降序排列,點擊該字段即可。

考慮到抓包時手機操作系統(tǒng)、推送、輸入法等服務會產(chǎn)生大量雜質流量,可以在顯示過濾器欄里輸入規(guī)則,點擊回車后分組列表里會只顯示符合規(guī)則的分組。
上述會話統(tǒng)計窗口內可以看到4480端口的流量比較大,我們可以只過濾端口為4480的兩條流。右鍵第一條流 - 作為過濾器應用 - 選中 - A?B,可以看到顯示過濾器欄中生成的規(guī)則。

顯示過濾規(guī)則生效以后,在會話統(tǒng)計窗口內選中【顯示過濾器的限制】,此時只會統(tǒng)計顯示的分組的會話信息:

IO?圖表
IO圖表可顯示數(shù)據(jù)的的bps (每秒比特數(shù)) 和pps (每秒數(shù)據(jù)包數(shù)),可用來觀察pcap包的所有分組或某些特定分組的流量變化。
點擊統(tǒng)計-IO圖表,調出IO圖表,可以觀察每秒分組數(shù)量的圖形化展示界面。雙擊Y Axis選項,可以調整Y軸的單位為packets、Bytes或Bits。

流媒體的會話一般呈現(xiàn)開始時pps較高,中間和末尾pps穩(wěn)定的特點。
1.3 分析
專家信息
與會話功能類似,專家信息同樣可以總覽整個pcap包。選擇分析 - 專家信息,可調出專家信息窗口:

類型字段有錯誤、警告、注意、對話四類,標識問題的嚴重程度:
1)? 錯誤:標識數(shù)據(jù)包的錯誤,或者解析器解析錯誤。
2)? 警告:非正常通信的異常數(shù)據(jù)包。
3)? 注意:正常通信過程中的異常數(shù)據(jù)包。
4)? 對話:關于正常通信的基本信息。
概述字段可反映問題的具體內容,比如重傳、中斷、丟失、亂序等問題。
分組字段有Malformed、Security、Protocol、Sequence等,標識問題的具體類型。
一般來說,錯誤和警告可反映故障的原因,注意和對話可以輔助分析。
啟用的協(xié)議
Wireshark 支持上千種協(xié)議,有些冷門的協(xié)議并非我們所需要的。同時 Wireshark 并非萬能,有時可以確定是某種協(xié)議,Wireshark 卻沒解析出來。這時候可以查看一下協(xié)議是否被啟用。
選擇分析 - 啟用的協(xié)議,可打開啟用協(xié)議窗口,并啟用/停用特定的協(xié)議:

重新載入 Lua 插件等功能,由于并非是本教程所涉及到的操作,所以暫且略過。之后有機會再講講如何寫 Lua 腳本。
1.4 查找功能
查找
快捷鍵?Ctrl+F?可調出查找欄,可高效率地分組列表中顯示的所有分組內是否有特定值。

要在分組字節(jié)流中查找字符串或者16進制值,需要先選擇字符串選項,此時搜索區(qū)域選項從不可選變?yōu)榭蛇x,然后選擇分組字節(jié)流選項。

直接在搜索框輸入值,點擊查找即可。再次點擊會跳轉至下一個含有搜索值的分組。

若數(shù)據(jù)包中不包含該字符串,底部的狀態(tài)工具欄會顯示黃色閃爍:

1.5?查看功能
追蹤流
選中某一幀,右鍵 - 追蹤流 - TCP流,可以調出追蹤TCP流窗口,顯示這條流的所有報文的字節(jié)流。

上行流為紅色,下行流為藍色??梢栽谙吕藛沃羞x擇同時顯示上下行,或只選擇單向流。
支持以ASCII碼、原始16進制、Hex轉儲等編碼方式顯示數(shù)據(jù)。
可以使用查找欄查找關鍵的值,選擇顯示原始數(shù)據(jù)時可查找16進制值,顯示ASCII碼時可查找字符串類型值。

顯示分組字節(jié)
右鍵特定字段,選擇導出分組字節(jié),可調出分組字節(jié)窗口。
“顯示為”?選項可選擇編碼方式,可以根據(jù)需求選擇,然后導出該字段的所有字節(jié)。明文數(shù)據(jù)可以導出ASCII碼。部分壓縮文件可導出原始數(shù)據(jù)。

2.?總結
本篇較詳細地介紹了 Wireshark 各種常見的分析操作。下一篇將對數(shù)據(jù)包進行實戰(zhàn)分析,看看市面上常見的APP和 BiliBili 在傳輸些什么數(shù)據(jù)內容,我們又能解析出什么有價值的信息。這些價值信息包括了通訊錄、賬號密碼、設備經(jīng)緯度、手機號,甚至是聊天記錄,但不一定是明文。Wireshark不適合用來解密,所以在下一篇,我們就能體會到這款軟件的能力邊界在哪里。