不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

netshとMicrosoft Message Analyzerでパケット解析を行う

いつの間にかGWに突入してます。ひよです。会社は連休だけど休んだ分の仕事はなくならないので、役に立つ勉強をこの期間にやろうと思ってます。そのあとはKindleCTFの本が安かったので、その本で技術力の底上げを目論んでいます。

はじめに

パケットキャプチャするならWiresharkなど有名なツールが世間には多く出回っています。みなさんWireshark使われているのではないでしょうか。今回はWiresharkがインストールできない環境でパケット解析しなければならない要件だったので、Windows標準機能で頑張ってみたいと思います。netshでのキャプチャ取得はいろいろな方のブログ等ありますので、知っている人は飛ばしていただいていいかと思います。Micorosoft Message Analyzerはワンポイント新しい発見があればと思います。

■環境

■アウトライン

  1. netshでキャプチャを取得する。
  2. Message Analyzerでパケット解析する。

1. netshでキャプチャを取得する。

netshはWindows標準のパケットキャプチャでWindows Server 2008以降であればインストールされているはずです。今回の要件ではパケットキャプチャソフトを対象サーバにインストールできなかったのでnetshで情報を収集します。 まずは、管理者権限でコマンドプロンプトを起動します。特に難しいことせず何でも取得するには、下記コマンドを実行することでキャプチャが開始されます。

netsh trace start capture=yes

実際に実行した画面が下記となります。ログインしているユーザのホームディレクトリ配下にトレースファイルが保存されます。デフォルトのファイルサイズは250MBでログは循環で保存していることがわかります。ファイルサイズなどを変更する場合はオプションで変更ができます。

f:id:hiyo-ac:20190429230424p:plain
capture1

次に後続の工程でパケットキャプチャできているか確認するため、はてなブログ(hatenablog.com)に対して、DNS名前解決でIP調べること、pingでICMPパケットを作成すること、curlでhttp通信を作成して観察します。

  • DNSでIP調べる※DNSサーバ情報は隠しています。

f:id:hiyo-ac:20190429230933p:plain
capture2
IPアドレスの特定ができました。

f:id:hiyo-ac:20190429231024p:plain
capture3
pingタイムアウトしているので、echoの応答は行わない設定になっているものと思います。※yahoo.co.jpなどは応答があるので、はてなブログの設定と思います。echo応答がないパターンを観察できそうです。

  • curlでhttp通信を行う

f:id:hiyo-ac:20190429231450p:plain
capture4
nginxの応答が来ているので、httpリクエスト自体は成功していそうです。

このように実験はできたので、パケットキャプチャを停止します。上記情報が循環されずにトレースファイルに残っていることを祈るばかりです。停止する場合は下記コマンドを実行します。

netsh trace stop

実際の実行画面は下記となり、トレースファイルは拡張子が、.etlのものとなります。追加情報としてWindowsのログ一式が.cabファイルとして生成されます。

f:id:hiyo-ac:20190429231657p:plain
capture5
.etlのファイルはおよそ4MBだったので循環されずに残っていそうです。

2. Message Analyzerでパケット解析する。

netshで作成したファイルは、.etl形式で保存されます。この形式のファイルを開くためにMicrosoft Message Analyzerを利用します。Microsoft Message Analyzerをインストールされていない場合は、こちらからダウンロードしてインストールしてください。今回のゴールは、1で実施したはてなブログ(hatenablog.com)へのping通信とcurl通信のパケットをトレースファイルから見つけることまでとします。実際はその通信がどうだったのか迄調べる必要がありますが別途勉強が必要なので次回あったら記事作成します。

まずはMessage Analyzerを起動し、先ほどのトレースファイルを開きます。

f:id:hiyo-ac:20190429232955p:plain
capture6
今回調査したいのは特定の宛先(hatenablog.com)への通信がどうなっているかを調べたく、このままだと宛先のIPアドレスが表示されていないので表示のレイアウトを変更します。 レイアウト変更は、「Layout」>「Network」>「Network monitor」を選択します。
f:id:hiyo-ac:20190429233739p:plain
capture7
「Network monitor」を選択すると、ページ中ほどに表示されている情報が変わり宛先の情報が表示される「Destination」というカラムが出現しわかりやすくなります。
f:id:hiyo-ac:20190429234253p:plain
capture8
そうしましたら、あとはページ上部のFilterを記載するテキストエリアにフィルタ条件を設定します。 今回は、hatenablog.comへの通信を確認したいので宛先のIPアドレスの情報をフィルタ条件として入力して、「Apply」をクリックします。
f:id:hiyo-ac:20190429234826p:plain
capture9
ページ中ほどの情報が調べたいもののみとなりました。 上位4つのICMPはタイムアウトしたpingの情報となり、MessageNumberが590がcurlコマンドの情報となり特定ができました!

おわりに

Microsoft Message Analyzerについてはあまり参考になるサイトもなく、リファレンスも英語なのでいきなり使いこなすのは難しいと個人的に思いました。本記事がみなさんのお役に立てたら幸いです。本記事について不明点や誤りなどありましたらコメントお願いします。