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