遇到棘手網路茶包,抓封包分析是最直覺有效的手段,要監看網站傳輸我主要是用 Fiddler,至於更底層的 TCP 網路活動,早期我是用 Microsoft Network Monitor,後來 MNM 停止開發,原本計劃由 Microsoft Message Analyzer 接棒,不料 Message Analyzer 在 2019 年遭到棄坑,如今已無處可尋(反倒 MNM 3.4 版還留有下載遺址),官方部落格建議大家改用開源跨平台軟體 - Wireshark,而 Wireshark 的確也是目前我抓 TCP/IP 封包最主要的工具。

然後,遇到狀況想抓封包驗證猜測,未必能用動用 Wireshark,一則下載安裝得耗工夫花時間,二來並非每個環境都能隨意安裝軟體,原本看個封包答案立見分曉,少了工具只能乾瞪眼,想辦法旁敲側擊找線索,浪費不少時間。

最近發現 Windows 推出一個鮮為人知的新工具,未來查網路問題不必再為沒工具抓封包發愁。Windows 10 跟 Windows Server 2019 (1809 版)起,內建了一個命令列封包監聽工具 - Pktmon,可設定簡單條件側錄封包,結果可以轉為文字檔或 MNM/Wireshark 的資料格式,改用慣用軟體做進一步篩選及進階分析。

MS Docs 有 Pktmon 指今參數的完整說明,大家請自行參考,這裡直接用實例展示如何使用 Pktmon 側錄封包並進行分析。

簡單說明用到的指令:(註:記得以管理者權限開啟)

  1. pktmon comp list
    列舉主機上的網路元件(網路卡介面),擷取封包時指定網卡識別碼資料較乾淨
  2. pktmon filter add -t tcp -p 21
    設定過濾條件,本例指定 TCP、Port 21,另外還有 -i xxx.xxx.xxx.xxx 可限定 IP。設定完可用 pktmon filter list 查詢確認
  3. pktmon start -c --pkt-size 0 --comp 180
    啟動封包擷取,--pkt-size 0 記錄完整封包內容(否則預設只取前 128 Bytes),--comp 180 指定 vEthernet (WiFi-Switch) 網卡
  4. curl "ftp://ftp.ntu.edu.tw"
    借用 curl 工具登入台大 FTP 主機,產生一些 TCP 21 Port 傳輸封包
  5. pktmon stop
    停止擷取,擷取內容預設寫入 PktMon.etl 檔案(start 時可透過 -f 指定不同檔名)
  6. pktmon etl2txt pktmon.etl
    將 PktMon.etl 的擷取內容轉為文字檔,預設檔名為 PktMon.txt
  7. pktmon pcapng pktmon.etl
    將 PktMon.etl 的擷取內容轉為 pcapng 檔(預設檔名 PktMon.pcapng)以便使用 Wireshark 檢視內容

執行結果如下:

文字檔內容有點龐雜不易閱讀,只能看個大概:

要深入分析,一般轉成 pcapng 檔用 Wireshark 開啟,如下圖,整個傳輪過程一目膫解:

有了 Pktmon,在新版 Windows 射網路茶包,免裝軟體也能抓封包,未來偵察網路問題再添一項利器。

【延伸閱讀】

Introduce to Windows' new network monitoring tool- pktmon.


Comments

# by chia

Very cool!

# by 鳥毅

我偏愛免安裝的 https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview

Post a comment


59 - 39 =