wireshark の通信サンプルファイル

Hacker Japan (ハッカー ジャパン) 2012年 05月号
特集で wireshark をつかってマルウェア解析というものがあったので、
実践してみました

まずは、サンプルを取得するため
http://wiki.wireshark.org/SampleCaptures
へアクセスし
slammer.pcap
をダウンロードします
かなり下のほうでわかりにくいので、
chrome を使っているなら
Alt + e
をおして
検索を選択、もしくは f をおすと、検索窓が
画面の右上にでるので、
これに
slam
と入力すれば
slmamer.pcap のところまで移動できます
Screenshot-2012-05-23 19:31:38
このサイトには
HTTP や POP などの基本的な通信パターンのほかにも
DNSへの Exploit 実行記録などもありますので、
さまざまな通信のログをみることができます

暗号キーを16進数で入力するときの参考サイト

wireshark で 無線LANのパケットを覗くには
設定をするときに ASCIIコードではなく16進数でキーを入力する必要があります
通常、1~Fということでそんなに悩まないのですが
暗号キーやパスフレーズになると、わかりにくいと思うので
変換したときの一覧が載っているサイトがあったので紹介です
他のワイヤレスネットワークでTrueMobile 1150シリーズを使う:DellTM TrueMobileTM 1150 シリーズ ユーザーズガイド
このように、大文字、小文字も含めてたくさんの入力変換が必要になるので
これを手打ちで調べていたら、かなりの時間をロスします
そのうち、ASCII から16進数に変換するスクリプトを作って置こうと思います

wireshark の表示時間の変更

wireshark のデフォルト設定では時間をみにくいので
設定を変更します
参考サイトは
WireSharkでタイムスタンプのフォーマットを変更する。
View >Time Display format >Time of day
で設定を変更します
初期設定は
Seconds Since Beginning of Capture 123.123456

Automatic (File Format Precision)
になっているので、これを
Date of Time of Day に変更します
これで、表示が見やすくなります
こちらが初期状態
Screenshot-2012-04-20 20:40:45
そして、こちらが変更後
Screenshot-2012-04-20 20:42:23
多少は見やすくなります

オプション画面でのフィルター設定

引き続き、wireshark 関連です
リアルタイムで通信データを監視するとき、不要な情報を
削ぎ、必要な情報のみをみるようにキャプチャーフィルターを設定します
設定方法は、最初に wiresharkを立ち上げたときに
Capture Option をクリックする方法
Screenshot-2012-04-18 20:23:27
または、メインツールバーの左から2番めにある
Show the CaotyreIotuibs ボタンをクリックする方法
Screenshot-2012-04-18 20:26:46
または、Capture > Options を実行するか
ショートカットキーで
Ctrl + k で実行します
起動したら設定するには
Capture Filter をクリックして設定します
Screenshot-2012-04-18 20:35:52
ただし、
ディスプレイフィルターとは違って
Filter string の右に
Exception ボタンがないので、そこまで細かく設定できません
Screenshot-2012-04-18 20:36:05
ちなみに、今回勉強に使った書籍
Hacker Japan (ハッカー ジャパン) 2012年 05月号
についていたサンプルデータは
この機能を使って
eth,addr == 08:00:27:46:2c:20
というフィルターをつけて
LANすべてのパケットから
ubuntu 11.10 の仮想マシンのパケットだけを集めたものだそうです
これを活用すれば
Android とか iPhone のマルウェアが入っても通信内容を解析して
発見できるようになるかもしれません
ちなみに、hacker japan のwebサイトに
今回の特集のデータがダウンロードできるので
こちらも合わせてみるとより理解しやすくなります

無線LANのキャプチャーデータを wireshark で見るには

wireshark をそのままつかっても
無線LANの通信をみることはできません
このため、暗号キーになる
WEP key
WPA-PSKパスフレーズ

wiresharkへ設定します
設定するには
Edit > Preference > Protocol > IEEE 802.11
を開き
Enable decryption にチェックをいれ
key#1 のところに暗号キーを
16進数で入力します
そのまま入力してもダメなので注意
Screenshot-2012-04-18 20:13:13

無線LANのキャプチャーデータを wireshark で見る場合

wireshark はパケット解析ならかなりの高性能です
ちなみに、最近 android アプリでもないかと調べています
無線LANハッカーの場合、wireshark はつかわず
別のツールを使うようです
理由は
wireshark は
キャプチャしたパケット解析にはすごい便利なのですが
無線LANの WEP解析の場合
パケットの中身ではなくて、パケットの数が重要とのことです
しかも解析したら、もうパケットは用済みで破棄します
もうひとつ、いきなりwireshark を使って行わない理由があり
いくら WEPでも
Airodumg-ng でデータを取得して
wireshark でみても暗号化されたままなので、そのままでは
内容をみることはできません
もともと、wiresharkは暗号クラックツールではないので
ただし、暗号キーが知られていると
話は別で、普通に通信内容が見られます
このことから、やはりWEPは危険なので使わないようにしましょう

ウィザード形式でフィルター作成

wireshark でのフィルター条件を作成するのが
面倒と言う場合、 ウィザードを使って
条件式を作成できます
Filter 入力枠の右に Expression というボタンがあるので
これをクリックします
Screenshot-2012-04-17 21:51:16
あとは、マウスでポチポチとやりながら設定することができます

プロトコルのフィルタリング

引き続き、今度は wireshark でプロトコルでフィルタリングしてみます
画面の一番上のほうにある Filter にプロトコルを入力します
(tcp とか ndp とかです)
Screenshot-2012-04-17 21:11:46
ここに tcp と入力して Enterキーを押すと
tcp だけに絞り込みできます
Screenshot-2012-04-17 21:20:51
ただしすべてのプロトコルには対応してはいないようで
mdns と igmp はダメでした
また、ここに一致、不一致などの指定をすることも可能です
MACアドレスで指定したいなら
ethr.addr ==
の後に MACアドレスを
IPアドレスで指定したいなら
ep.addr ==
でIPを指定すればOK
wireshark フィルタリング演算子
と合わせてみるとおもしろいと思います

wireshark フィルタリング演算子

wireshark のフィルタリング演算子のメモです
== または eq
一致
!= または ne
不一致
> または gt
より大きい
< または lt よち小さい >= または ge
以上
<= または le 以下 && または and 論理値 || または or 論理和 これらがわかると、Filter string が書きやすくなります ちなみに、filter string は Screenshot-2012-04-17 20:19:41

eth.addr == 00:0b:a2:f6:85:f3
のところです
意味は
eth.addr が 00:0b:a2:f6:85:f3 と一致するです
書籍に wireshark フィルタ一例が載っていました
eth.src == 00:0b:a2:f6:85:f3
MACアドレス 00:0b:a2:f6:85:f3 からの送信
src は送信
ip.dst == 255.255.255.255
ブロードキャストパケット
dst でおそらくブロードキャスト
ip.addr == 192.168.77.0/24
IPアドレス 192.168.77.0~255
addr でアドレス
!(tcp.port ==80)
TCPポート80以外
!がついているので、~でないという意味
tcp。port == 80 で TCP80ポート
つまりHTTP
tcp.port == 80 || udp.port == 80
TCP 80 ポート
もしくは
UDP 80 ポート
|| なので、どちらかがOKでよい
tcp.flag.syn
SYNフラグのついたTCPポート
flag.synでSYNフラグ
!dns
DNS以外のプロトコル
!なので、~でない、つまりDNSでないという意味になります

ディスプレイフィルター

Screenshot-2012-04-17 07:29:43
hacker Japan 2012 05が微妙にわかりずらいかも
と思ったので、試しに画像入れてみました
この右から4番めのアイコンをクリックすることで
ディスプレイフィルターを使えます
Ethernet address 00:08:15:00:08:15
を選んで
Filter string に出ている MACアドレスの値を変更して
適用を押せば、絞り込みできます
例えば
eth.addr == 00:0b:a2:f6:85:f3
とすると、
00:0b:a2:f6:85:f3
のMACアドレスのものだけを表示するようになります
Screenshot-2012-04-17 20:19:41
みてのとおり、該当するものなら、背景色が緑ですが
適当にいれても、背景色が赤くなり、適用できませんので注意です
こうやってフィルタリングすれば、効率的な情報収集が可能になります