UJP - 技術情報2 : Windows 10でキャプチャ機能のpktmonを試す Windows10/pktmon

I hope this helps.

不正IP報告数

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

Page Top

はじめに anchor.png Edit

 Windows 210 October 2018 Updateというリリースで,ひっそりとWindows 10にパケットキャプチャソフトを導入している.

 従来は,Microsoft Network MonitorやWiresharkをインストールする必要があったけれど,これが内蔵されているというのは,少々問題があるかもしれない.

 今回用いるマシンは,Windows 10の2020 Mayアップデートを適用したもので,pktmonというLANアナライザおよびパケットドロップをレポートするプログラムになる.

 このpktmonについては,現時点(2020/05/24)では,Microsoftの公式サイト上でドキュメントはない.

Page Top

無邪気に実行してみる anchor.png Edit

 コマンドプロンプトで,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>

 一般ユーザ権限では,実行できないので,管理者権限でコマンドプロンプトを実行する.

Page Top

現在設定を確認する anchor.png Edit

 コマンドプロンプトを管理者権限で起動する.

 フィルタ設定の使い方のヘルプを確認.

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>

 パケットキャプチャ設定は設定されてない.

Page Top

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

 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番ポートのみ,キャプチャ対象として実行する.  

Page Top

pktmon startでキャプチャを実行する anchor.png Edit

 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>

 これでキャプチャ完了.

Page Top

ログファイルを可読化する pkmon format anchor.png Edit

 キャプチャした際のログファイルを確認する.

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>

 テキストになった方がサイズは減った.

Page Top

変換したログをメモ帳で開く anchor.png Edit

 記録されたファイルは,可読性のあるテキストという事で,開いてみる.

index.php?page=view&file=7108&pktmon01.png

 IPアドレス,MACアドレスなどが記録されていることはわかる.また,日本語に変換されていて,区切り文字が「、」だったりするし,このままの生ログだと実質人間は読めない...

 このログファイルは,Microsoft Network Monitorを利用することで,読みやすくできる模様.


Front page   Edit Diff Backup Upload Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 2164, today: 1, yesterday: 7
Last-modified: 2020-05-25 (Mon) 00:56:40 (JST) (808d) by nobuaki

広告スペース
Google