wiresharkの使い方5技!知っておきたいフィルター機能やパケットの見方など!
エンジニアとは切っても切り離せない存在・・・。
パケットの流れを表示、解析、加工することができるツール
そう!wireshark(ワイヤーシャーク)です!
今回はwireshark知っておきたい便利技について解説します!
これを知っていると知らないとでは、作業効率が大幅に違うと思いますので、チェックしておいて損はないと思いますよ!
wiresharkの時間表示方法の変更!
「.pcapファイルを開いたらまずはコレをやる!」
そのぐらい定番なのがこの時間表示の変更です。
ファイルを開いたとき、通常は相対時間で表示されるのですが(最初のパケットを0秒とし、そこからの経過時間)これを日本時間(JST)もしくは世界協定時(UTC)で表示することが可能です。
設定方法はいたって簡単!!早速説明していきましょう。
世界協定時(UTC)と日本時間(JST)の切替方法
まず「No.」や「Time」や「Souce」などと書いてあるバーの部分で右クリックし、「columnPreferences...」をクリックします。
すると、新しくウィンドウが立ち上がってくるので、Timeの種別の選択を表示します。
「UTC」と書いてあるものを選択すると、世界標準時となり、「Time(for...pecified)」と表示されているものを選択すると日本時間が表示されます。
ここは日本なので、日本時間を選択しました。
絶対時間と相対時間の切替方法
次に絶対時間(時刻)と相対時間(経過時間)の切り替えです。
絶対時間は下記のようにHH:MM:SS.SSSのように時刻で表示されます。
相対時間の方は最初のパケットを起点(0秒)としてそこからの経過時間が表示されます。
絶対時間と相対時間の切り替え方法は以下の通りです。
メニュバーの「表示」から「時刻表示形式」を選択すると、「時刻」と「キャプチャ開始から秒数」という選択肢が現れるので、
絶対時間にしたい場合は「時刻」を、相対時間を表示させたい場合は「キャプチャ開始からの秒数」を選択します。
解析などの場合はほかのログファイルと見比べることが多いので、前者の絶対時間表示の方が比較的よくつかわれますね。
wiresharkでフィルター機能を使うならまずはipアドレス
ネットワーク機器やサーバは様々なクライアントや端末と通信をしているため、キャプチャファイルにはありとあらゆるパケットが表示されますよね。
ですがあなたが確認したいパケットはそんなに多くは無いはず。
そんな状況のためにワイヤーシャークは表示させたくないパケットを非表示にする機能を備えています。
それが"フィルター"という機能です!
その中でも、使用頻度ナンバーワンのフィルターがIPアドレスのフィルターです。
送信アドレス指定
ip.dst == xx.xx.xx.xx
受信IPアドレス指定
ip.src == xx.xx.xx.xx
使用IPアドレス指定
ip.addr == xx.xx.xx.xx
これらの指定を以下の赤枠に入力してENTERをクリック!
すると条件に当てはまらないパケットが非表示となります。
wiresharkでANDなどの条件を適用
フィルター機能を習得(思い出した?)したであろうあなたが次に知りたいのは
フィルターをアンド条件(and,かつ)やオア条件(or,または)で指定することではないでしょうか??
ここではAND条件、OR条件について解説いたします。
AND条件
記号:&&
使用例:ip.dst == xx.xx.xx.xx && ip.src == yy.yy.yy.yy
使用例の内容:「xx.xx.xx.xx」宛に「yy.yy.yy.yy」から送信されたパケット
OR条件
記号:||
使用例:ip.src == xx.xx.xx.xx || ip.src == yy.yy.yy.yy
使用例の内容:「xx.xx.xx.xx」もしくは「yy.yy.yy.yy」から送信されたパケット
上記の様に記号をそれぞれ条件式の間に挟んで使用します。
また、3つ以上の条件を指定したいときは括弧()を使用して、階層的に条件をつけることもできます。
例:(ip.src == xx.xx.xx.xx || ip.src == yy.yy.yy.yy) && ip.dst == zzz.zzz.zzz.zzz
内容: 「xx.xx.xx.xx」もしくは「yy.yy.yy.yy」から送信され、あて先が「zzz.zzz.zzz.zzz」であるパケット
また、該当条件の直前に「!」を付けることで「否定」を表現することができます。
使用例:!(ip.src == xx.xx.xx.xx) && ip.dst == yy.yy.yy.yy
使用例の内容:「xx.xx.xx.xx」以外から「yy.yy.yy.yy」宛に送信されたパケット
wiresharkでシーケンス表示する
フィルターできたはいいけれど、ぶっちゃけかなり見辛いのがワイヤーシャークのログです。
しかし同鮫はこの見辛さを補うフローグラフという機能を持っております。
ワイヤーシャークのツールバーから「分析」→「フローグラフ」を選択すると・・・
こんな感じでシーケンシャルにパケットを、確認することができます。
可視化したパケットは見やすいですね!
ちなみに上記図の左下の「表示」の選択で「表示されたパケット」を選択しないとフィルターで非表示にしているパケットまで表示されてしまうので、注意が必要です。
wiresharkのパケットを時間分割!
これだけ見やすく条件を付けてフローグラフにしたとしても、あなたが見たいパケットはほんの数秒の間に流れているって事も有りますよね。
そんなときは時間指定を使って、パケットを分割しちゃいましょう。
今回も使用するのはフィルター機能です。
以下のように時刻指定でフィルターを設定してみましょう。
frame.time >= “2015-01-01 00:00:00.000”
上記の例では2015年1月1日0時0分0秒以降にやり取りされたログを表示します。
これもかなり便利な機能だと思います。
また、フィルターを素早く書ける方法として以下のやり方もあります。
パケットを右クリックして出てきたメニューの内「フィルターとして適用」から「選択済」などをクリックしてみてください。
クリックした場所によって、送信元IPや時間、プロトコルなどのフィルタを簡単にかけることもできます!
まとめ
いかがでしたか?
初めてwiresharkに触った方も、久しぶりに触った方も、苦労されたのではないでしょうか?
フィルタでせっかく作ったキャプチャも、再度開きなおすと元の状態の戻ってしまいます。
そんな時は通常の保存方法ではなく、以下の方法で保存すると、フィルターした内容が適用された状態で(表示されたパケットのみが)を保存できます。
ツールバーから「ファイル」→「指定したパケットをエクスポート」からPacketRangeのDisplayedのラジオボタンにチェックを付けると、表示されたパケットのみが保存されます。
また、余談ですが「ファイル」→「エキスパート解析」でcsvファイルでの保存もできますので、解析などされる際にはこちらの機能も便利かと思われます!
以上!wiresharkの使い方でした!
本記事が皆様のITライフの一助になれば幸いです。