57
Wireshark の使い方(基礎編) Wireshark の使い方(基礎編) Hokkaido.cap #1 2011.03.11 2011.03.11 Masayuki YAMAKI

Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Embed Size (px)

DESCRIPTION

Hokkaido.cap#1の演習資料です。

Citation preview

Page 1: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Wireshark の使い方(基礎編)Wireshark の使い方(基礎編)

Hokkaido.cap #1

2011.03.112011.03.11

Masayuki YAMAKI

Page 2: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

今日の目標

• パケットキャプチャって何?を理解しましょう。

• Wireshark の基本的な使い方を覚えましょう。• Wireshark の基本的な使い方を覚えましょう。

• 楽しくわいわいやりましょう。

2

Page 3: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

パケットキャプチャとは

• ネットワーク上に流れるトラフィックのパケット(データ通信の固まりの単位)を採取する事

- OSやアプリケーションが行っている通信の中身(実際に起こっている事)を探る

• パケットを解析することでわかることがある。ただし、すべてを明らかにできるわけではない。

• どこまでができて、どこからができないのかを見極めて効率良く調査、解析する。率良く調査、解析する。

• 許可なしに第三者の通信(特にインターネット等公共の通信)をキャプチャすることは犯罪 (ダメ、ゼッタイ)

3

Page 4: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャに必要なもの

• LANアナライザ (Snifferとも呼ばれる)- Wireshark、tcpdump、Windowsネットワーク・モニタ- Wireshark tcpdump Windows

• 自分宛ての通信以外をキャプチャする場合は以下を準備

- プロミスキャスモード対応NIC• 自分宛て以外のパケットを破棄せず、受信したすべてのパケットを読み込むモード

• Wiresharkでは動作モードを選択可(デフォルト : ON)

- HUB (シェアードハブ、リピータハブ)- HUB (シェアードハブ、リピータハブ)• MACアドレスを判別してコリジョンドメインを分割するL2スイッチの場合、ポートミラーリング機能を利用するのが一般的

4

Page 5: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Wireshark とは

• GPL(GNU Plublic License)で配布されているオープンソースのLANアナライザ

- 旧名称 : Ethereal

- Windows、Mac OS X、UNIX/Linux で動作

• パケットキャプチャをするためには、パケットキャプチャドライバが必要

- WinPcap : Windows用 (インストーラーに同梱)

AirPcap Windows LAN- AirPcap : Windows 無線LAN用

- LibPcap : UNIX/Linux用

5

http://www.wireshark.org

Page 6: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Windows版 Wiresharkのインストール

• 最新版を使用すること- セキュリティパッチが含まれる

- 同梱のWinPcapを使用したほうが無難

• インストール時の選択は通常デフォルトで問題ない- ファイルタイプの関連付け : 有効

- インストールするモジュール : すべて- インストールするモジュール : すべて

- WinPcapドライバの自動起動 : 有効

• 気になる人は次ページ以降の解説参照

6

Page 7: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

インストールモジュールの選択

• TShark : Wireshark のコマンドライン版• Plugin / Extensions

- Dissector Plugin : バイナリ解析用プラグイン

- Tree Statistics Plugin : 詳細ツリー表示用プラグイン

- Mate - Meta Analysis and Tracing Engine : メタ分析、トレースエンジン(現時点ではexperimental 版 ・・・以前のバージョンではチェックが外れていた)

- SNMP MIBs : SNMPで使用されるMIB情報

• Tools- Editcap : キャプチャファイルの分割、フォーマット変換

- Text2Pcap : パケットのASCIIとHexDumpからキャプチャファイルを生成

7

- Text2Pcap : パケットのASCIIとHexDumpからキャプチャファイルを生成

- Mergecap : キャプチャファイルのマージ

- Capinfos : キャプチャファイルに関する情報を出力

- Rawshark : libpcapデータのDump、解析

Page 8: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

WinPcap ドライバの自動起動

• チェックを入れない場合、Wireshark起動時に「管理者として実行」を選択しないとキャプチャできない。- (右のメッセージが出てInteface ListにNICデバイスが表示されない)

8

Page 9: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

WinPcap ドライバの自動起動 (補足)

• NPF (NetGroup Packet Filter Driver) サービスのレジストリ値で制御可能

- HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet- HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥NPF¥ START (DWORD値)• 0x2 : SERVICE_AUTO_START

- (前ページ、チェック時のデフォルト)

• 0x3 : SERVICE_DEMAND_START- (前ページ、チェックなし時のデフォルト)- (前ページ、チェックなし時のデフォルト)

• 0x4 : SERVICE_DISABLED- (無効)

9

Page 10: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

インストール後に登録されるサービス

• Remote Packet Capture Protocol v.0 (experimental) - WinPcap をインストールすると導入されるRPCAPサーバ

リモートキャプチャを行う場合に利用するリモートキャプチャを行う場合に利用する

- services.msc の画面より起動制御可能スタートアップの種類は「手動」のため、勝手に起動することはない

10

Page 11: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

起動してみよう

キャプチャの開始

11

Page 12: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

メインウィンドウ

パケット一覧

パケット詳細

12

バイナリ表示

Page 13: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

メインウィンドウ画面構成

• パケット一覧のペイン

- キャプチャデータに含まれるパケットの一覧• パケット番号 / キャプチャされた時間 / 送信元 / 送信先 / プロトコル /• パケット番号 / キャプチャされた時間 / 送信元 / 送信先 / プロトコル /パケットに含まれる情報

» [Ctrl] + [↑][↓] キーでカーソル移動できる

- プロトコルの種類毎に色分けされる

• 「View」 → 「Coloring Rules」 より設定変更可

• パケット詳細のペイン

- 選択したパケットの詳細をツリー状に表示- 選択したパケットの詳細をツリー状に表示

• バイナリのペイン

- フォーマットされる前の生のデータを表示

13

Page 14: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Wiresharkの設定画面

• 「Edit」 → 「Preferences」

14

Page 15: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

設定画面の項目

• User Interface - 画面のレイアウト、フォント、色の設定

• Capture• Capture- キャプチャ方法の設定

• Printing - データをプリントアウトする際の設定

• Name Resolution - MACアドレス、ホスト名、プロトコルの名前解決- MACアドレス、ホスト名、プロトコルの名前解決

• Protocols - プロトコルの表示方法に関する設定

15

Page 16: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

カスタマイズ検討項目 : Capture

• Default Interface- デフォルトでキャプチャするインターフェースの指定

• Capture packets in promiscuous mode• Capture packets in promiscuous mode- プロミスキャスモードの ON/OFF

• Update list of packets in real time- 実際の時間に合わせてパケット一覧部を更新

» 大量キャプチャ、低スペックマシンではOFFにするとよい

• Automatic scrolling in live capture- パケットキャプチャに合わせて自動スクロール- パケットキャプチャに合わせて自動スクロール

» 大量キャプチャ、低スペックマシンではOFFにするとよい

• Hide capture info dialog- パケットキャプチャの際に表示されるキャプチャ状況パネルを非表示

16

Page 17: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

カスタマイズ検討項目 : Name Resolution

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

Example : "02:A0:C9:05:04:03" to "Intel_05:04:03"Example : "02:A0:C9:05:04:03" to "Intel_05:04:03"

• Enable network name resolution- IPアドレスをホスト名に変換

(Enable concurrent DNS name resolution が有効の場合は複数の名前

解決要求をDNSサーバに送信)

Example : "10.5.6.7" to "mail-07.example.com"

» ONにするとDNSを参照するため、名前解決の負荷がかかる

• Enable transport name resolution• Enable transport name resolution- トランスポート層のポート番号をアプリケーション名に変換

Example : "25" to "smtp"

17

Page 18: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Capture Options• キャプチャするセッションだけに有効

- Capture• キャプチャフィルタ• キャプチャフィルタ

• バッファサイズ

- Capture File(s)• 保存するファイル名

(分割可能)

- Stop Capture• 自動停止の設定• 自動停止の設定

- Display Option

- Name Resolution

18

Page 19: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

補足 : Checksum Offload について

• Wiresharkでは、問題のあるパケットは赤色、黒色で表示される。自PCから送信する要求パケットだけが赤や黒で表示される場合、Checksum Offload (OSで行っているTCPチェックサムの計算をNICのハードウェアで処理する機能)によって、チェックサムエラーを起こしている場合がある。によって、チェックサムエラーを起こしている場合がある。

• 実際の通信エラーが発生しておらず、再送処理が発生していない場合、パケットを取得するうえでは問題ない。

19

Page 20: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャしたパケットを見てみよう

20

Page 21: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

パケットの検索

• 「Edit」 → 「Find Packet」 または [Ctrl] + [F]- 次候補検索 : [Ctrl] + [N] 前候補検索 : [Ctrl] + [B]

- フィルタ式、16進数、文字列を指定して検索が可能- フィルタ式、16進数、文字列を指定して検索が可能

21

Page 22: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

パケットのマーキング

• 右クリック → 「Mark Packet」 または [Ctrl] + [M]- マーキングしたパケットは黒背景に白文字になる

- マーキングしたパケットのみ保存したい場合などに使用- マーキングしたパケットのみ保存したい場合などに使用

22

Page 23: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャデータの保存とエクスポート

• 保存「File」 → 「Save As」

→ pcap形式で保存→ pcap形式で保存

• エクスポート「File」 → 「Export」

→ 「File」→ 「Objects」→ 「Objects」

→ txt, csv, htmletc …

23

Page 24: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

時間の表示フォーマット

• 「View」 → 「Time Display Format」- デフォルトはキャプチャ開始時間からの相対時間で表示される

Default

Date and Time of Day

Default

24

Page 25: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

2 種類のフィルタ

• キャプチャフィルタ

- パケットをキャプチャする際に適用するフィルタ-- 条件に合致したパケットのみ記録

• ディスプレイフィルタ

- キャプチャファイルを閲覧する際に適用するフィルタ

- 条件に合致したパケットのみ表示

• 上記2つのフィルタは構文が異なる

25

Page 26: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャフィルタ

• 「Capture Option」 → 「Capture Filter」 へ条件式を入力- ファイルサイズは抑えられるが、キャプチャしながらフィルタするため、

負荷は多少高くなる負荷は多少高くなる

- 原因のわからないネットワークトラブル調査などでは、むやみにフィルタしないほうがよい

26

Page 27: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャフィルタ書式

• 構文とフィルタ例

Protocol Direction Host(s) Value LogicalOperations

OtherExpreession

(省略) (省略) host 192.168.0.1 and port 80

• 有効な値の例

- Protocol : ether, ip, arp, tcp, udp (省略時:すべてのプロトコル)

- Direction : src, dst, src and dst, src or dst (省略時: src or dst)

⇒送信元または送信先IPが192.168.0.1であり、かつ送信元または送信先ポートが80番をキャプチャ

tcp dst portrange 80-88 and dst host 192.168.0.2⇒プロトコルがtcpで送信先ポートが80~88番であり、かつ送信先IPが192.168.0.2 をキャプチャ

27

- Direction : src, dst, src and dst, src or dst (省略時: src or dst)- Host(s) : net, port, host, portrange

- Logical Operations : not, and, or (not は構文の先頭に付けることも可)notによる否定は最も優先順位が高く、or とand は同じ優先順位で左から順に処理される

例: 「not host 192.168.0.1 and port 23」は「 (not host 192.168.0.1) and port 23」に等しい

Page 28: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

キャプチャフィルタの作成と保存

• 「Capture」 → 「Capture Filters」

28

Page 29: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

ディスプレイフィルタ

• Filter テキストボックスへ条件式を入力- 構文が正しい場合 : テキストボックスの背景が薄緑色に変化

- 構文が正しくない場合 : テキストボックスの背景がピンク色に変化- 構文が正しくない場合 : テキストボックスの背景がピンク色に変化

• 元のキャプチャデータは変更せずに条件に合致するパケットだけが表示される

29

Page 30: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

ディスプレイフィルタ書式

• 構文とフィルタ例

Protocol String1 String2 Comparison operator

LogicalOperations

OtherExpreession・・

Value

• Expression ダイアログで構文を生成することも可能

ftp. Passive. ip 192.168.0.1== or⇒ ftpのパッシブIPが192.168.0.1 または httpのパケットを表示

・・http

30

Page 31: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

比較演算子と論理演算子

英語表記 記号表記 説明 英語表記 記号表記 説明

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

eq == 等しい

ne != 等しくない

gt > 大なり

lt < 小なり

ge >= 以上

and && 論理積

or || 論理和

xor ^^ 排他的論理和

not ! 否定

31

ge >= 以上

le <= 以下

Page 32: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

ディスプレイフィルタの例

• HTTPリクエストのパケットを表示

- http. request

• ICMPのパケットを表示しない

- !icmp

• IPアドレス192.168.0.1と192.168.0.2のパケットを表示

- ip.addr == 192.168.0.1 && ip.addr == 192.168.0.2

• IPアドレス 192.168.0.1 のパケットを表示しない• IPアドレス 192.168.0.1 のパケットを表示しない

- !(ip.addr == 192.168.0.1)ip.addr != 192.168.0.1 ではないので注意

32

Page 33: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

ディスプレイフィルタの保存

• 「Analyze」 → 「Display Filters」

33

Page 34: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Wireshark の主な解析機能

34

Page 35: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

プロトコルの分析 : Decode As• 既定のポート以外の通信(例:137番ポートでのFTPなど)では、自動

解析の結果が期待どおりとならないため、手動でプロトコルを指定して解析する

• → Decode As• 分析したいパケットを右クリック → 「Decode As」

35

Page 36: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Decode As 前後の比較

Decode 前

Decode 後

36

Page 37: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

TCP ストリームの表示

• 分析するパケットを右クリック → 「Follow TCP Stream」

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

サーバからのレスポンス

37

Page 38: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

TCP ストリームの表示(補足)

• 「Follow TCP Stream」を実行すると、自動で該当パケットのみ表示するディスプレイフィルタが適用された状態となる。

38

Page 39: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

Expert infos の表示

• 「Analyze」 → 「Expert Info」

39

Page 40: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – プロトコル階層と配分

• 「Statistics」 → 「Protocol Hierarchy 」

40

Page 41: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – エンドポイント

• 「Statistics」 → 「Endpoints 」

41

Page 42: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – 対話状況

• 「Statistics」 → 「Conversations 」

42

Page 43: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – Endpoint, Conversations (補足)

• 右クリックより、選択したノードを指定したフィルタ操作等が可能

43

Page 44: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – IOグラフ

• 「Statistics」 → 「IO Graphs 」

クリックするとメインウィンドウが該当する時間ンドウが該当する時間帯へ移動する

44

Page 45: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

統計情報 – Flowグラフ

• 「Statistics」 → 「Flow Graphs 」

クリックするとメインウィンドウが該当する時間帯へ移動する

45

Page 46: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

DEMODEMOキャプチャファイルの中から目的のパケット

を特定し、ファイルを復元します。

46

Page 47: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

まとめと参考資料

47

Page 48: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

このセッションのまとめ

• Wireshark のインストールとパケットのキャプチャ方法について学びました。チャ方法について学びました。

• Wiresharkの基本的な使い方を学びました。

• 皆さんも自分でどんどん触ってみて、操作に慣れていきましょう。

48

Page 49: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

参考資料

• 実践パケット解析 - Wiresharkを使ったトラブルシューティングルシューティング

- http://www.oreilly.co.jp/books/9784873113517

- ISBN978-4-87311-351-7

• Wireshark - Documentation- http://www.wireshark.org/docs

• The Wireshark Wiki- http://wiki.wireshark.org/FrontPage

49

Page 50: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

演習資料

50

Page 51: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

使ってみよう Wireshark

• 実際にWiresharkを使ってパケットを解析してみましょう。みましょう。

• わからないところは近くの参加者同士で相談しながら、または参考書を読みながらチャレンジしてみましょう。

51

Page 52: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

サンプルキャプチャファイル

• http.cap- 一般的なHTTPセッションのキャプチャファイルです。

• telnet-raw.pcap• telnet-raw.pcap- Raw(per-character)モードtelnetセッションのキャプチャファイルです。

• ftp-netbios3.pcap- セッションで紹介したFTPポート偽装ファイルです。

- Decode As機能を試してみましょう。

• test1.pcap, test2.dmp• test1.pcap, test2.dmp- サーバへの攻撃パケットをキャプチャしたファイルです。

- 使用されている攻撃手法を当ててみましょう。

52

Page 53: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

パケットヘッダと Ethernet フレーム

Ethernet Header (IP Header) (TCP Header) Data

パケットヘッダの階層構造

IP Header (TCP Header) Data

TCP Header Data

IP ではデータ

Ethernet ではデータ

Ethernetフレームフォーマット

53

SourceMAC Address

(6byte)FCS

(4byte)Type

(2byte)

DestinationMAC Address

(6byte)Data

(46~1500byte)

Ethernetフレームフォーマット

Page 54: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

IPv4 ヘッダフォーマット

Version(バージョン)

IHL(ヘッダ長)

Type of Service(サービスタイプ)

Identification

Total Length(パケット長)

Flags Flagment Offset

0 3 4 7 8 15 31(bit)16

Identification(識別子)

Flags(フラグ)

Flagment Offset(フラグメントオフセット)

Source IP Address(送信元IPアドレス)

Option + Padding

Destination IP Address(宛先IPアドレス)

Time To Live(生存時間)

Protocol(プロトコル番号)

Header Checksum(ヘッダチェックサム)

54

Option + Padding(オプション + パディング)

Data(TCP,UDP,ICMPなどのプロトコルのヘッダとデータ)

Page 55: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

TCP ヘッダフォーマット

Source Port(送信元ポート番号)

Sequence Number

Destination Port(宛先ポート番号)

0 3 4 9 10 15 31(bit)16

Sequence Number(シーケンス番号)

Option + Padding

Acknowledgement Number(確認応答番号)

DataOffset

Reserved(予約領域)

Window Size(ウィンドウサイズ)

Checksum(チェックサム)

Urgent Pointer(緊急ポインタ)

SYN

URG

ACK

PSH

RST

FIN

Code bit

55

Option + Padding(オプション + パディング)

Data (データ部)

Page 56: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

TCP コネクション管理

SYN (コネクション確立要求)

ACK (SYNに対する確認応答)SYN (コネクション確立要求)

ACK (SYNに対する確認応答)

FIN/ACK (コネクション切断要求)

コネクション確立後データデータ転送開始

コネクション確立(3 -Way Handshake)

56

ACK (FINに対する確認応答)

FIN/ACK (コネクション切断要求)

ACK (FINに対する確認応答)

コネクション切断

Page 57: Hokkaido.cap#1 Wiresharkの使い方(基礎編)

TCP ヘッダ CodebitCodebit 説明

URG(Urgent)

このビットが1の場合、緊急処理すべきデータが含まれることを意味する。

ACK(Acknowledgement)

このビットが1の場合、確認応答番号のフィールドが有効であることを意味する。コネクション確立時の最初のSYNセグメント以外は必ず1である必要がある。

PSH(Push)

このビットが1の場合、受信したデータをすぐに上位のアプリケーションに渡す。0の場合はバッファリングを許す。

RST(Reset)

このビットが1の場合、コネクションが強制的に切断される。何らかの異常を検出した場合に送信される。

SYN このビットが1の場合、コネクション確立の意思表示を表す。また、シーケ

57

SYN(Synchronize)

このビットが1の場合、コネクション確立の意思表示を表す。また、シーケ

ンス番号のフィールドに格納されている番号でシーケンス番号の初期化が行われる。

FIN(Fin)

このビットが1の場合、今後送信するデータがないことを意味する。それぞれのFINに対して確認応答されるとコネクションが切断される。