Network/Wireshark

キャプチャーフィルタ

Capture - Interface - Options にて キャプチャー対象のInterfaceをダブルクリックすることで、フィルターEdit画面を表示させる。
BPF(Berkeley Packet Filter)構文で記述する(大概のパケットキャプチャーツールで使われている構文)

種類説明
Typehost、net、portアドレスやポート番号の指定
Dirsrc、dst方向を指定
Proto特定のプロトコルether、ip、tcp、udp、http、ftp

フィルタ例

フィルタ用途
src host <IP> and dst port <番号>送信元が<IP>且つ宛先ポートが<番号>
!ether host <MACアドレス><MACアドレス>以外
icmp[0] == 8 or icmp[0] == 0エコー要求またはエコー応答 ※1
icmp[0:2] == 0x0301ICMPタイプ3、コード1(ホスト到達不能)※2
tcp[13] & 32 == 32URGフラグがセットされたTCPパケット ※3
tcp[13] & 16 == 16ACKフラグがセットされたTCPパケット
tcp[13] & 8 == 8PSHフラグがセットされたTCPパケット
tcp[13] & 4 == 4RSTフラグがセットされたTCPパケット
tcp[13] & 2 == 2SYNフラグがセットされたTCPパケット
tcp[13] & 1 == 1FINフラグがセットされたTCPパケット
tcp[13] == 18TCP SYN-ACKパケット(SYNとACKのビットが両方立っているため、2 + 16 = 18 を指定している)
broadcastブロードキャストトラフィック

※1 icmpパケットのタイプフィールドはパケットの一番先頭にあるのでオフセット位置として[0]を指定。Type8(エコー要求)Type0(エコー応答)
※2 0:2 は オフセット位置が 0 でオフセット位置からのデータの長さは 2 であることを示す。つまりオフセット0から始まる2byteのデータを比較してる
※3 tcp[13]はbyte位置を示しておりbitの位置に直すと 13*8byte = 104bit になる。
  ビットの立ち方によって複数のフラグが同時に設定される為、& 記号を使用しビットの位置(ビット5が1⇒2^5=32)を指定している

 

ディスプレイフィルタ

表示するキャプチャーにフィルタをかける。Expression... をクリックすることでフィルタ例一覧を表示することが可能

  • フィルタの先頭に ! 付与で否定
  • and や or 条件で複数のフィルタを指定可能
  • フィルタしたパケットを保存するには、File - Export Specified Packets

フィルタ例

フィルタ抽出されるパケット
frame.time > "時間"指定した時間以降(frame.time > "2014-12-02 21:15")
ip.addr==<IPアドレス>指定したIPアドレス
!tcp.port==<番号>ポート番号が<番号>以外
tcp.flags.syn==1SYNフラグがセットされたTCPパケット
tcp.flags.reset==1RSTフラグがセットされたTCPパケット
!arpARPトラフィック以外
smtp or pop or imap電子メールのトラフィック
http.request.method==メソッド指定したメソッド(GETやPOST)
tcp contains 文字指定した文字が含まれるパケット
tcp.analysis.retransmissionTCPの再送(retransmission)のパケット


 

Statistics

メニュー説明
IO Graphパケットの数、パケット容量を時間軸でグラフ表示する。ミリ秒単位でスパイクしているようなパケットを確認することも可能
Flow Graph通信のやりとりを矢印で視覚的に表示する


 

Analyze

Expert Infos

パケットを表示した状態で、[Analyze] - [Expert Info] を選択することで、パケットの情報を分析することが出来る
タブの()内は重複パケットを含んだパケット数

タブ内容説明
Error-パケットもしくはそれを解析した解析機構でエラーが発生した物
WarningPrevious Segment Lostパケット消失。データストリームにおいて期待されたシーケンス番号がスキップされた場合に発生
ACKed Lost PacketACKパケットによって送達確認された筈のパケットが到達してない場合に発生
Keep Aliveコネクションのキープアライブパケットが確認された
Zero WindowTCP受信Windowサイズが一定値に達し、Zero Window通知が送られ、送信者にデータ送信を停止するように要求された場合に発生
Out-of-Orderシーケンス番号により、受信したパケットのシーケンスの乱れが検知された
Fast Retransmission重複ACKから20ミリ秒以内に発生した再送信
NoteTCP Retransmissionパケット消失の結果として発生。ACKが重複して受信された、またはパケットの再送タイマーがタイムアウトになった場合に発生
Duplicate ACKホストが次に期待するシーケンス番号を受け取らなかった場合、最後に受信したデータの重複ACKを生成する
Zero Window Probeゼロウィンドウパケットが送信された後に、TCP受信ウィンドウの状態を監視するのに使用
Zero Window Probe ACKZero Window Probeパケットに応答が送信された
Window is Full受信者のTCP受信ウィンドウがいっぱいの状態であることを、送信元ホストに知らせる場合に発生
Keep Alive ACKキープアライブパケットに応答が送信された
ChatWindow UpdateTCP受信ウィンドウサイズが変更されたことを送信者に通知するために、受信者によって送信される


 

小技

TCPで、ホスト間で同一パケットを確認する

Internet Protocol version 4 の Identification の値 が同じパケットを確認する

ディスプレイフィールドのカラムを追加する

任意のパケットを選択し、詳細表示の+を展開し、追加したいフィールドを右クリック「Applay As Columns」をクリックする。

パケットをダンプ出力

Wiresharkインストールディレクトリにある tshark を利用する。

tshark -r キャプチャファイル -x


 

用語

ARPリクエスト

宛先のMACアドレスが不明な場合に、IPアドレスからMACアドレスを求めるに使われるプロトコル。
受信したポート以外の全ポートにフラッディングし、宛先IPアドレスが自分以外の場合はパケットを破棄し、宛先が自分であった場合はリプライする

[ホストA]           ARP         [ホストB]
送信元IP :192.168.1.1               送信元IP :192.168.1.10
送信元MAC:F2:F2:F2:AA:BB:CC            送信元MAC:D5:D5:D5:DD:EE:FF ★自身のMACを埋め込んだパケットをリプライ
送信先IP :192.168.1.10                             送信先IP :192.168.1.1
送信先MAC:?         ⇒ FF:FF:FF:FF:FF:FF   送信先MAC:F2:F2:F2:AA:BB:CC

gratuitous ARP

IPアドレスは変更される場合が多々ある為、キャッシュに記憶されたIPアドレスとMACアドレスのマッピングが不整合になってしまう。
これによる通信障害を防ぐ為、gratuitous ARPパケットが送信され、受け取った機器のキャッシュを新しいマッピング情報で強制的に更新する。
GARPは一方的に送りつけられるものだが、受け取った側は結果としてARPキャッシュを更新する為、「gratuitous(勝手)」と名前についている。
GARPヘッダはARPヘッダーと酷似しているが、送信元IPと、送信先IPが同一なのが異なる。

イニシャルシーケンス番号(ISN)

TCPのパケット送信はデータを分割して、相手がどこまで受信したか確認する。
ヘッダに「シーケンス番号」を付与してパケット送信。
受信側は「シーケンス番号+受信データのバイト数」をACK番号として応答を返す。
受信側からきたACK番号が送信データより小さければ、その番号以降のデータが届いてないと判断しパケットを再送する。

Windowサイズ

受信側がACK応答を返すまでに溜め込めるバッファ容量。1パケット(MTUの値)毎にACK送信すると効率が悪い。
そこでWindowサイズまで受信した後で、ACK送信することで効率化を図る。
サーバーが輻輳しバッファが足りなくなると、Windowサイズを小さくするパケットをクライアント側に送信することで調整を行う。
これ以上、受信できない場合は、zero windowパケットを送信する。

TCP Retransmission

TCPの再送(相手からのACK応答が一定時間ない)を意味する。再送タイムアウトの時間を倍にして再送する。デフォルトでWindowsは5回。Linuxは15回再送する


トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-15 (水) 23:36:18 (276d)