Ethereal for Windowsを使う

Ethereal

Etherealは、ネットワークを流れるパケットを取り込みその内容を表示することのできるネットワークアナライザです。ネットワーク上のパケットを解析・モニタするのに非常に便利なツールです。

ダウンロードする

パケットキャプチャライブラリ (WinPcap) とネットワークアナライザ (Ethereal) の二つのソフトをダウンロードします。

WinPcap ダウンロードサイト
http://netgroup-serv.polito.it/winpcap/

Ethereal ダウンロードサイト
http://ethereal.com/

インストールする

ダウンロードした二つのソフトを次のおような順序でインストールします。
(1) WinPcap_3_0.exe
(2) ethereal-setup-0.10.0.exe

パケットをキャプチャする

Ethereal を活用してのパケット解析で、最初に行う必要のある操作がパケットのキャプチャです。

パケット キャプチャ

・Ethereal のツールバーで、「Capture」→「Start」をクリックします。
・ダイアログで「Capture Preferences」で、キャプチャオプションを指定して、「OK」をクリックします。
・パケットをLANからキャプチャするときは、「Interface」として「FETNDIS」を選択します。
・ネットワークに流れているすべてのパケットをキャプチャするなら、その他のオプションはデフォルトのままにします。

▼Cupture Preferences の設定

Interface
パケットをキャプチャするネットワークインターフェースを指定します。
Count
キャプチャするパケット数を指定します。0 を指定すると無限になります。
Filter
キャプチャするパケットに対しフィルタリング条件を指定します。
File
キャプチャ結果を保存するファイルを指定します。
Capture length
キャプチャするパケットの最大長を指定します。
Capture packets in promiscuous mode
ランダムにパケットをキャプチャするときに選択します。
Update list of packets in real time
キャプチャ中のパケットをリアルタイムに表示するときに選択します。
Automatic scrolling in live capture
パケットのリアルタイム表示で画面のスクロールを自動で行うときに選択します。
Enable name resolution
IPアドレスの代わりにドメイン名で表示させたたいときに選択します。

キャプチャ フィルタリング

キャプチャ時に特定のパケットだけを取り込むようにフィルタリングすることができます。
キャプチャフィルタの設定は、「Capture Preferences」の「Filter」にフィルタリング条件を入力して行います。

▼キャプチャフィルタの設定
キャプチャフィルタの設定方法は、tcpdumpコマンドのexpressionオプションと同じになっています。 JM Project 作成の Manpage of TCPDUMP が参考になります。

▼キャプチャフィルタの主な指定方法

dst hosthost
宛先IPアドレス
src hosthost
送信元IPアドレス
hosthost
送信元または宛先IPアドレス
ether dstehost
イーサーネット宛先アドレス
ether srcehost
イーサーネット送信元アドレス
ether hostehost
イーサーネット送信元または宛先アドレス
ip proto protocol
IPパケットのプロトコル
icmp, udp, tcpなどを指定できます
icmp, udp, tcp
ip proto protocol 短縮形
ether proto protocol
イーサーネットのプロトコル
ip, arp, rarpなどが指定できます
ip, arp, rarp
ether proto protocol の短縮形

  host :  名前またはIPアドレス
  ehost :  イーサーネットアドレス

▼比較演算子

==
等しい
!=
等しくない
>
大きい
<
小さい
>=
大きいか等しい
<=
小さいか等しい

▼論理演算子

not (!)
否定
and (&&)
論理積
or (||)
論理和

パケットを表示する

Ethereal の3つの表示ウィンドウにキャプチャされたパケットの内容が表示されます。
上段のウィンドウには、キャプチャしたパケットの送信元、宛先、プロトコルなどが時系列的に表示されます。
中段のウィンドウには、上段のウィンドウで選択されたパケットの詳細な解析結果が表示されます。ここには、パケットのヘッダやデータを細かく解析した情報を階層化して表示してくれます。物理層からアプリケーション層までのプロトコルが解析されて表示されます。
下段のウィンドウには、上段のウィンドウで選択されたパケットの生のデータが16進数とキャラクタコードで表示されます。中段のウィンドウと下段のウィンドウはリンクしており、ウィンドウ中段の解析情報をクリックすると下段のウィンドウの生データの該当する部分が反転表示されます。また、下段の生データのある箇所をクリックすると、該当する中段の解析情報が反転表示されます。

ディスプレイ フィルタリング

キャプチャした全パケットから特定のパケットだけを表示するためには、ディスプレイに対するフィルタリング機能を利用します。
フィルタリング条件は、メインウィンドウの左下にある「Filter」ボタンの右にあるテキストボックスに記入します。フィルタリング条件は、プロトコルの種類、パケットのフィールド名、比較演算子、論理演算子、値などで記述します。

フィルタリング条件設定方法

フィルタリング条件設定方法の概要を示します。
設定方法の詳細については、Ethereal のヘルプや添付のマニュアル (Manpage of TETHEREAL) が参考になります。

▼比較演算子
複数のフィルタリング条件式を比較演算子や論理演算子を用いて組み合わせることができます。

eq (==)
等しい
ne (!=)
等しくない
gt (>)
大きい
lt (<)
小さい
ge (>=)
大きいか等しい
le (<=)
小さいか等しい

▼論理演算子

and (&&)
論理積
or (||)
論理和
not (!)
否定

▼Ethernet (eth)

eth.addr
送信元または宛先イーサーネットアドレス。
ff:ff:ff:ff:ff:ff
0.1.2.3.4.5
eth.addr[0:3] == 00:01:02
eth.dst
宛先イーサーネットアドレス。
eth.src
送信元 Ethernetアドレス
eth.len
データの長さ
eth.type
プロトコルのタイプ番号

▼Internet Protocol (ip) 

ip.version
バージョン番号
ip.hdr_len
インターネットヘッダ長
ip.tos
サービスタイプ
ip.tos.precedence
TOS 優先度
ip.tos.delay
TOS 遅延
ip.tos.throughput
TOS スループット
ip.tos.reliability
TOS 信頼性
ip.tos.cost
TOS コスト
ip.len
全パケット長
ip.id
識別子
ip.flags
フラグ
ip.flags.df
フラグメンテーション不可フラグ
ip.flags.mf
後続フラグメントありフラグ
ip.frag.offset
フラグメントオフセット
ip.ttl
生存時間
ip.proto
上位層プロトコル
ip.checksum
ヘッダチェックサム
ip.src
送信元IPアドレス
ip.dst
宛先IPアドレス
ip.addr
送信元または宛先IPアドレス
129.111.0.7/16
ip.addr[-1:1] == 7
ip.addr[4:1] == 7

▼Transmission Control Protocol (tcp)

tcp.srcport
送信元ポート
tcp.dstport
宛先ポート
tcp.port
宛先または送信元のポート
tcp.seq
シーケンス番号
tcp.ack
応答確認番号
tcp.hdr_len
TCPヘッダ長
tcp.flags.urg
緊急フラグ
tcp.flags.ack
応答確認フラグ
tcp.flags.push
プッシュフラグ
tcp.flags.reset
リセットフラグ
tcp.flags.syn
シンクロナイズフラグ
tcp.flags.fin
終了フラグ
tcp.checksum
チェックサム
tcp.window_size
ウィンドウ
tcp.urgent_pointer
緊急ポインタ
tcp.flags
TCPのフラグフィールド値

▼User Datagram Protocol (udp)

udp.srcport
送信元ポート
udp.dstport
宛先ポート
udp.port
宛先または送信元ポート
udp.length
セグメント長
udp.checksum
チェックサム

2002.01.01