筆電顯示封包分析介面、放大鏡檢視網路封包並連接網路節點的 Wireshark 教學插畫

Wireshark 封包分析怎麼用?抓包、篩選器與故障排除入門

Wireshark 是開源的網路協定分析器,可以擷取網路介面上的封包、開啟既有的 pcap 或 pcapng 檔案,並把封包拆成可閱讀的協定欄位。它常用於確認 DNS、TCP、HTTP、TLS 等網路行為,協助定位「連不上、很慢、一直重傳」這類問題;它不是自動替你修好網路的工具,也不是看到一個封包就能判定入侵的掃描器。

先說結論:學 Wireshark 最有效的方式,是用一個自己有權管理的網路做短時間擷取,再依序使用顯示篩選器、封包詳細資料、Follow Stream 與 Statistics。擷取檔可能包含帳號、網址、Cookie、內部 IP 或其他個人資料,請先確認授權並妥善保存。

Wireshark 能做什麼?

用途 適合拿來做什麼 不要誤解成
即時擷取 從指定網路介面記錄一小段封包,重現問題當下的流量。 不代表一定能看到網路上所有裝置的流量;擷取位置與介面很重要。
協定解析 把封包拆成 Ethernet、IP、TCP、DNS、HTTP、TLS 等協定欄位。 解析出欄位不等於內容一定是明文,也不等於該封包本身就是惡意。
篩選與搜尋 只查看符合條件的封包,縮小故障排除範圍。 Capture filter 與 display filter 是兩套不同語法,不能混用。
統計與對話 查看協定比例、端點、連線對話、封包數量與流量趨勢。 統計是線索,不會自動替你完成根因分析。

開始前的權限與資料安全

  1. 只擷取你獲得授權的網路:例如自己的電腦、測試環境或經管理者同意的公司網段。不要為了「看看別人的流量」而在陌生網路擷取。
  2. 先做短時間測試:選定問題重現步驟,開始擷取、重現一次、立即停止,再檢查檔案大小與內容。
  3. 確認介面與權限:第一次抓不到封包,先檢查是否選到正在使用的 Ethernet、Wi-Fi、VPN 或虛擬介面,以及作業系統與 Npcap/libpcap 的安裝和權限。Wireshark 的原始網卡存取由擷取元件處理,並不是單純開啟畫面就一定有資料。
  4. 限制分享範圍:pcap/pcapng 不要直接放到公開雲端或貼在論壇。若必須交給他人分析,先移除帳號、Cookie、內部位址與其他敏感欄位,並確認是否仍能重現問題。

Wireshark 官方 FAQ 特別提醒,封包檔可能含有密碼或其他敏感資訊;因此「可以擷取」不代表「可以任意分享」。

從第一次抓包到找到線索

  1. 選擇介面:在 Welcome 畫面觀察哪個介面有封包計數變化。若要排查 VPN 或容器問題,也要考慮實際流量是否走在虛擬介面。
  2. 控制擷取範圍:先不急著長時間錄製;可以先用簡單的 capture filter 或設定檔案大小/時間限制,避免產生難以處理的大檔。
  3. 重現問題:開始擷取後只做一個清楚的測試,例如重新載入頁面、執行一次 DNS 查詢或建立一次 TCP 連線,記下開始與結束時間。
  4. 停止並保存:優先使用 pcapng 保存,另外記錄介面、時區、測試步驟與當時的錯誤訊息。這些背景資訊比「一個很大的檔案」更有助於分析。
  5. 篩選後再閱讀:先用 display filter 縮小結果,再選一個封包查看 Packet Details、Packet Bytes,必要時用 Analyze → Follow 追蹤同一條 TCP、UDP 或 TLS stream。
  6. 用統計驗證假設:最後用 Statistics → Protocol Hierarchy、Conversations、Endpoints 或 IO Graph 檢查流量是否支持你的推論。

Capture filter 和 display filter 差在哪?

這是 Wireshark 新手最容易混淆的地方:capture filter 在「擷取前」限制要寫進檔案的封包,語法接近 libpcap;display filter 在「擷取後」只控制畫面顯示哪些封包,語法是 Wireshark 的欄位篩選語言。先使用 display filter 讀既有檔案時,不會改變原始擷取內容。

種類 套用時機 例子 適合情境
Capture filter 開始擷取前 host 192.0.2.10
tcp port 443
只記錄特定主機或連接埠,降低擷取量。
Display filter 擷取進行中或開啟檔案後 ip.addr == 192.0.2.10
tcp.analysis.retransmission
在完整檔案中找特定欄位、協定或異常線索。

輸入 display filter 時,Wireshark 會檢查語法;篩選列變紅通常代表表達式不完整或欄位名稱錯誤。先按 Enter 套用,再確認封包數量是否符合預期,不要只看篩選列變綠就下結論。

四個實用的排查方向

DNS:名稱解析是否失敗?

先輸入 dns,確認是否有查詢與回應;再用 dns.flags.response == 1 聚焦回應封包。查看查詢的名稱、回應碼、回應來源與時間,再和作業系統或應用程式顯示的錯誤互相核對。只有看到 DNS 回應,不代表應用程式後續的 TCP 或 TLS 一定成功。

TCP:連線建立或傳輸是否異常?

tcp.flags.syn == 1 && tcp.flags.ack == 0 觀察初始 SYN,使用 tcp.analysis.retransmission 找重傳,再選取封包使用 Follow TCP Stream。若只有 SYN 沒有回應,可能是路由、ACL、主機防火牆、服務未監聽或擷取位置不在正確路徑;Wireshark 能提供證據,但仍要回到網路設備與服務端確認。

HTTP:明文請求或錯誤回應

在確定是未加密的 HTTP 時,可以用 http.request 查看請求,或用 http.response.code >= 400 找錯誤回應。現代網站多半使用 HTTPS,因此看不到 HTTP 內容不一定是沒有請求,可能只是內容被 TLS 加密。

TLS:為什麼只看到握手?

tls.handshake 可以先確認 TLS 握手與版本、伺服器名稱等可見欄位。若要解密內容,必須取得適用於該連線的 TLS secrets,例如合法產生的 key log file;Wireshark 官方文件也提醒,RSA 私密金鑰非常敏感,不能放進文章、截圖或公開的問題回報。即使成功解密,也只應在獲授權的測試範圍內使用。

Statistics 與 Follow Stream 怎麼搭配?

  • Protocol Hierarchy:先看這個擷取檔裡有哪些協定,判斷是否真的包含你要排查的流量。
  • Conversations:查看兩個端點之間的封包數、位元組與持續時間,適合找出最主要的連線。
  • Endpoints:從主機或服務的角度整理來源與目的地,適合核對 DNS、代理伺服器或後端節點。
  • IO Graph:把封包或位元組按時間畫出來,對照錯誤發生的時間點與流量尖峰。
  • Follow Stream:選定一個封包後追蹤同一個 TCP、UDP、TLS 或 WebSocket 對話,比逐包翻找更容易理解應用層流程。

常見問題

為什麼完全看不到封包?

先確認介面是否選對、封包計數是否有變化、VPN 或虛擬網卡是否才是實際路徑,以及作業系統與擷取驅動程式權限是否正常。若流量只在另一台主機或交換器埠上,單靠本機 Wireshark 也不會自動看見。

可以用 Wireshark 找出密碼嗎?

未加密的協定可能暴露帳號或內容;加密協定通常只能看到握手與流量特徵,除非你持有合法的解密材料。無論哪種情況,擷取檔都要當成敏感資料保存,不要把別人的登入資訊或 session secrets 分享出去。

pcapng 檔案太大怎麼辦?

縮短擷取時間、在擷取前使用精準的 capture filter、設定檔案大小或 ring buffer,並只匯出與問題相關的封包。不要為了方便而直接刪除原始證據;先保留受控的原檔,再製作去識別化副本。

Wireshark 可以直接判定被入侵嗎?

不能。它能提供封包層面的觀察與可重現證據,但是否為攻擊需要結合主機日誌、身份驗證記錄、網路設備設定與時間線。把「不熟悉的封包」直接等同「惡意流量」,很容易造成誤判。

重點整理

Wireshark 的基本流程是:選對介面、短時間擷取、記錄重現步驟、用正確的 filter 篩選,再以封包詳細資料、Follow Stream 與 Statistics 驗證假設。Capture filter 影響擷取量,display filter 只影響檢視;DNS、TCP、HTTP、TLS 也要分清楚加密與擷取位置的限制。最後,請只分析獲授權的流量,並把 pcapng、密碼、Cookie 與解密金鑰當成敏感資料處理。

可參考 Wireshark 官方使用者指南官方 display filter 參考官方 FAQ。若想補充傳輸層概念,也可延伸閱讀站內的 TCP 與 UDP 協定差異整理。本文是技術教育內容,不代表對未授權網路進行測試的許可。

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *