Wireshark使いこなしTips
第6回:TCPストリーム表示機能を使ってみる
TCPストリーム表示機能を使ってみる
TCPストリーム表示機能とは
etherExtractorで実際に通信をキャプチャしてみると、環境および状況によっては、複数のTCPセッションによって、複数のWebサーバへアクセスしている通信の状況がキャプチャされることがあります。このように複数のWebサーバとの通信が同時に行われているキャプチャファイルの場合、どのTCPパケットがどのTCPセッションに関連しているかが分かりにくいことがあります。TCPストリーム表示機能とは、ユーザが指定した任意のTCPパケットに関連する通信内容(TCPセッション)だけを自動的にまとめて取り出し表示する機能です。
それでは実際に使用しながら、本機能について解説します。今回使用するサンプルのキャプチャファイルは、Wiresharkのサイトからダウンロード可能なサンプルのキャプチャファイル(https://wiki.wireshark.org/SampleCaptures)の中から、HyperText Transport Protocol (HTTP)下にあるhttp.capを用います。
TCPストリーム表示機能を使ってみる
http.capファイルをWiresharkで開いてみると、Figure1のように、複数のTCPパケットから構成される全43個のパケットが存在することが確認できます。
TCPストリーム表示機能では、キャプチャファイルの中から任意のTCPパケットを一つ指定すると、同じIPアドレスおよびポート番号を持つ、一連のTCPパケットの内容そのTCPセッションの内容だけが抽出・集約されます。ここで「任意のTCPパケットを一つ」と書きました通り、TCPストリーム表示機能を起動する際に指定するTCPパケットは、必ずしもセッションの最初のパケット(TCPの場合、最初のSYNを送信しているパケット)である必要はありません。任意のTCPパケットをどれか一つ指定することにより、同一のIPアドレスおよびTCPポートを持つパケットが自動的に抽出・集約されます。
では早速TCPストリーム表示機能を起動してみましょう。まずは任意のTCPパケットとして、ここでは例としてTCPセッションの途中のフレーム番号10番のTCPパケット(Figure 1)を選択します。続いてTCPストリーム表示機能を起動します。TCPストリーム表示機能は、Wiresharkのメニューバーから、「分析」→「追跡」→「TCPストリーム」から起動できます(Figure 2)。すると、Figure 3のようなTCPストリーム表示画面が開きます。
TCPストリーム表示画面では、Figure3のように、TCPの通信をクライアントとサーバのやりとり毎にまとめ色分け表示されます。このキャプチャファイルの例では、TCP上でHTTPのやりとりが行われているため、Figure3の画面の冒頭で赤のフォントで表示されている” GET /download.html HTTP/1.1”は、クライアント(IPアドレス=145.254.160.237)のWebブラウザから、Webサーバ(IPアドレス=65.208.228.223)に向けて送信されたHTTPリクエスト・パケットであり、その下の紫のフォントで表示されている” HTTP/1.1 200 OK”は、クライアントからのリクエストに対しWebサーバから送信されたHTTPレスポンス・パケットであることが確認できます。
TCPストリーム表示画面では、下記の操作が可能です。
TCPストリーム表示機能の画面内容からWebページの内容を復元してみる
TCPストリーム表示機能では、Figure3で表示されたように、やりとりされたHTMLの階層構造の構文がそのままテキストで表示されるため、これを用いてこのWebサイトがどのようなWebサイトであったかをWebブラウザ上で遡って復元・確認することも出来ます。
TCPストリーム表示画面内で、HTMLの開始を宣言するタグに相当する箇所から、最後の</html>までをコピーし、テキストエディタに貼り付け、例としてtest.htmlのようにファイル拡張子をhtmlとして保存します。そして保存されたtest.htmlのアイコンをクリックしてみると、Webブラウザ上で元のWebサイトの一部はFigure4のようなテキストから構成されるページであったことが確認できます(ちなみに、ここで表示されたEtherealとはWiresharkの旧名称です)。
最後に
TCPストリーム表示機能では、任意に選択されたTCPパケットから、同パケットが関与するセッションの最初(TCP SYNパケットが送信されてセッションが開始されるところ)から、セッションの最後(セッションがクローズされるまで)を追跡し、そのセッション上でのやりとりの内容が集約・表示されます。今回のサンプルキャプチャファイルの場合では、TCPの上位としてHTTPプロトコルであったため、HTTPのGETコマンドから始まる一連のHTTPの通信内容が表示されました。HTMLのように、テキストでやりとりされるようなプロトコルの解析に便利な機能といえます。なお、Wiresharkでは、TCPストリーム表示の他にも、UDP、SSL、HTTPの各ストリームに対する表示機能もあります(Figure2)。
アルチザネットワークスの自社開発製品であるetherExtractorは、10GbE/1GbE Full-Duplex(双方向)上で転送されるワイヤーレートの最短パケット(64バイト)の連続キャプチャを保証し、ネットワーク上で生じるさまざまな事象の全てをパケットロスすることなくキャプチャを実行するパワフルなキャプチャ専用機です。
アルチザネットワークスでは、etherExtractorで取得した貴重なPCAPファイルを、Wireshark上で快適に、そして便利に解析いただくためのさまざまなヒントや利用方法を、今後も「Wireshark使いこなしTips」のコーナーで多角的にご紹介してまいります。