Lawrence Abramsさんの投稿より https://www.bleepingcomputer.com/news/microsoft/windows-10-quietly-got-a-built-in-network-sniffer-how-to-use/
•Windowsのキャプチャ方法としては以前からnetshによる方法として netsh trace start capture=yes traceFile=ファイル名.etlがありましたが、こちらのETLは以前はWiresharkでうまく処理できなかったり現在のWiresharkはETL対応、インタフェースの指定が難しいなど問題がありました。これに対してWindows10 May 2020アップデートにおいて、新しくpktmon.exeに-l real-timeおよびpktmon pcapngオプションが追加されました
Pktmonのサブコマンドはpktmon [コマンド]に対応しており、オンラインヘルプは pktmon filter help のように入力します。管理者権限でコマンドプロンプトを起動したら、キャプチャフィルタを設定してみます。pktmon filter add –p ポート番号 で特定ポートのみキャプチャするように設定できます.
pktmon start [-c { all | nics | [ids...] }] [-d] [--etw [-p size] [-k keywords]] [-f] [-s] [-r] [-m]でキャプチャを開始します。 たくさんのオプションがあるため、詳細はヘルプを見てください。
-c, --componentsオプションおすすめ 監視対象のコンポーネントを選択します。すべてのコンポーネント、NIC のみ、またはコンポーネント ID の一覧を指定できます。既定値は all です。コンポーネントは仮想アダプタなどがたくさんあるので pktmon comp listでIDを確認することをおすすめします。
--etwオプション必須パケット キャプチャのロギング セッションを開始します。
-p, --packet-sizeおすすめ 各パケットからログに記録するバイト数。常にパケット全体をログに記録するには、0 に設定します。既定値は 128 バイト。
-f, --file-nameおすすめ .etl ログ ファイル。既定値は PktMon.etl です。
-s, --file-size ログ ファイルの最大サイズ (MB 単位)。既定値は 512 MB 。
以上が良く使うオプションです。例えば、ID13のコンポーネントNICで、ファイル名test.etlですべてのパケットをキャプチャする場合は pktmon start –-etw –p 0 –c 13 –f test.etl になります。キャプチャを開始したらpktmon stopで停止します。
さて、これまでのファイルはetlのため、Microsoft Message Analyzerに最適化されており、またキャプチャがうまくいっているのかも確認できませんでした。新しいWindows10 May 2020アップデートではpktmonが更新され、pktmonにリアルタイムでキャプチャ情報を表示する「-l real-time」オプション、およびETLファイルをWiresharkで処理しやすいpcapngフォーマットに変換する「pktmon pcapng」サブコマンドが追加されます。
-l real-timeオプションはpktmon startとあわせて使うことで、標準出力にキャプチャ中の情報MACアドレス、イーサタイプ、IPアドレス等を随時表示することで正しくキャプチャされているかを確認できます。
さらにMicrosoftのpktmonコマンドにpcapngファイルへの変換を行うpktmon pcapサブコマンドが追加されますpktmon pcapng ETLファイル –o pcapngファイルのように指定することでETLファイルをpcapngファイルに変換できます。例 pktmon pcapng test.etl-o test.pcapng