Wiresharkを使ってみよう
tcpdumpの限界
これまで3回にわたり、tcpdumpの概要や使用方法について説明してきました。しかし、パケットの解析を行うためのツールはtcpdump以外にも数多くのものが開発、公開されています。
tcpdumpは、コマンドの実行によってパケットをフィルタリングするコマンドラインベースのツールです。しかし、tcpdumpが提供する数多くのコマンドオプションをすべて把握しておくことは大変であり、またいくつかの入力情報についてはユーザーが何らかの方法を用いて事前に調査しておかなければならないなど、利用するにはやや敷居が高いツールです。
また、出力結果についても、tcpdumpは到着したパケットのヘッダー情報をユーザーが解読可能な書式に変換するだけです。よって、tcpdumpの出力結果の解析/整形を行うには、ユーザーが自力で何らかのプログラミング言語でスクリプトなどを記述する必要があります。
そのため、より簡単に、かつ直感的に解析を行うために、GUIベースでパケットの解析を行うツールが数多く開発されてきました。例えば、GUIベースのパケット解析ツールには図1に示すようなものがあります。
GUIベースでパケットの解析を行うツール
図1のパケット解析ツールは、tcpdumpと同様、コンピュータに到着した各パケットの情報をユーザーが解読可能な書式に変換して出力する機能に加えて、独自の機能を持っているものも多く、場合によっては非常に有用なツールとなります。
例えば、tcpdumpではパケットのデータ部分については、16進数(または、ASCII文字)でそのまま出力するオプションしか存在していません。しかし、上記のパケット解析ツールの多くは、パケットのデータ部分についても解析を行い、プロトコルに応じて必要な情報をユーザーに分かりやすい形で表示してくれます。
またtcpdumpから提供される機能は、パケット単位で処理を行ってその結果を出力することのみです。一方、上記のパケット解析ツールの多くは、それに加えて、例えば監視対象のNetwork Interface Card(以下、NIC)に到着したパケットの総数とプロトコル種別(TCP、UDP、ICMPなど)の割合を計算して結果を出力する機能など、到着したパケット群に対して何らかの統計処理を行うような機能も提供しています。
もちろん、GUIであることも効率よく解析を行う上で大きな助けとなります。例えば、WindowsはNICの名前がLinuxなどのように簡単な名前(eth0など)ではなく、930F53DA-F4FC-4080-BC07-27BD7C90072EというようなGlobally Unique IDentifier(以下、GUID)と呼ばれる値で管理されています。よって、複数のNICがコンピュータに接続されている場合、tcpdumpでは、-iオプションを用いてそれぞれ指定を行うのは大変煩雑です。
tcpdumpの-iオプションは、NICの名前のほかに番号(始めに認識されているNICから順番に1、2、3...)で指定することもできますが、対象としているNICにどの番号が割り当てられているのかは、ユーザーが独自に調査しなければなりません。GUIベースのパケット解析ツールの多くは、コンピュータに接続されているNICの一覧を分かりやすい形で表示してくれるため、前述した面倒な調査、入力の手間を省くことができます。
GUIベースのパケット解析ツールは、tcpdumpと比較して数多くの利点を持っています。しかし、これらのツールの多くは商用の製品であり、高価なものも多いため、気軽に利用することはなかなか困難です。
そこで、今回はGUIベースのパケット解析ツールの中から、フリーで公開されており、かつ多くの人に利用されているWiresharkを取り上げ、その概要と使用方法について説明していきます。