Slide 1

Slide 1 text

パケットで遊ぼう #ssmjp 2015/04 @takahoyo 2015/4/25 1

Slide 2

Slide 2 text

本日の内容 パケットで遊ぶ 2015/4/25 3

Slide 3

Slide 3 text

本日の内容 パケットで遊ぶ 2015/4/25 4

Slide 4

Slide 4 text

パケットとは パケット (packet) とは、「小包」のことであるが、日本 ではもっぱらパケット通信または蓄積交換(通信方式)に おける情報の伝送単位を指す。主としてISOのOSI参照モ デルでは第3層 ネットワークレイヤで使われる。RFC 1122では、インターネットレイヤで使われる。 パケット単位で通信を行うことにより、ネットワークの帯 域を連続して占有することがなくなって複数の端末からの 送受信データを1本の信号線上に多重化出来る、データの 一部が破損・喪失しても少ないコストで再送が可能になる、 網状の通信路構成に適している、などの利点がある。 Wikipedia(http://ja.wikipedia.org/wiki/%E3%83%91%E3%82%B1%E3%83%83%E3%83%88)より 2015/4/25 5

Slide 5

Slide 5 text

どういうことだってばよ? • ネットワーク上に流れているもの • 郵便配達に例えると郵便物 • 例えば、Web通信の場合はこんな感じ Ethernet TCP IP HTTP 2015/4/25 6

Slide 6

Slide 6 text

パケットと接する心構え 一.パケットをよく知ろう! 二.パケットを怖がらないで! 三.パケットに愛をこめて! つまり… 2015/4/25 7 パケットは友達!!

Slide 7

Slide 7 text

パケットで遊ぶ • キャプチャしたパケットを見る • 送信するパケットを弄くる • キャプチャしたパケットをいじる • まあ他にもあるかも 2015/4/25 9

Slide 8

Slide 8 text

パケットで遊ぶ • キャプチャしたパケットを見る • 送信するパケットを弄る • キャプチャしたパケットをいじる 2015/4/25 10

Slide 9

Slide 9 text

用意するもの • 適当にキャプチャしたpcapファイル • Wireshark • バイナリエディタ • パケットエディタ WireEdit • https://wireedit.com/ 2015/4/25 11

Slide 10

Slide 10 text

今回使うパケット 2015/4/25 12

Slide 11

Slide 11 text

今回やること • 適当に記録されているpcapファイルを用意 • 記録されてるパケットを書き換えてみよう • WireEditに読み込ませよう • User-Agentでも変えてみるかー • Wiresharkで問題なく表示出来るかみよう • うまく行かなかったら直す 2015/4/25 13

Slide 12

Slide 12 text

これを… 2015/4/25 14

Slide 13

Slide 13 text

こうして 2015/4/25 15

Slide 14

Slide 14 text

こうじゃ! 2015/4/25 16

Slide 15

Slide 15 text

お分かり頂けただろうか 今回はshellshock風にしてみました 2015/4/25 17

Slide 16

Slide 16 text

Wiresharkで見てみる 2015/4/25 18

Slide 17

Slide 17 text

よし、これで終わり? • 書き換え前と書き換え後の結果をよく見る 2015/4/25 19

Slide 18

Slide 18 text

エラーの原因 • HTTPヘッダ部分を書き換えた = TCPのデータのバイト数が変わった • TCPヘッダには… • シーケンス番号、ACK番号 • 送信されるデータバイト数によって変化 • シーケンス番号とACK番号がおかしいのでは! 2015/4/25 20

Slide 19

Slide 19 text

2015/4/25 21 192.168.1.154 157.7.205.139 13. GET /favicon.ico HTTP/1.1 seq = 3340263310 ack = 257904800 data = 306 byte 14. HTTP/1.1 404 Not Found seq = 257904800 ack = 3340263616 data = 315 byte 15. GET /favicon.ico HTTP/1.1 syn = 3340263616 ack = 257905115 data = 306 byte seq = 3340263310 ack = 257904800 ↓ seq = 257904800 ack = 3340263310 + 306 seq = 257904800 ack = 3340263616 ↓ seq = 3340263616 ack = 257904800 + 315 ・ ・ ・ ・ ・ ・

Slide 20

Slide 20 text

2015/4/25 22 192.168.1.154 157.7.205.139 13. GET /favicon.ico HTTP/1.1 seq = 3340263310 ack = 257904800 data = 273 byte 14. HTTP/1.1 404 Not Found seq = 257904800 ack = 3340263583 data = 315 byte 15. GET /favicon.ico HTTP/1.1 syn = 3340263583 ack = 257905115 data = 306 byte seq = 3340263310 ack = 257904800 ↓ seq = 257904800 ack = 3340263310 + 273 seq = 257904800 ack = 3340263583 ↓ seq = 3340263583 ack = 257904800 + 315 ・ ・ ・ ・ ・ ・

Slide 21

Slide 21 text

2015/4/25 23 13のパケット

Slide 22

Slide 22 text

2015/4/25 24 13のパケット

Slide 23

Slide 23 text

2015/4/25 25 14のパケット

Slide 24

Slide 24 text

2015/4/25 26 14のパケット

Slide 25

Slide 25 text

2015/4/25 27

Slide 26

Slide 26 text

まとめ • WireEditで簡単にpcapファイルの中身を変える • Wiresharkで確認するとエラー • WireEditはチェックサムは自動で計算 • シーケンス番号、確認応答番号は計算してくれない • そこは、計算して直す • きれいなパケットの完成\(^o^)/ • プロトコルの知識が深まるかもね 2015/4/25 28

Slide 27

Slide 27 text

~ FIN/ACK ~ 2015/4/25 29