〇 Windowsパソコンでパケットキャプチャーを実行する方法は2つある。パケットキャプチャーソフトの「Wireshark」をインストールして使う方法と、Windows 10/11で標準コマンドとして追加された「Pktmon」を使う方法である。ここではパケットを収集するまでの手順をそれぞれ紹介しよう。
Npcapを忘れずインストール。
Wiresharkを使う場合、まずインストールする必要がある。Wiresharkの公式サイトにアクセスして、該当するOSのインストーラーをダウンロードして実行する。
その際、プロミスキャスモードで使うためにNpcapをインストールする。チェックを付けておけば、Wireshark本体のインストール後にNpcapのインストールが始まる。インストール画面にはNpcapの利用を管理者に限定するチェックボックスがある。これにチェックを付けてしまうとWiresharkでパケット収集を開始するたびにUACが働く。
1クリックで収集開始。
実際にパケットを収集する操作は簡単だ。ホーム画面でツールバー左端にあるサメの背びれのアイコンをクリックすると、パケットの収集を開始する。
収集の対象となるネットワークインターフェースは、起動画面または「キャプチャ」メニューにある「キャプチャオプション」で指定する。このダイアログボックスからでも収集開始を指示できるようになっている。
Pktmonはコマンド操作が必須。
一方Pktmonはコマンドラインで実行する。具体的には「コマンドプロンプト」または「PowerShell」のコンソールを開いて、キーボードからコマンドを入力する。
Pktmonでは複数のサブコマンドを使ってパケットの収集開始や終了を指示する。基本は「start」サブコマンドで収集を開始し、「stop」サブコマンドで収集を終了する。
具体的な手順を説明しよう。まずPowerShellのコンソールを管理者権限で開く。そこで「pktmon start --capture」を入力してEnterキーを押す。これで収集を開始する。
画面には「ロガー パラメーター」が表示される。デフォルトでは「ログモード」が循環、「ログファイル」が「C:\WINDOWS\system32\PktMon.etl」「最大ファイルサイズ」が512MBとなっているはずだ。これらは収集した結果がどこにどのような形で保存されるかを示している。
ログファイルの拡張子は「etl」で、これはETLと呼ぶWindowsのイベントログ用のファイル形式を意味している。設定により収集結果を保存する場所は変更できるが、デフォルトはpktmon.exeがあるフォルダーに保存される。
デフォルトでは同じファイル名が繰り返し利用される。--captureの後に「-f ファイル名.etl」と付ければ、収集結果を保存するファイルの名称を変更できる。
ログモードはログの記録方式。循環ではログファイルの容量が設定値を上回ると、先頭から上書きされる。パケット収集を終了させるには「pktmon stop」を実行すればよい。
収集したパケットをWiresharkで解析したい場合は、「etl2pcap」というサブコマンドを使ってPCAPNG形式に変換する。他に収集対象を絞り込む「filter」などのサブコマンドがある。
リモートでパケットを収集。
Pktmonの特徴はPowerShellのリモート操作機能「リモーティング」を使える点だろう。例えば支社で発生したネットワークトラブルを本社から解析するのに、現地でWiresharkをインストールして実行してもらうのは難しい。リモーティングであれば最低限の情報のやりとりでパケットを収集できる可能性がある。
ただし現地で収集するパソコンの管理者権限が必要なうえ、リモーティングを有効にしておく必要がある。このためネットワーク管理者が管理対象としているサーバーなどでは、事前にリモーティングを有効にしておくとよいだろう。
実際にリモーティングを有効にしてPktmonでパケットを収集し、その結果を手元のパソコンにコピーした。PowerShellで「Get-Credential」コマンドを実行すると、ダイアログボックスが表示される。ここでリモート側のログインIDとパスワードを入力する。これで認証情報が作成できる。その後はPowerShellのリモーティング機能を利用してPktmonを実行する。