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

パケットで遊ぼう! #ssmjp 2015/04

Embed Size (px)

Citation preview

Page 1: パケットで遊ぼう! #ssmjp 2015/04

パケットで遊ぼう

#ssmjp 2015/04

@takahoyo

2015/4/25 1

Page 2: パケットで遊ぼう! #ssmjp 2015/04

本日の内容

パケットで遊ぶ

2015/4/25 3

Page 3: パケットで遊ぼう! #ssmjp 2015/04

本日の内容

パケットで遊ぶ

2015/4/25 4

Page 4: パケットで遊ぼう! #ssmjp 2015/04

パケットとは

パケット (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

Page 5: パケットで遊ぼう! #ssmjp 2015/04

どういうことだってばよ?

• ネットワーク上に流れているもの

• 郵便配達に例えると郵便物

• 例えば、Web通信の場合はこんな感じ

Ethernet TCPIP HTTP

2015/4/25 6

Page 6: パケットで遊ぼう! #ssmjp 2015/04

パケットと接する心構え

一.パケットをよく知ろう!

二.パケットを怖がらないで!

三.パケットに愛をこめて!

つまり…

2015/4/25 7

パケットは友達!!

Page 7: パケットで遊ぼう! #ssmjp 2015/04

パケットで遊ぶ

• キャプチャしたパケットを見る

• 送信するパケットを弄くる

• キャプチャしたパケットをいじる

• まあ他にもあるかも

2015/4/25 9

Page 8: パケットで遊ぼう! #ssmjp 2015/04

パケットで遊ぶ

• キャプチャしたパケットを見る

• 送信するパケットを弄る

• キャプチャしたパケットをいじる

2015/4/25 10

Page 9: パケットで遊ぼう! #ssmjp 2015/04

用意するもの

• 適当にキャプチャしたpcapファイル

• Wireshark

• バイナリエディタ

• パケットエディタ WireEdit

• https://wireedit.com/

2015/4/25 11

Page 10: パケットで遊ぼう! #ssmjp 2015/04

今回使うパケット

2015/4/25 12

Page 11: パケットで遊ぼう! #ssmjp 2015/04

今回やること

• 適当に記録されているpcapファイルを用意

• 記録されてるパケットを書き換えてみよう

• WireEditに読み込ませよう

• User-Agentでも変えてみるかー

• Wiresharkで問題なく表示出来るかみよう

• うまく行かなかったら直す

2015/4/25 13

Page 12: パケットで遊ぼう! #ssmjp 2015/04

これを…

2015/4/25 14

Page 13: パケットで遊ぼう! #ssmjp 2015/04

こうして

2015/4/25 15

Page 14: パケットで遊ぼう! #ssmjp 2015/04

こうじゃ!

2015/4/25 16

Page 15: パケットで遊ぼう! #ssmjp 2015/04

お分かり頂けただろうか

今回はshellshock風にしてみました

2015/4/25 17

Page 16: パケットで遊ぼう! #ssmjp 2015/04

Wiresharkで見てみる

2015/4/25 18

Page 17: パケットで遊ぼう! #ssmjp 2015/04

よし、これで終わり?

• 書き換え前と書き換え後の結果をよく見る

2015/4/25 19

Page 18: パケットで遊ぼう! #ssmjp 2015/04

エラーの原因

• HTTPヘッダ部分を書き換えた

= TCPのデータのバイト数が変わった

• TCPヘッダには…

• シーケンス番号、ACK番号

• 送信されるデータバイト数によって変化

• シーケンス番号とACK番号がおかしいのでは!

2015/4/25 20

Page 19: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 21

192.168.1.154 157.7.205.139

13. GET /favicon.ico HTTP/1.1seq = 3340263310ack = 257904800data = 306 byte

14. HTTP/1.1 404 Not Foundseq = 257904800ack = 3340263616data = 315 byte

15. GET /favicon.ico HTTP/1.1 syn = 3340263616ack = 257905115data = 306 byte

seq = 3340263310ack = 257904800

↓seq = 257904800ack = 3340263310 + 306

seq = 257904800ack = 3340263616

↓seq = 3340263616ack = 257904800 + 315

・・・

・・・

Page 20: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 22

192.168.1.154 157.7.205.139

13. GET /favicon.ico HTTP/1.1seq = 3340263310ack = 257904800data = 273 byte

14. HTTP/1.1 404 Not Foundseq = 257904800ack = 3340263583data = 315 byte

15. GET /favicon.ico HTTP/1.1 syn = 3340263583ack = 257905115data = 306 byte

seq = 3340263310ack = 257904800

↓seq = 257904800ack = 3340263310 + 273

seq = 257904800ack = 3340263583

↓seq = 3340263583ack = 257904800 + 315

・・・

・・・

Page 21: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 23

13のパケット

Page 22: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 24

13のパケット

Page 23: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 25

14のパケット

Page 24: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 26

14のパケット

Page 25: パケットで遊ぼう! #ssmjp 2015/04

2015/4/25 27

Page 26: パケットで遊ぼう! #ssmjp 2015/04

まとめ

• WireEditで簡単にpcapファイルの中身を変える

• Wiresharkで確認するとエラー

• WireEditはチェックサムは自動で計算

• シーケンス番号、確認応答番号は計算してくれない

• そこは、計算して直す

• きれいなパケットの完成\(^o^)/

• プロトコルの知識が深まるかもね

2015/4/25 28

Page 27: パケットで遊ぼう! #ssmjp 2015/04

~ FIN/ACK ~

2015/4/25 29