Wireshark 表示フィルタの便利な使い方をまとめる
wiresharkでキャプチャーをすると大量にパケットが表示されてしまって、見たいパケットがどこにあるかわからなくなりますよね。
そんな時に便利なのが表示フィルタです。
【表示フィルタ】
表示フィルタとは、パケットをキャプチャーした後でフィルタをして絞るやり方です。表示フィルタを使えるようになると、実際に見たいパケットを絞ることができるので、キャプチャーデータの分析がかなり楽になります。
今回は表示フィルタのやり方について説明していきます。簡単に実施できる内容から少しカスタマイズする方法までお伝えします。やり方は、全部で3種類あります。(1)〜(3)で紹介します。
なお、利用しているwiresharkのバージョンは、2.4.2です。OSは、MacOS(Sierra)ですが、やり方は、Windowsでも同じです。
パソコンからで画像が小さくて見えにくい方は、お手数ですが画像をクリックしてください。大きくなります。スマートフォンの方は、スワイプで画像を大きくできます。
Contents
(1)表示フィルタのメニューバーを使う
一番簡単な方法:プロトコル単位でフィルタをする
一番簡単な方法は、表示フィルタにプロトコルを入力する方法です。下の画像の通り、絞りたいプロトコルを入力してEnterキーを押します。例えばicmpだったら、icmpと小文字で入力します。成功すると緑色になります。
フィルタが間違っていると赤色になります。
どんなプロトコルを入力できるかは、基本的にパケット一覧が表示されている「Protocol」に表示されている名前でOKです。
フィルタを消す
表示フィルタの式を消してEnterキーを押すか、Xボタンを押します。
もう少し詳細に絞りたい場合:式を入れる
プロトコルだけでなく、式を入れることでもっと細かく絞り込むことができます。IPアドレスはもちろん、TCPのシーケンス番号やDNSクエリーなどの文字列で絞ることだってできます。
例えば、IPアドレス:192.168.11.1で絞る場合は、「ip.addr == 192.168.11.1」と入力します。
もう少しIPアドレスの範囲を広げたい場合、プレフィックス長でフィルタすることもできます。
例えば、「ip.addr ==192.168.11.0/24」と入力すれば、192.168.0.0〜192.168.0.255の範囲に絞ることができます。
その他代表的なフィルタ一覧
よく使いそうなフィルタを上げて見ました。ご参考までに。
なお、式については、==(完全一致)以外にもあります。「!=(含まない)」、「contains(含む)」、正規表現を使える「matchs」があります。いろいろ試してください。
一覧 | 例) |
宛先MACアドレス eth.dst |
eth.dst == 98:e0:d9:xx:xx:xx |
送信元MACアドレス eth.src |
eth.src == 98:e0:d9:xx:xx:xx |
vlan vlan.id |
vlan.id == 2001 |
IPv4 ip.version |
ip.version == 4 |
IPアドレス ip.addr |
ip.addr == 192.168.11.1 |
宛先IPアドレス ip.dst |
ip.dst == 192.168.11.3 |
送信元IPアドレス ip.src |
ip.src == 192.168.11.1 |
deffiservの値 ip.dsfield |
ip.dsfield == 0x00 |
dscp ip.dsfield.dscp |
ip.dsfield.dscp == 0 |
フラグメント ip.flags |
ip.flags == 0x00(なし) ip.flags == 0x02(あり) |
tcpだけで絞る tcp |
tcp |
TCP 送信元ポート番号 tcp.srcport |
tcp.srcport == 65147 |
TCP 宛先ポート番号 tcp.dstport |
tcp.dstport == 443 |
TCPシーケンス番号 tcp.seq |
tcp.seq == 1 |
TCP ack tcp.ack |
tcp.ack == 1 |
TCPフラグ tcp.flags |
tcp.flags == 0x002(SYN) tcp.flags == 0x004(RST) tcp.flags == 0x010(ACK) tcp.flags == 0x011(FIN,ACK) tcp.flags == 0x012(SYN,ACK) tcp.flags == 0x018(PSH,ACK) |
UDPだけに絞る | udp |
UDP 送信元ポート番号 udp.srcport |
udp.srcport == 58079 |
UDP 宛先ポート番号 udp.dstport |
udp.dstport == 443 |
ICMPで絞る icmp |
icmp |
icmp タイプ別 icmp.type |
icmp.type == 0 (ping Echo reply)
icmp.type == 3 (宛先到達不能) icmp.type == 8 (ping Echo request) icmp.type == 11(時間超過) tracerouteの戻りに使われる |
DNSで絞る dns |
dns |
DNSクエリー dns.qry.name |
dns.qry.name == “www.yahoo.co.jp”(完全一致)
dns.qry.name contains yahoo(含む) |
作ったフィルタを保存してすぐ呼び出せるようにする:フィルタボタン
フィルタボタンを利用すると、フィルタの内容を保存することができて、ワンクリックですぐに呼び出すことができる便利な機能です。
保存の方法
保存したいフィルタの内容が表示フィルタに適用している状態で+をクリックします。
ラベルに呼び出したい名前を入力してOKボタンを押します。
そうすると、右側にフィルタボタンが出来上がります。
呼び出す方法
フィルタボタンを押すと、フィルタが呼び出され適用されます。
表示フィルタに何も適用されていない状態から、フィルタボタンを押して見ます。
そうすると、即座にフィルタが適用されます。
削除する方法
+ボタンを押します。
フィルタ書式設定..をクリックします。
①メニューをフィルタボタンにします。②削除したいフィルタを選択して、③–ボタンをクリックします。
そうするとフィルタボタンが消えます。
(2)パケットの詳細から右クリックしてフィルタを作る
説明
表示フィルタを入力しなくても、右クリックして選択するだけでフィルタを作ることができます。細かいフィルタの書式はわからなくても、やり方次第で詳細に絞ることができるので便利です。
プロトコル単位で絞る
icmpでフィルタを作成する場合、パケットの詳細欄にある①Internet Contorl Message Protocolをクリックして、②右クリック、フィルタとして適用、選択済の順番にクリックします。
そうすると、ICMPのフィルタが出来上がります。
もう少し詳細に絞る① IPアドレスで絞る場合
パケットを展開してそこで右クリックして選択すれば、もう少し細かく絞ることができます。
例えば、送信元IPアドレスで絞りたい場合、Internet Protocol Version 4を展開して①Sourceを選択、②右クリック、 フィルタとして適用 、選択済の順番にクリックします。
そうすると、表示フィルタのところにip.src == 192.168.11.3のフィルタが適用されて絞ることができます。
もう少し詳細に絞る② TCPストリームで絞る場合
TCPの一連の通信で絞りたい場合、TCPストリームでフィルタをするとすごく便利です。
Transmission Control Protocol(TCP)の箇所を展開して、①[Stream index xxx]を選択して、②右クリック、 フィルタとして適用 、選択済の順番にクリックします。ちなみに[ ]の表記は、実際のヘッダではなくwiresharkが生成したフィールドです。
そうすると、表示フィルタのところにtcp.stream eq xxのフィルタが適用されて、特定のTCPストリームで絞ることができます。
「フィルタを選択して適用」のオプションの説明
選択済
このフィルタを条件に含める場合に利用します。上記の項目で説明した通りです。
未選択
このフィルタを条件に含めない場合に利用します。頭に!がつきます。これは含めないという意味です。
…かつ選択内容と一致(a)
これは複数条件を作る場合に利用します。and条件です。(a)は、andの頭文字です。既にあるフィルタ且つここで追加したフィルタと一致したものを表示します。
例えば、既にフィルタに「ip.src ==192.168.11.3」がある状態で、destinationの192.168.11.1で右クリックをして「…かつ選択内容と一致(a)」を選択します。
「(ip.src == 192.168.11.3) && (ip.dst == 192.168.11.1)」となります。
sourceのIPアドレスが192.168.11.3で且つdestinationのIPアドレスが192.168.11.1のパケットだけ表示します。
なお、まだ何もフィルタがない状態で選択すると、新規でフィルタを作るだけです。上記で説明した「選択済み」と同じ動作をします。
…または選択内容と一致(o)
これも複数条件を作る場合に利用するのですが、どちらか一方の条件にマッチしたパケットを表示します。or条件です。(o)は、orの頭文字です。既にあるフィルタもしくは追加したフィルタのどちらかに一致したものを表示します。
例えば、既にフィルタに「ip.src == 192.168.11.3」がある状態で、destinationの192.168.11.1を選択すると、「(ip.src ==192.168.11.3) || (ip.dst == 192.168.11.1)」となります。
sourceのIPアドレスが192.168.11.3もしくはdestinationのIPアドレスが192.168.11.1のパケットを表示します。
なお、まだ何もフィルタがない状態で選択すると、新規でフィルタを作るだけです。
…かつ選択内容と不一致(n)
これも複数条件で、既にあるフィルタ且つここで追加したフィルタと一致しないものを表示します。and not条件です。(n)は、notの頭文字です。
例えば、既にフィルタに「ip.src ==192.168.11.3」がある状態で、destinationの192.168.11.1を選択すると、「(ip.src == 192.168.11.3) && !(ip.dst == 192.168.11.1)」となります。
sourceのIPアドレスが192.168.11.3で且つdestinationのIPアドレスが192.168.11.1ではないパケットだけ表示します。
なお、まだ何もフィルタがない状態で選択すると、「未選択」と同じ動作をします。新規でこの条件を含めないフィルタを作成します。
…または選択内容と不一致(r)
複数条件で、既にあるフィルタもしくはここで追加したフィルタと一致しないものを表示します。or not条件です。
例えば、既にフィルタに「ip.src ==192.168.11.3」がある状態で、destinationの192.168.11.1を選択すると、「(ip.src == 192.168.11.3) || !(ip.dst == 192.168.11.1)」となります。
sourceのIPアドレスが192.168.11.3もしくはdestinationのIPアドレスが192.168.11.1ではないパケットだけ表示します。
なお、まだ何もフィルタがない状態で選択すると、「未選択」と同じ動作をします。新規でこの条件を含めないフィルタを作成します。
フィルタを準備
こちらは、フィルタを作成するが、実行しない状態にします。いきなりフィルタを適用するのではなく、考えながら作成する時に便利です。
フィルタを適用したい箇所で右クリックをして「フィルタを準備」をクリックします。
表示フィルタには、フィルタがあるのですが、実際には適用されていません。
オプションの内容
オプションの内容は、上記で説明した「フィルタを選択して適用」と同じです。
対話フィルタ
両方向の通信をand条件でフィルタして絞ります。例えば、192.168.11.3<->192.168.11.1の通信だけを表示したい場合、パケットの一覧から右クリックをして対話フィルタ -> IPv4を選択します。
そうすると、表示フィルタが「ip.addr eq(==と同じ) 192.168.11.3 && ip.addr eq 192.168.11.1」となります。
他にもEthernet(MACアドレス)、IPv6、TCPといったオプションがあります。
③もっと細かく色々試したい場合は表示フィルタ式から
色々試したい場合は、表示フィルタ式から、適用したいフィルタを検索して適用することができます。
右側の書式をクリックします。
フィールド名に設定できる表示フィルタの一覧が出てきます。
検索したい場合は、正規表現を使って検索できます。例えば、IPをフィルタに適用したい場合、「^ip」と入力すると、IPで始まるフィルタの候補が出てきます。ちなみに^は、一番先頭という正規表現です。
候補が出てきたら、展開をして適用したいフィルタを探します。今回は、IPv4を展開して、ip.addrを選択しています。
詳細に式を入れたい場合は、リレーションから式を選んで、値を入れます。今回は、==を選択して、値を192.168.11.3にします。OKを押すとフィルタが適用されます。
フィルタ適用
まとめ
今回は、表示フィルタの使い方について説明しました。表示フィルタを使いこなせると、パケットの解析が非常に楽になってきます。しかも、使い方はそんなに難しくありません。1度、上記のことを実践していると簡単に表示フィルタを使うことができると思います。
表示フィルタの作成は、以下の3つから作成できます。
- (1)表示フィルタのメニューバーを使う
- (2)パケットの詳細から右クリックしてフィルタを作る
- (3)もっと細かく色々試したい場合は表示フィルタ式から
また、便利な機能としてフィルタボタンがあります。表示フィルタを保存することによって、使いたい時にワンクリックで呼び出すことができます。表示フィルタの右側にある、+ボタンを押すと保存ができます。
- 作ったフィルタを保存してすぐ呼び出せるようにする:フィルタボタン