パケットで遊ぼう
#ssmjp 2015/04
@takahoyo
2015/4/25 1
本日の内容
パケットで遊ぶ
2015/4/25 3
本日の内容
パケットで遊ぶ
2015/4/25 4
パケットとは
パケット (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
どういうことだってばよ?
• ネットワーク上に流れているもの
• 郵便配達に例えると郵便物
• 例えば、Web通信の場合はこんな感じ
Ethernet TCPIP HTTP
2015/4/25 6
パケットと接する心構え
一.パケットをよく知ろう!
二.パケットを怖がらないで!
三.パケットに愛をこめて!
つまり…
2015/4/25 7
パケットは友達!!
パケットで遊ぶ
• キャプチャしたパケットを見る
• 送信するパケットを弄くる
• キャプチャしたパケットをいじる
• まあ他にもあるかも
2015/4/25 9
パケットで遊ぶ
• キャプチャしたパケットを見る
• 送信するパケットを弄る
• キャプチャしたパケットをいじる
2015/4/25 10
用意するもの
• 適当にキャプチャしたpcapファイル
• Wireshark
• バイナリエディタ
• パケットエディタ WireEdit
• https://wireedit.com/
2015/4/25 11
今回使うパケット
2015/4/25 12
今回やること
• 適当に記録されているpcapファイルを用意
• 記録されてるパケットを書き換えてみよう
• WireEditに読み込ませよう
• User-Agentでも変えてみるかー
• Wiresharkで問題なく表示出来るかみよう
• うまく行かなかったら直す
2015/4/25 13
これを…
2015/4/25 14
こうして
2015/4/25 15
こうじゃ!
2015/4/25 16
お分かり頂けただろうか
今回はshellshock風にしてみました
2015/4/25 17
Wiresharkで見てみる
2015/4/25 18
よし、これで終わり?
• 書き換え前と書き換え後の結果をよく見る
2015/4/25 19
エラーの原因
• HTTPヘッダ部分を書き換えた
= TCPのデータのバイト数が変わった
• TCPヘッダには…
• シーケンス番号、ACK番号
• 送信されるデータバイト数によって変化
• シーケンス番号とACK番号がおかしいのでは!
2015/4/25 20
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
・・・
・・・
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
・・・
・・・
2015/4/25 23
13のパケット
2015/4/25 24
13のパケット
2015/4/25 25
14のパケット
2015/4/25 26
14のパケット
2015/4/25 27
まとめ
• WireEditで簡単にpcapファイルの中身を変える
• Wiresharkで確認するとエラー
• WireEditはチェックサムは自動で計算
• シーケンス番号、確認応答番号は計算してくれない
• そこは、計算して直す
• きれいなパケットの完成\(^o^)/
• プロトコルの知識が深まるかもね
2015/4/25 28
~ FIN/ACK ~
2015/4/25 29
Top Related