ooppeennsosouurrcceeccononffeerreennccee22001111hh...

67
Wireshark Wireshark を使いこなそう! を使いこなそう! Hokkaido.cap 2011.06.11 Masayuki YAMAKI Open Open Source Source Conference Conference 2011 2011 Hokkaido Hokkaido

Upload: others

Post on 30-Dec-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

  • WiresharkWireshark を使いこなそう!を使いこなそう!Hokkaido.cap2011.06.11

    Masayuki YAMAKI

    OpenOpen SourceSource ConferenceConference 20112011 HokkaidoHokkaido

  • 自己紹介自己紹介• 八巻 正行 (やまき まさゆき)- 株式会社ネクサス http://www.nexus21.co.jp

    »UNIX/Windowsサーバーの導入・保守の仕事をしています。

    - 一般社団法人LOCAL 正会員- Hokkaido.cap 主催- 北海道情報セキュリティ勉強会 スタッフ- サイバー大学 IT総合学部 在籍

    Twitter : @yamaki_panda ⇔

  • パンダが好きです

    注:セミナーの内容とパンダは特に関係ありません

    写真提供 : ジャイアントパンダ写真集(フリー素材) http://giantpanda.jp

  • Hokkaido.capHokkaido.cap• 北海道パケットキャプチャ勉強会

    - 「実践パケット解析」の内容をベースに月1回ナイトセミナー形式で開催

    - 参加無料- 後援 : LOCAL インフラ部- 次回予告

    Hokkaido.cap#47/22(金) 19:00~

  • WiresharkWireshark とはとは• GPL(GNU Plublic License)で配布され

    ている、オープンソースのLANアナライザ- 旧名称 : Ethereal- Windows、Mac OS X、UNIX/Linux で

    動作- http://www.wireshark.org

  • 資料について資料について• Hokkaido.capで使用した演習スライド

    を以下のURLで公開しています。- 今回のスライドはHokkaido.cap#1の

    「Wiresharkの使い方(基礎編)」をベースに+αして編集したものです。

    http://bit.ly/mwiW4B- このスライドも後日公開しますので、書い

    てあることは無理してメモしなくても大丈夫です。

  • 本日のメニュー本日のメニュー

    • パケットキャプチャ時の注意点• パケット解析に必要なスキルとは• 様々な解析機能・統計機能

    Wiresharkを使う上で、これだけは知っておくと便利なこと

  • CaptureCapture OptionsOptions

  • 大量キャプチャ・低スペックマシン大量キャプチャ・低スペックマシン高負荷による取りこぼしを防ぐため• Display Option で以下を OFF にする- Update list of packets in real time

    »実際の時間に合わせてパケット一覧部を更新- Automatic scrolling in live capture

    »キャプチャ中に自動スクロール• 以下は ON にする- Hide capture info dialog

    »キャプチャ状況パネルを非表示

  • 大量キャプチャ・低スペックマシン大量キャプチャ・低スペックマシン• Name Resolution を OFF にする- Enable MAC name resolution

    » MACアドレスの上位3オクテット(ベンダーID部)をベンダー名に変換

    - Enable network name resolution» IPアドレスをホスト名に変換→ OFFにすることを強く推奨

    - Enable transport name resolution» トランスポート層のポート番号をアプリケーショ

    ン名に変換→ Client側の送信元ポート番号はアテにならない

  • 大量キャプチャ・低スペックマシン大量キャプチャ・低スペックマシン• キャプチャファイルを分割保存する- Capture files → Use mulutiple files

    »キャプチャファイルがギガバイト単位になるとWiresharkがクラッシュすることがあるため、ある程度の容量・時間で分割保存するとよい

    • Ring buffer with はディスク容量に余裕がある場合は有効にしなくてもよい

    »意図しない上書きを防ぐ

  • キャプチャキャプチャ フィルタフィルタ• 原因のわからないネットワークトラブ

    ル調査では、むやみにフィルタしないほうがよい- 「キャプチャフィルタ」ではなく、

    「ディスプレイフィルタ」で絞り込む- キャプチャフィルタは特定の通信先、特

    定のアプリケーションのみキャプチャしたい場合等、目的がはっきりしている場合に使用する

  • tsharktshark• Wiresharkのコマンドライン版

    - GUIよりも動作が軽く、バッチ化してスケジューリングすることも可能

    - デフォルトインストールでWireshark本体と同じディレクトリに導入される

  • tsharktshark 使用例使用例• tshark –h : ヘルプの表示• tshark –D : インターフェースのリストを表示• tshark -i 1 -n -a duration:100

    -b filesize:1000 -w C:¥temp¥test.pcap -i: インターフェースの指定-n:すべての名前解決を無効-a : 停止条件 (上記は100秒後に停止)-b : ファイル出力条件

    (上記は1000KBで次のファイルへ移動)-w : 保存ファイル名 (-bも指定しているため

    タイムスタンプ付きのファイル名となる)

  • パケット解析に必要な知識パケット解析に必要な知識• Wiresharkはキャプチャした結果をありのま

    まに表示する• 「なにが起こっているか」を正しく知るた

    めには、解析したいプロトコル、アプリケーションの知識が不可欠

    • さらに「なぜそれが起こるか」まで追究するためは多くの場合、別作業(実機の設定確認・デバッグなど)が必要次ページ以降、例としてHTTP通信がWiresharkでどのように見えるか確認し、解決の手掛かりを掴めるようにする

  • メインメイン ウィンドウウィンドウ• Wiresharkの基本となる画面のため、まずこ

    の画面の見方を正しく理解する

  • パケット一覧部パケット一覧部• キャプチャしたパケットを時系列で表示する

    - 例えばHTTP通信の場合、ARPでゲートウェイを探す→DNSによる名前解決→TCPの3wayハンドシェイクの後にHTTPリクエスト送信といった一連の流れを確認できる

    • 「View」→「Time Display Format」で時刻の表示形式を変更できる(デフォルトはキャプチャ開始からの相対時間)

  • 色分けの意味色分けの意味• パケットはプロトコル毎に色分けされる- 「View」→「Coloring rules」で変更可- 問題のあるパケットは 黒背景に赤字 で表

    示される

  • InfoInfo部分の内容を読み取る部分の内容を読み取る• 実際のリクエスト/レスポンスに加え、

    Wiresharkが通知するメッセージに注目する項目 説明

    Fragmented IP Protocol IPパケットのフラグメント(断片化)TCP segment of a reassembled PDU

    MSS(Maximum Segment Size)を超えたためTCPレイヤで分割されたデータ

    TCP Window Update ウィンドウサイズが変更されたTCP Dup Ack 受信側から同じ応答確認番号のACKを受け取ったTCP Out-Of-Order 順番の乱れたパケットTCP Retransmission TCPによる再送要求TCP Previous segment lost パケットの欠落

  • パケット詳細部パケット詳細部• Wiresharkが解読した内容をヘッダやレイヤ

    別に展開、表示する

  • パケット詳細部パケット詳細部 -- FrameFrame• パケット全体についての説明を表示

    (Wiresharkが自動で生成したフィールド)項目 説明

    Arrival Time パケットをキャプチャした時間Time delta from previos packet

    直前のパケットをキャプチャした時点からの経過時間

    Time since reference or firest frame

    最初のパケットをキャプチャした時点からの経過時間

    Frame Number パケットの番号 (最初のパケットからの連番)Packet Length パケットのサイズCapture Length キャプチャした際のフレームサイズ

    (基本的にPacket Lengthと同じサイズ)Protocol in frame パケットに含まれているヘッダ情報

  • パケット詳細部パケット詳細部 –– EthernetEthernet IIII• Ethernet IIヘッダの内容を表示

    項目 説明Destination 宛先NICのMACアドレスSource 送信元NICのMACアドレスType イーサタイプ (Ethernet IIに続くパケットの

    ヘッダ形式)

    • IG bit : マルチキャスト or ユニキャストか• LG bit : 本来のアドレス(工場出荷時のアドレス)か否か• Ethernet IIヘッダのうち、プリアンブルフィールド(パ

    ケットの同期を取る部分)とFCS(Frame CheckSequence)は表示されない。

  • パケット詳細部パケット詳細部 –– Internet ProtocolInternet Protocol• IPヘッダの内容を表示

    項目 説明Version IPのバージョンHeader Length IPヘッダのサイズDifferentiatedServices Field

    パケットの重要度 (サービスの種類と優先度)0の場合は帯域制御やQoSを行わない

    Total Length パケットの全長Identification パケットの識別情報Flags Reserved bit: 予約用

    Don’t fragment: 1の場合パケットの分割禁止More fragment: 1の場合分割されたパケットがある

    Flagment offset 分割されたパケットの現在のパケットの位置(0の場合は先頭のパケット)

  • パケット詳細部パケット詳細部 –– Internet ProtocolInternet Protocol

    項目 説明Time to live パケットの生存時間

    ルータを経由する毎に1ずつ減り、0になると破棄Protocol IPの後に続くヘッダの形式Headerchecksum

    ヘッダチェックサム(IPヘッダの内容を計算した値とこの値を比較し、IPヘッダの妥当性を検証する)

    Source 送信元ノードのIPアドレスDestination 宛先ノードのIPアドレス

    • IPヘッダには上記の他に「Option」が存在するが、現在この機能はほとんど使われておらず、省略されている。

    (続き)

  • パケット詳細部パケット詳細部 –– TransmissionTransmission Control ProtocolControl Protocol• TCPヘッダの内容を表示

    項目 説明Source port 送信元プロセスのポート番号Destination port 宛先プロセスのポート番号Sequence number

    現在送信しているTCPセグメントのシーケンス番号(通信が確立すると初期シーケンス番号+1がセットされ、以降送信セグメントのバイト数が足されていく)

    Next Sequence number

    次のシーケンス番号(現在のシーケンス番号に送信するTCPデータサイズを足した値)

    Acknowledgement number

    確認応答番号(受信したTCPセグメントの番号)実際には受信したバイト数が確認応答番号となる

    • シーケンス番号や確認応答番号は通信の都度ランダムな初期値がセットされる。パケット詳細部ではバイナリ部で表示される実際の値ではなく相対的な値を表示している。

  • パケット詳細部パケット詳細部 –– TransmissionTransmission Control ProtocolControl Protocol項目 説明

    Header length TCPヘッダのサイズFlags 通信の制御を行う

    Reserved: 予約領域(常に0)Nonce: 明示的な輻輳処理(RFC3540)CWR: ウィンドウサイズの縮小ECN-Ecoh: Urgentの場合→パケットの緊急処理Acknowledgement: 確認応答番号が有効Push: プッシュ機能が有効Reset: TCP通信の強制終了Syn: 通信の開始手続きFin: 通信の終了手続き

    Window size 連続して受信可能なバッファサイズChecksum TCPヘッダの妥当性チェック• TCPヘッダには上記の他に「Option」が存在するが、現在

    この機能はほとんど使われておらず、省略されている。

  • パケット詳細部パケット詳細部 –– TransmissionTransmission Control ProtocolControl Protocol項目 説明

    SEQ/ACK Analysis

    Reassembled TCPSegments

    Wiresharkが自動的に生成したフィールド関連のあるパケットへのリンクを生成したり、RTT(Round Trip Time:ACKパケットの往復時間)を表示したりする

  • パケット詳細部パケット詳細部 –– HypertextHypertext Transfer ProtocolTransfer Protocol• HTTPのリクエストライン、操作(メソッド)、

    ヘッダ、レスポンスの内容を表示する

  • バイナリデータ部バイナリデータ部• キャプチャしたデータを生の状態で16進数

    (または2進数)とASCIIでする- テキストベースのプロトコルは内容が読める

  • パケットの検索パケットの検索• 「Edit」→「Find Packet」または

    [Ctrl]+[F]- ディスプレイフィルタ、16進数、文字列

    による検索が可能

  • パケットのマーキングパケットのマーキング• 右クリック→「Mark Packet」または

    [Ctrl]+[M]- マーキングしたパケットは黒背景に白文字になる- 特定のパケットのみ操作・保存したい場合など

    に使用

  • その他その他 主なショートカットキー主なショートカットキーショートカットキー 説明

    [Ctrl] + [O] ファイルを開く[Ctrl] + [W] ファイルを閉じる[Ctrl] + [R] ファイルの再読み込み[Ctrl] + [+] 拡大表示[Ctrl] + [-] 縮小表示[Ctrl] + [=] 原寸表示[Ctrl] + [G] 指定した番号のパケットへ移動[Ctrl] + [F] パケットの検索[Ctrl] + [N] 次の検索候補へ移動[Ctrl] + [B] 前の検索候補へ移動[Ctrl] + [M] パケットのマーキング[Shift] + [Ctrl] + [N] 次のマーキングパケットへ移動[Shift] + [Ctrl] + [B] 前のマーキングパケットへ移動

  • ディスプレイディスプレイ フィルタフィルタ• 元のキャプチャデータは変更せずに条件に合

    致するパケットだけを表示する• Filter テキストボックスへ条件式を入力

  • ディスプレイフィルタディスプレイフィルタ 書式書式• 構文とフィルタ例Protocol String1 String2 Comparison

    operatorLogical

    OperationsOther

    Expreession

    ip. addr (省略) 10.1.60.1== &&→ IPアドレス 10.1.60.1を含むHTTPのパケットを表示

    ・・Value

    http

    ftp. request. command “USER”==→ FTPリクエストコマンドに“USER”を含むパケットを表示

    icmp→ ICMPのパケットを表示

    !icmp→ ICMPのパケットを表示しない

    ip.addr == 192.168.0.1 && ip.addr == 192.168.0.2→ IPアドレス192.168.0.1と192.168. 0.2のパケットを表示

  • 比較演算子比較演算子 とと 論理演算子論理演算子

    英語表記 記号表記 説明

    eq == 等しいne != 等しくないgt > 大なりlt < 小なりge >= 以上le

  • FollowFollow TCPTCP StreamStream• TCP通信の一連の中身を確認する• 右クリック→「Follow TCP Stream」

    クライアントからのリクエスト

    サーバーからのレスポンス

  • FollowFollow TCPTCP StreamStream 補足補足• 「Follow TCP Stream」を実行すると、自

    動で該当パケットのみ表示するディスプレイフィルタが適用された状態となる。

  • DecodeDecode AsAs• 既定のポート番号以外の通信では、自動解析の結

    果が期待どおりとならない• 手動でポート番号とプロトコルを指定する• 右クリック →「Decode As」

  • DecodeDecode AsAs 前後の比較前後の比較実行前

    実行後

  • ExpertExpert InfoInfo CompositeComposite• 全体でどんなエラーが発生しているか確認• 「Analyze」→「Expert Info Composite」

  • Protocol HierarchyProtocol Hierarchy• 通信全体に占めるプロトコル毎の割合をみる• 「Statistics」→「Protocol Hierarchy 」

  • EndpointsEndpoints• ノード毎の統計、通信の多いノードの把握• 「Statistics」→「Endpoints」

  • ConversationsConversations• 2つのノード間の統計、対話状況をみる• 「Statistics」→「Conversations 」

  • IO GraphsIO Graphs• トラフィックの推移をみる• 「Statistics」→「IO Graphs 」

  • TCPTCP StreamStream GraphsGraphs• RTT(往復遅延時間)、スループットの把握• 「Statistics」→「TCP Stream Graphs」→

    → 「Round Trip Time Graphs」→ 「Throughput Graphs」

  • このセッションのまとめこのセッションのまとめ• Wiresharkの使い方をざっと紹介しました。• パケット解析にはプロトコルの知識が不可

    欠です。本を読むだけではなく、実際にWiresharkを使ってプロトコルの実装や動きを覗いてみるとより理解が深まると思います。

    • Wiresharkには様々な解析機能・統計機能があります。うまく使いこなして、効率よく解析しましょう。

  • HTTPHTTPオブジェクトの出力機能オブジェクトの出力機能• 「File」→「Export」→「Objects」

    →「HTTP」

  • 以上でこのセッションは終了ですが以上でこのセッションは終了ですが

  • 「守」師や各流派の教えを忠実に守り、それからはずれる

    ことのないように精進して身につけよ。

    「破」今まで学んで身につけた教えから一歩進めて他流の

    教え、技を取り入れることを心がけ、師から教えられたものにこだわらず、さらに心と技を発展させよ。

    「離」破からさらに修行して、守にとらわれず破も意識せ

    ず、新しい世界を拓き、独自のものを生みだせ。

    参考:活人剣抜刀道

  • つよくてニューゲーム一度ゲームをクリアした後、クリア時点での能力・アイテムを引き継いで、最初から強い状態でゲームをはじめること。

  • もう一度基本に立ち戻ってもう一度基本に立ち戻って新しくはじめてみよう新しくはじめてみよう

    きっとこれまでの経験は誰かの役に立ち、新しきっとこれまでの経験は誰かの役に立ち、新しい発見や出会いがあるはずです。い発見や出会いがあるはずです。これからもこれからもOSCOSC--dodoや勉強会を通して、一緒にや勉強会を通して、一緒に北海道の技術者文化を作っていけたら幸いです。北海道の技術者文化を作っていけたら幸いです。