Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

Npcap alternatives for Windows environment

Npcapのライセンスはちょっとややこしくて、無償版のライセンスは5システムまで使用可能、またNmap, Wireshark, Microsoft Defender for Identityで使う場合は何ライセンスでも利用可能となっている*1*2。使っているソフトウェアのライセンスをUEM製品で管理ているんだけど、上記のような複雑な利用条件を解釈できる製品じゃない……という状況では、WiresharkといっしょにNpcapをインストールしていてもライセンス管理に問題ありと判定されてしまう可能性がある。

そのような場合、WiresharkをインストールするときにNpcapはインストールせずにおき、パケットキャプチャは他のソフトウェアで行い、Wiresharkは表示専用に使用するという方法が選択肢となる。OSがLinuxであればtcpdumpでキャプチャを行い.pcap形式のファイルに出力できるので、それをそのままWiresharkで読み込めばよい。一方、OSがWindowsの場合はいろいろな方法があるようだったので列挙しておく。

netsh trace

netshコマンドにパケットキャプチャの機能がついている。netsh trace start capture=yesのように実行する*3(())。

  • メリット
    • Windows組込みのコマンドであり、追加のソフトウェアのインストールが不要。pktmonが入っていない古いWindowsでも利用可能。
  • デメリット
    • 出力ファイルをWiresharkで直接読み込めない。変換ツールとしては、以前はMicrosoft Message Analyzerが使われていたが現在は配布が停止されている。代替として、etl2pcapngが配布されている*4。また後述するpktmonでも変換が可能な模様*5
    • Npcapと異なり、プロミスキャスモードでのキャプチャは行えない*6

pktmon

Windows10またはWindows Server 2019以降にデフォルトでインストールされているpktmonでもパケットキャプチャが行える*7

  • メリット
    • Windows組込みのコマンドであり、追加のソフトウェアのインストールが不要。
    • 出力ファイルはWiresharkで直接読み込めない.etl形式だが、pktmon自身で.etlから.pcap形式への変換が行える。
  • デメリット
    • プロミスキャスモードでのキャプチャが可能かの情報は見つけられなかった。

Add-NetEventPacketCaptureProvider

PowerShellであればNew-NetEventSessionAdd-NetEventPacketCaptureProviderでパケトキャプチャが行える*8*9

  • メリット
    • PowerShell組込みのコマンドであり、追加のソフトウェアのインストールが不要。
    • (未確認)プロミスキャスモードでのキャプチャが行える? -PromiscuousModeオプションがある。
  • デメリット
    • 出力ファイルをWiresharkで直接読み込めない。前述の方法で.etlから.pcap形式への変換が必要。

番外:Microsoft Network Monitor, Microsoft Message Analyzer

以前はWindowsでパケットキャプチャを行うツールとしてMicrosoft Network Monitorが提供されていたが、これは廃止されてMicrosoft Message Analyzerに置き換えられた*10Microsoft Message Analyzerも前述のとおり現在は提供されていない。Microsoft Network MonitorもMicrosoft Message Analyzerも、Microsoft提供のツールでNpcapに依存せずプロミスキャスモードが使えるツールだった*11

番外:New-PefTraceSession

PowerShellにProtocol Engineering Framework (PEF)モジュールをインストールしていれば、New-PefTraceSession cmdletでパケットキャプチャが行えるように読める*12。ただそもそもMicrosoft Message Analyzerが前提として必要という情報もある*13。手元でも実行できず、実用できるか不明。