Wireshark Tutorial: Changing Your Column DisplayWireshark は無料で利用できるプロトコル アナライザです。 Wireshark を使うとネットワーク トラフィックをキャプチャしたり、キャプチャしたパケットを表示させることができます。ITの専門職についているかたがたの中には、このツールを使って日々ネットワークのさまざまな問題を解決しておられる方も多いでしょう。
そこで、今回は Wireshark の便利な機能のひとつである表示列のカスタマイズをご紹介したいと思います。Wireshark はデフォルトでは、非常にたくさんの情報を列表示してしまうので、これをカスタマイズすることで皆さん自身の用途に使いやすいようにしたいのです。本稿はとくにセキュリティをご専門にされているかたが、マルウェアが生成するネットワーク トラフィックを解析する場合に役に立つカスタマイズのオプションについてご説明するつもりです。
本稿のチュートリアルに利用する pcap ファイルはこちらから取得してください。なお本稿では、みなさんが Wireshark を活用するうえで必要となる基本的なネットワーク トラフィックの知識を有しているものとして解説をしています。この点はご承知おきください。また本チュートリアルでは、 Wireshark のバージョン 2.6 を利用し、次の内容を説明していきます。
- Web トラフィックとデフォルトの Wireshark 列表示設定
- 列を非表示にする
- 列を削除する
- 列を追加する
- 列の時刻設定を UTC に変更する
- カスタム列を設定する
Web トラフィックとデフォルトの Wireshark 列表示設定
マルウェアはよく web トラフィックを通じて配信されます。このほか web トラフィックはデータの漏出や C2 活動に使われることもあります。マルウェアに感染した web トラフィックを解析するにあたり、Wireshark のデフォルトの列表示は理想的とはいえませんが、表示をカスタマイズすれば、こうした活動内容を捕捉しやすくなります。
Wireshark のデフォルト列は次のようになっています。
- No. -pcap の最初から数えたフレーム番号。最初のフレームは常に1
- Time – pcap の最初のフレームからカウントを開始したナノセカンド単位の経過秒数。最初のフレームは常に 0.000000
- Source – ソース (接続元) アドレス。一般には IPv4、IPv6、またはイーサネット アドレス
- Destination – デスティネーション (接続先) アドレス。一般には IPv4、IPv6、またはイーサネット アドレス
- Protocol – イーサネット フレーム、IP パケット、TCP セグメント (ARP、DNS、TCP、HTTP など) で利用されているプロトコル
- Length – フレーム長 (バイト単位)
解析業務で使っているWiresharkの列は次のものです。
- Date と Time (UTC 表示)
- Source IP と Source Port
- Destination IP と Destination Port
- HTTP host
- HTTPS server
- Info
ではさっそくこの列設定にする方法を見ていきましょう。まずは不要な列を非表示ないし削除するところからはじめます。
列を非表示にする
後で必要になるかもしれない列は、簡単な操作で非表示にしておくことができます。まず、Packet List ペインにある列ヘッダ (No.、Time などの見出し行) のどこでもよいので右クリックしてコンテキスト メニューを表示します。列の一覧が表示されますので、左クリックをして、不要な列のチェックを外します。次の図 2 では No.、Protocol、Length の列のチェックを外して非表示にしています。
列を削除する
No.、Protocol、Length の列は一切利用しないので、これらは完全に削除しています。列を削除するには、削除したい列ヘッダ(見出し行)の上で右クリックし、コンテキスト メニューから [Remove this Column…(この列を削除)] を選択します。
列を追加する
Wireshark で列を追加するのは [Column Preferences] メニューから行います。ここでも列ヘッダ (見出し行) のどこでもよいので右クリックし、[Column Preferences…] を選択します。
[Column Preferences] メニューにはその表示・非表示の状態にかかわらず、すべての列が一覧表示されます。 [Column Preferences] メニューの一番下の左の方にボタンが 2 つありますが、うち [+] というボタンが列を追加するボタン、[-] は列を削除するボタンです。ここでは、[+] をクリックして追加してください。[+]をクリックすると「New Column」という題名 (Title) の項目が一覧の一番下に表示されます。
[New Column] をダブルクリックして、「Source Port」という題名 (Title) に変更します。なお、新規に追加された列の種別 (Type) は常に「Number」と表示されます。 [Number] をダブルクリックしてメニューを表示し、「Src port (unresolved)」という項目が表示されるまでスクロールし、これを種別として設定します。
新しい列の題名(Title)が「Source Port」に、列の種別(Type)が「Src port (unresolved)」になったことを確認したら、今追加した項目を左クリックしてドラッグして [Source address] の直下に移動します。
「Source port」を追加し終わったら、もうひとつ別の列を追加します。次に追加する列は、題名 (Title) を「Destination Port」に、列の種別 (Type) は「Dest port (unresolved)」とします。
「Source Port」の列のときと同様に、今回追加した「Destination Port 」もドラッグして「Destination address」の直下に移動します。 移動し終えた後、列表示は、下図と似た状態になっているはずです。
「Source Port」と「Destination Port」の列を追加が修了したら、[OK] をクリックして変更内容を反映します。なお、新しく追加した列の文字列は自動的に右寄せで表示されるので、各列ヘッダ (見出し行) の項目を右クリックしてほかの列と同じ左寄せに設定しなおすとよいでしょう。
日常業務で「Source address」と「Source Port」の列は後で必要になるまで非表示にすることが多いです。
列の時刻設定を UTC に変更する
時刻表示形式を変更するには、[View (表示)] メニューを開いて[Time Display Format (時刻表示形式)] を選択して [Seconds Since Beginning of Capture (キャプチャ開始からの秒数)] を [UTC Date and Time of Day (UTC 日時)] に変更します。つづけて同じメニューで時間の分割単位を [Automatic (自動)] から [Seconds (秒)] に変更します。下図はこのメニューでこれらのオプションを表示したところです。
カスタム列を設定する
残念ながら、[Column Preferences] メニューからは直接追加できない種類の列もあります。その場合に使えるのが Wireshark のカスタム列追加機能です。
カスタム列には、Wireshark画面の各フレームに含まれるほぼどんな値でも利用できます。ここでは HTTP および HTTPS のトラフィックに含まれるドメイン名を元にして Wireshark の列ヘッダに表示するカスタム列を追加してみることにします。
HTTP トラフィックに含まれているドメイン名をすばやく探すため、まずは Wireshark の [Filter] ツールバーに「http.request」という文字列を指定し、続いて [Packet List] ペインの下部に表示されている [Packet Details] ペインを確認していきます。
まず、[Packet Details] ペインに表示されている [Hypertext Transfer Protocol] 行の左端にある「大なり記号(>)」を左クリックしてこの行を展開します (訳注: Wireshark のバージョンや実行環境によっては「大なり記号」ではなく「右向きの三角形」の場合があります)。
これにより複数の行が追加表示されます。[Host:] で始まる行までスクロールして HTTP ホスト名を確認します。この行を左クリックして選択します。続いてこの行を右クリックしてコンテキスト メニューを表示します。メニューの上の方に [Apply as Column (列として適用)] という項目があるので、 これを選択します。これにより HTTP ホスト名の新しい列が作成されます。
同様にして暗号化されている HTTPS トラフィックからドメイン名を見つけるには、Wireshark の [Filter] ツールバーに「ssl.handshake.type == 1」を指定します。
さらに [Packet Details] ペインで「Secure Sockets Layer」行、「TLS(バージョン) Record Layer」行、「Handshake Protocol: Client Hello」行をこの順にクリックして展開します。
続いて「Handshake Protocol: Client Hello」行、「Extension: server_name」行、 「Server Name Indication extension」行をこの順に展開します。ここで「Server Name」で始まる複数種類の値をふくむ行が確認できるので、この中から「Server Name:」で始まる行を選択し、右クリックします。表示されるコンテキスト メニューから [Apply it as a column (列として適用)] をクリックします。下図がこの例です。
カスタマイズが終わったら、「http.request or ssl.handshake.type == 1」を [Filter] ツールバーに指定します。この結果を下図に示します。こうしてカスタマイズしておけば、デフォルトの列表示設定のままの Wireshark を眺めるよりずっとどのような web トラフィックが流れているのかを把握しやすくなります。