UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Windows 10でキャプチャ機能のpktmonを試す

Windows 10でキャプチャ機能のpktmonを試す


更新履歴

  • 初版 2020/05/25

はじめに

  • Windows 210 October 2018 Updateというリリースで,ひっそりとWindows 10にパケットキャプチャソフトを導入している.
  • 従来は,Microsoft Network MonitorやWiresharkをインストールする必要があったけれど,これが内蔵されているというのは,少々問題があるかもしれない.
  • 今回用いるマシンは,Windows 10の2020 Mayアップデートを適用したもので,pktmonというLANアナライザおよびパケットドロップをレポートするプログラムになる.
  • このpktmonについては,現時点(2020/05/24)では,Microsoftの公式サイト上でドキュメントはない.

無邪気に実行してみる

  • コマンドプロンプトで,pktmonを実行してみる.
       Microsoft Windows [Version 10.0.18363.836]
       (c) 2019 Microsoft Corporation. All rights reserved.
       
       C:\Users\ujpadmin>pktmon🆑
       pktmon { filter | comp | reset | start | stop } [OPTIONS | help]
           内部パケット伝達レポートとパケット ドロップ レポートを監視します。
       
       コマンド
           filter     パケット フィルターを管理します。
           comp       登録されたコンポーネントを管理します。
       
           reset      カウンターをゼロにリセットします。
           start      パケットの監視を開始します。
           stop       監視を停止します。
           format     ログ ファイルをテキストに変換します。
           unload     PktMon ドライバーをアンロードします。
       
       help
           コマンドのヘルプ テキストを表示します。
       
       
       C:\Users\ujpadmin
  • ヘルプが表示された.
  • まずは,現在設定を確認してみる.
       
       C:\Users\ujpadmin> pktmon filter list🆑
       PktMon ドライバー サービスを開始できませんでした: アクセスが拒否されました。🈁
       
       C:\Users\ujpadmin>
  • 一般ユーザ権限では,実行できないので,管理者権限でコマンドプロンプトを実行する.

現在設定を確認する

  • コマンドプロンプトを管理者権限で起動する.
  • フィルタ設定の使い方のヘルプを確認.
       C:\Windows\system32>pktmon filter help🆑
       pktmon filter { list | add | remove } [OPTIONS | help]
       
       コマンド
           list      アクティブなパケット フィルターを表示します。
           add       報告対象のパケットを制御するフィルターを追加します。
           remove    すべてのフィルターを削除します。
       
       help
           コマンドのヘルプ テキストを表示します。
       
       
       C:\Windows\system32>
  • listを使って,現在のパケットフィルタ状態を確認する.
       Microsoft Windows [Version 10.0.18363.836]
       (c) 2019 Microsoft Corporation. All rights reserved.
       
       C:\Windows\system32>pktmon filter list🆑
       パケット フィルターはありません。
       
       C:\Windows\system32>
  • パケットキャプチャ設定は設定されてない.

パケットフィルタ設定を追加する addオプション

  • Webアクセスで用いる,HTTP(80番)とHTTPS(443番)ポートをパケットキャプチャする設定を追加する.
  • まずは,使い方を確認.
       C:\Windows\system32>pktmon filter add help🆑
       pktmon filter add <名前> [-m mac [mac2]] [-v vlan] [-d { IPv4 | IPv6 | number }]
                                [-t { TCP [flags...] | UDP | ICMP | ICMPv6 | number }]
                                [-i ip [ip2]] [-p port [port2]] [-e [port]]
           報告対象のパケットを制御するフィルターを追加します。パケットを
           報告対象にするには、パケットが少なくとも 1 つのフィルターの、指定されたすべての条件に一致する必要があります。
           一度に最大 8 つのフィルターをアクティブにすることができます。
       
       name
           フィルターの名前または説明 (オプション)。
       
       イーサネット フレーム
           -m, --mac[-address]
               ソースまたは宛先の MAC アドレスを一致条件とします。2 つの MAC が指定された場合、
               ソースか宛先かに関係なく、フィルターはその両方を含む
               パケットを検出します。
       
           -v, --vlan
               802.1Q ヘッダー内の VLAN ID (VID) を一致条件とします。
       
           -d, --data-link[-protocol], --ethertype
               データ リンク (レイヤー 2) プロトコルを一致条件とします。IPv4、IPv6、ARP、または
               プロトコル番号とすることができます。
       
       IP ヘッダー
           -t, --transport[-protocol], --ip-protocol
               トランスポート (レイヤー 4) プロトコルを一致条件とします。TCP、UDP、ICMP、ICMPv6、または
               プロトコル番号とすることができます。
               TCP パケットをさらにフィルター処理するために、一致条件とする TCP フラグの一覧を指定できます
               (オプション)。サポートされているフラグは FIN、SYN、RST、PSH、ACK、URG、ECE、CWR です。
       
           -i, --ip[-address]
               ソースまたは宛先の IP アドレスを一致条件とします。2 つの IP が指定された場合、
               ソースか宛先かに関係なく、フィルターはその両方を含む
               パケットを検出します。
       
       TCP/UDP ヘッダー
           -p, --port
               ソースまたは宛先のポート番号を一致条件とします。2 つのポートが指定された場合、
               ソースか宛先かに関係なく、フィルターはその両方を含む
               パケットを検出します。
       
       カプセル化
           -e, --encap
               カプセル化したヘッダーをフィルター条件とします。
               サポートされるカプセル化の種類: VXLAN、GRE、NVGRE、IP-in-IP。
               カスタム VXLAN ポートはオプションです。既定値は 4789 です。
       
       
       C:\Windows\system32>
  • 80番ポートを追加する.
       C:\Windows\system32>pktmon filter add -p 80🆑
       フィルターが追加されました。
       
       C:\Windows\system32>
  • 追加された設定を確認する.
       C:\Windows\system32>pktmon filter list🆑
        # 名前      ポート
        - --      ---
        1 <empty>  80🈁
       
       C:\Windows\system32>
  • 443番ポートを追加して確認する.
       C:\Windows\system32>pktmon filter add -p  443🆑
       フィルターが追加されました。
       
       C:\Windows\system32>pktmon filter list🈁
        # 名前      ポート
        - --      ---
        1 <empty>  80
        2 <empty> 443🈁
       
       C:\Windows\system32>
  • やっぱり443ポートは止めるので消す.
  • 消す時はremoveコマンドの模様.
       C:\Windows\system32>pktmon filter remove help🆑
       pktmon filter remove
           すべてのパケット フィルターを削除します。
       
       
       C:\Windows\system32>
  • 全部消す方法しかないらしい.
  • 削除して,消えたか確認する.
       C:\Windows\system32>pktmon filter remove🆑
       すべてのフィルターが削除されました。🈁
       
       C:\Windows\system32>pktmon filter list🆑
       パケット フィルターはありません。🈁
       
       C:\Windows\system32>
  • そして再度,80番ポートだけ追加して,追加を確認する.
       C:\Windows\system32>pktmon filter add -p 80🆑
       フィルターが追加されました。🈁
       
       C:\Windows\system32>pktmon filter list🆑
        # 名前      ポート
        - --      ---
        1 <empty>  80🈁
       
       C:\Windows\system32>
  • 今回は,この80番ポートのみ,キャプチャ対象として実行する.

pktmon startでキャプチャを実行する

  • pktmonはstartオプションを指定する事で実行できるが,パラメータを確認する.
       C:\Windows\system32>pktmon start help🆑
       pktmon start [-c { all | nics | [ids...] }] [-d] [--etw [-p size] [-k keywords]]
                    [-f] [-s] [-r] [-m]
           パケットの監視を開始します。
       
       -c, --components
           監視対象のコンポーネントを選択します。すべてのコンポーネント、NIC のみ、または
           コンポーネント ID の一覧を指定できます。既定値は all です。
       
       -d, --drop-only
           ドロップされたパケットのみを報告します。既定では、正常に処理されたパケット伝達
           も報告します。
       
       ETW ロギング
           --etw
               パケット キャプチャのロギング セッションを開始します。
       
           -p, --packet-size
               各パケットからログに記録するバイト数。常にパケット全体を
               ログに記録するには、0 に設定します。既定値は 128 バイトです。
       
           -k, --keywords
               どのイベントがログに記録されるかを制御する 16 進数の
               ビットマスク (以下のフラグを合わせたもの)。既定では、すべてのイベントがログに記録されます。
       
               フラグ:
               0x001 - 全般構成イベント。
               0x002 - カウンターを含むコンポーネント関連情報。
               0x004 - 事前に解析されたパケット。
               0x008 - パケット メタデータ (NBL OOB)。
               0x010 - 未処理のパケット ペイロード。
       
          -f, --file-name
               .etl ログ ファイル。既定値は PktMon.etl です。
       
          -s, --file-size
               ログ ファイルの最大サイズ (MB 単位)。既定値は 512 MB です。
       
          ロギング モード
       
              -r, --circular
                  最大ファイル サイズに達すると、新しいイベントによって
                  最も古いイベントが上書きされます。
       
              -m, --multi-file
                  最大ファイル サイズに達すると、新しいログ ファイルが作成されます。
                  ログ ファイルには、PktMon1.etl、PktMon2.etl のように順番に番号が付けられます。
       
       
       C:\Windows\system32>
  • ETWとは,Event Tracing for Windowsの事.通信ログはこのETWに流れてくるそうで,これをログイングするために--etwオプションを設定する.またパケットサイズは全てを保存するので0を設定.
  • そのほかのオプションはデフォルトとする.
  • 次のようにコマンドプロンプトで実行する.
       C:\Windows\system32>pktmon start --etw -p 0🆑
       
       ログ ファイル名:     C:\Windows\system32\PktMon.etl🈁
       ログ モード:      循環
       最大ファイル サイズ: 512 MB
       
       アクティブな測定を開始しました。
       
       C:\Windows\system32>
  • ブラウザを使って,適度にWebブラウジングする.
  • 次に,パケットキャプチャを停止する.
       C:\Windows\system32>pktmon stop🆑
       ログ ファイル: C:\Windows\system32\PktMon.etl (イベントは失われていません)
       
       Intel(R) Dual Band Wireless-AC 7265
        ID 名前                  カウンター 方向 パケット    バイト | 方向  パケット        バイト
        -- --                       -----    --   ----          --- | --    ----        ---
        34 Native WiFi Filter Dr... Upper    Rx    828    1,148,635 | Tx     189     25,038
        33 VirtualBox NDIS Light... Upper    Rx    828    1,148,635 | Tx     189     25,038
        32 QoS Packet Scheduler     Upper    Rx      0            0 | Tx     189     25,038
        95 TCPIP (NDIS)             Lower    Rx    828    1,148,635 | Tx     189     25,038
        77 LLTDIO                   Lower    Rx    828    1,148,635 | Tx       0          0
        73 NDISUIO                  Lower    Rx    828    1,148,635 | Tx       0          0
       
       
       C:\Windows\system32>
  • これでキャプチャ完了.

ログファイルを可読化する pkmon format

  • キャプチャした際のログファイルを確認する.
       C:\Windows\system32>dir C:\Windows\system32\PktMon.etl🆑
        ドライブ C のボリューム ラベルがありません。
        ボリューム シリアル番号は F464-9747 です
       
        C:\Windows\system32 のディレクトリ
       
       2020/05/24  20:10        83,886,080 PktMon.etl🈁
                      1 個のファイル          83,886,080 バイト
                      0 個のディレクトリ  373,325,750,272 バイトの空き領域
       
       C:\Windows\system32>
  • 83MBのファイルができていた.(キャプチャした内容に依存する)
  • ETW形式でバイナリなので人間が読めるように変換をし,返還後のファイルサイズを確認.
       C:\Windows\system32>pktmon format PktMon.etl -o pktmon.txt🆑
       処理しています...
       
       書式設定されたイベント: 15406
       書式設定されたファイル:    pktmon.txt
       
       C:\Windows\system32>dir pktmon.txt🆑
        ドライブ C のボリューム ラベルがありません。
        ボリューム シリアル番号は F464-9747 です
       
        C:\Windows\system32 のディレクトリ
       
       2020/05/24  20:13         7,778,150 pktmon.txt
                      1 個のファイル           7,778,150 バイト
                      0 個のディレクトリ  373,320,957,952 バイトの空き領域
       
       C:\Windows\system32>
  • テキストになった方がサイズは減った.

変換したログをメモ帳で開く

  • 記録されたファイルは,可読性のあるテキストという事で,開いてみる.
embedded image
  • IPアドレス,MACアドレスなどが記録されていることはわかる.また,日本語に変換されていて,区切り文字が「、」だったりするし,このままの生ログだと実質人間は読めない...
  • このログファイルは,Microsoft Network Monitorを利用することで,読みやすくできる模様.

広告スペース
Google