連載
» 2010年06月28日 00時00分 公開

セキュリティ・ダークナイト(4):パケットキャプチャ術で秘密もちょっぴりこぼれた? (4/5)

[辻 伸弘(ソフトバンク・テクノロジー株式会社),@IT]

フィルタしてみよう

 ここからは、Wireshark Display Filterについて話を進めていこう。といっても、公式サイトの「Display Filter Reference」を見て分かるように、Wiresharkには相当の数のフィルタが存在している。そのため今回は「これだけは覚えるべし!」というフィルタのみを紹介しよう。

 それでは、フィルタの演算子から紹介しよう。フィルタに使える比較演算子は下記のようなものがある。

演算子 説明
eq
==
等しい(Equal)
ne
!=
等しくない(Not Equal)
gt
>
右辺より大きい(Greater Than)
lt
<
右辺より小さい(Less Than)
ge
>=
右辺より大きい、もしくは、等しい(Greater than or Equal to)
le
<=
右辺より小さい、もしくは等しい(Less than or Equal to)

 例えば、IPアドレス(IPv4)「192.168.0.1」が送信先になっている通信にマッチさせたい場合は、

ip.dst == 192.168.0.1

や、

ip.dst == 192.168.0.1

と記述することが可能である。また、逆に送信先に「192.168.0.0」のネットワークを含まないといった場合には、

ip.dst != 192.168.0.0/24

や、

ip.dst ne 192.168.0.0/24

と記述することで可能である。

 また、前述したように単一のフィルタでは事足りない場合もあるだろう。その際には、論理演算子を用いて条件を指定することが可能である。使用可能な論理演算子は以下の通りである。

演算子 説明
and
&&
論理積
or
||
論理和
not
!
否定

 例えば、IPアドレス(IPv4表記)「192.168.0.1」が送信元、「かつ」送信先ポートがtcp/22(ssh)の通信をマッチさせたい場合は、

ip.src == 192.168.0.1 && tcp.dstport == 22

や、

ip.src eq 192.168.0.1 and tcp.dstport eq 22

と記述することが可能である。

 また、IPアドレス(IPv4表記)「192.168.0.1」「または」「192.168.0.2」が送信元になっている通信をマッチさせたい場合は、

ip.src == 192.168.0.22 || ip.src == 192.168.0.254

や、

ip.src eq 192.168.0.22 or ip.src eq 192.168.0.254

と記述できる。

 次に、筆者が考える「これだけは!」というフィルタを紹介しておこう。

  • ip.addr
    IPアドレス(v4)を指定。送信元、送信先限らず指定したIPアドレスが通信に含まれていた場合にマッチする。
  • ip.dst
    IPアドレス(v4)を指定。指定したIPアドレスが通信内の送信先に含まれている場合にマッチする。
  • ip.src
    IPアドレス(v4)を指定。指定したIPアドレスが通信内の送信元に含まれている場合にマッチする。
  • ip.host
    ホストアドレスを指定。送信元、送信先限らず通信に指定したホストアドレスが含まれていた場合にマッチする。
  • ip.dst_host
    ホストアドレスを指定。指定したホストアドレスが通信内の送信先に含まれている場合にマッチする
  • ip.src_host
    ホストアドレスを指定。指定したホストアドレスが通信内の送信元に含まれている場合にマッチする
【注】
上記、[ip]の部分を[ipv6]とすることでIPv6通信に対応できる。

  • tcp
    TCP通信すべてにマッチする。
  • tcp.port
    ポート番号を指定。送信元、送信先限らず指定したポート番号が通信に含まれていた場合にマッチする
  • tcp.dstport
    ポート番号を指定。指定したポート番号が送信先ポートである場合にマッチする
  • tcp.scrport
    ポート番号を指定。指定したポート番号が送信元ポートである場合にマッチする。
【注】
上記[tcp]の部分を[udp]とすることで、同内容でudp通信に対応可能である。

  • tcp.flags.[FLAG]
    [FLAFGS]部分に[ack][cwr][ecn][fin][push][reset][syn]を指定可能。1または0の値を指定することで含む含まないをマッチさせることが可能である。
    例えば、SYN/ACKとビットがセットされている通信にマッチさせたい場合は以下のように記述することが可能である。
tcp.flags.syn == 1 && tcp.flags.ack == 1

  • [対応プロトコル名]
    tcp、udp、icmpやarp、dns、httpなどプロトコル名のみでのフィルタリングも可能である。「http」とすることでhttpのみを表示したり、「

!arp and !dns」とすることでARP、DNSの通信を表示させないといったことも可能である。

 また、いくつかのフィルタについてのチートシートも公開されているので、印刷してデスクに貼っておくのもよいだろう。

フィルタで遊んでみる

 では、問題を解いてみよう。

問題:
このファイルから正しい「認証情報」を取り出せ!

atit_dn4_ntsuji.cap


 上記ファイルは、とある通信を保存したものである。通信の内容には、認証情報が含まれている。正しい認証情報のIDとパスワードを、tsharkのみで見つけ出してほしい。

【注】
記事中で紹介したフィルタのみでは見つけ出すことは困難であるため「Display Filter Reference」を適宜参照してほしい。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。