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

Life is fun and easy!

不正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を利用することで,読みやすくできる模様.


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 4114, today: 7, yesterday: 2
最終更新: 2020-05-25 (月) 00:56:40 (JST) (1394d) by nobuaki

広告スペース
Google