Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20201218_pktmon_netsh

 20201218_pktmon_netsh

Windows10 のpktmonが使いやすかったので、
Windows7/8以降のnetsh trace コマンドと Linuxのtcpdump/tsharkとの簡単な比較も兼ねてスライドを起こしました。

A943048c18de92902dae80a40ef7e842?s=128

ONO,Tetsuo

December 18, 2020
Tweet

Transcript

  1. 運用管理上のパケットキャプチャの手順 について今更ながら考える 大野 哲生(@g_plains)

  2. 目次  はじめに  ケース1:Windows10 2004以降 の場合  ケース2:Windows 7/8.1

    の場合 ※Windows Server 2008-2016の場合、も  ケース3:一般的なLinuxの場合  ふりかえり
  3. はじめに  昔々某案件やったときにWireShark使ってすごい感激したん ですよ  でも実案件だと「えーWireSharkってダークなんでしょ、 うちでは構成管理上ダメです」とか言われたりして  そんなわけでそれ以外の方法を無理やり考えてみます

  4. ケース1:Windows10 2004の場合  大抵のご家庭に入っているWindows10  大抵のご家庭に入っているWindows10 2004  Windows10 2004にはいろいろなツールが入っているので

    これを使わない手はない ◦ curl ◦ ssh ◦ pktmon ◦ WSL(1/2)
  5. pktmonってナニ  Windows10 2004から同梱されるようになったツール  ぶっちゃけ以下の機能が使えます ◦ パケットキャプチャ(ETL) ◦ キャプチャデータの変換(ETL→PCAPNG)

    ◦ キャプチャデータの出力(ETL→TXT)
  6. 実際にpktmonを使う-1  管理者権限でコマンドプロンプトを開いて  キャプチャ開始  トラヒックログが(大量に)表示されるので、 ^Cで中断 pktmon start

    --etw -p 0 -l real-time
  7. 実際にpktmonを使う-2  管理者権限でコマンドプロンプトを開いて  キャプチャ開始  適当なタイミングで終了  ETLからPCAPNGに変換 

    ETLからTXTに変換(ダンプ?) pktmon start --etw -f .¥test.etl pktmon stop pktmon pcapng test.etl -o test.pcapng pktmon format test.etl -o test.txt
  8. 実際にpktmonを使う-3  出力したpcapng は、WireSharkでも読めます  WSL上にubuntuが入ってたら、こんな感じで ※Windows側のc:¥tmp に配置すると WSLでは /mnt/c/tmp

    にあるように見える # まあwiresharkをインストールするわけですが sudo apt install tshark # IPアドレスがxx.xx.xx.xx のパケットを抽出 tshark -r /mnt/c/tmp/test.pcap 'ip.addr==xx.xx.xx.xx'
  9. ケース2:Windows7/8.1の場合  大抵のご家庭に残っているWindows7 /Windows8.1  Windows7 にもいろいろなツールが入っているので これを使わない手はない ◦ netsh

     ただし、ちょっとだけ癖がある…
  10. 実際にnetshを使う-1  管理者権限でコマンドプロンプトを開いて  キャプチャ開始  適当なタイミングで終了 netsh trace start

    capture=yes tracefile=foo.etl netsh trace stop
  11. 実際にnetshを使う-2  ホントは先述のpktmonで解析できるはずなのですが… うまくいかないので、以下を参考に https://www.vwnet.jp/Windows/WS16/2017013001/PacketCapture.htm  Microsoft Network Monitor 3.4

    を取ってくる https://www.microsoft.com/en-us/download/details.aspx?id=4865  「Parser Profiles」→「NetworkMonitor Parsers」 →「Windows」に変更 で読みやすくなる
  12. 実際にnetshを使う-3  ETL2PCAPNG 自体は、色々コードが出回っています  GitHub 上に、MS謹製の変換ツールも出ている https://github.com/microsoft/etl2pcapng  コード署名の関係で、一回ウィルス対策ソフトに

    撃墜されたにがーい思い出が… netsh trace start capture=yes report=disabled netsh trace stop etl2pcapng.exe in.etl out.pcapng
  13. ケース3:一般的なLinuxの場合  Linuxの場合は…構成管理にうるさくなければ簡単  Linux にもいろいろなツールが存在するので これを使わない手はない ◦ tcpdump ◦

    wireshark  パッケージ管理は、よしなに…
  14. 実際にtcpdumpを使う  CentOS7のばやい  実際に使う yum install tcpdump # tcpdump

    /libpcap が入る tcpdump -A # 入出力したパケットが全部表示される tcpdump -w output.pcap # output.pcap に出力 ^Cで中断 tcpdump –r input.pcap # input.pcap の内容を表示
  15. 実際にWireSharkを使う  tcpdumpの結果をより絞り込みたいときはtsharkを使う  CentOS7のばやい  実際に使う yum install wireshark

    # wireshak /libpcap 他が入る # tcpdumpで採取したinput.pcap の内容を表示 tshark –r input.pcap “ip.src==192.168.1.23” -n
  16. ふりかえり  Linuxの場合一回libpcap+tcpdumpさえ入れておけば 後はいつでもキャプチャ可能な気がします  Windows Serverは…うーん、ETLからPCAPNGに変換でき るかどうかがキモ。 Windows Server2012/2016でいい感じにETLから変換でき

    る手順があれば教えてほしい…  まあWireShark入ってたら、有難がりながらWireShark使お う。それが一番楽