【概要・まとめ】
Wiresharkでキャプチャしたパケットを編集し、その編集したパケットを送信できるオープンソースのソフトOstinatoを紹介します。
【内容】
・Ostinatoとは?
Ostinatoとは、”Wireshark in Reverse(=Wiresharkの逆)”を目的にしたツールで、オープンソースのプロジェクトです。
Ostinatoを利用すると、Wiresharkでキャプチャしたパケットを編集し、その編集したパケットを送信することができます。
・Ostinatoのインストール
(Ostinatoはクロスプラットフォームのソフトですが、今回はWindows環境へのインストールを紹介します。)
Ostinatoのインストールは、以下のサイトよりWin32版をダウンロードし、Zipを解凍すれば終了です。
http://code.google.com/p/ostinato/downloads/list
(注) Ostinatoの使用にはWinPcapのインストールが必要です。WinPcapはWiresharkをインストールしている環境ではインストールされています。
・Wiresharkでキャプチャしたパケットの編集・送信方法
Wiresharkでキャプチャしたパケットの編集・送信方法を、以下の流れで紹介していきます。
0. Wiresharkでパケットキャプチャ・保存
1. Wiresharkで保存したパケットを、Ostinatoで編集
2. 編集したパケットを送信
0. Wiresharkでパケットキャプチャ
ここでは、WiresharkでICMPをキャプチャし、保存します。
0.1. Wiresharkを起動します。
0.2. わかりやすさのため、”Filter”に”icmp”と入力し、ICMPのみを表示させるようにします。
0.3. pingを、Wiresharkを起動しているホストに対して行います。
0.4. WiresharkにICMPが記録されていることを確認します。
0.5. Wiresharkのパケットキャプチャを終了します。
0.6. わかりやすさのため、1つのICMPリクエストのみを表示させます。
具体的には、”Filter”に”frame.number == ICMPリクエストのフレームナンバー”と入力します。
0.7. File –> Export Specified Packetsをクリックします。
0.7. *.pcap形式でファイルを保存します。
1. Wiresharkでキャプチャしたパケットを、Ostinatoで編集
1.1. ostinato.exeを起動します。
1.2. Port Groupをクリックし、ポートを選択します。
1.3. 右上のウィンドウを右クリックし、”Open Streams”を選択します。
1.4. Wiresharkでキャプチャ・保存したpcapファイルを開きます。
1.5. 以下のウィンドウが出てきたら、”OK”をクリックします。
1.6. 新しくできた行を右クリックし、Edit Streamをクリックします。
1.7. パケットの編集を行います。
今回は、HexDumpの部分を変更してみます。
”Protocl Data”のタブをクリック –> HexDumpとたどり、”74 65 73 74” (=test)と変更し、OKを押します。
変更前はこのような感じです。
変更後はこのような感じです。
1.8. 変更を反映させるために”Apply”をクリックします。
2. 編集したパケットを送信
2.0. 本当に変更されたのかを確認するために、Wiresharkを起動します。
わかりやすさのため、”Filter”に”icmp”と入力し、ICMPのみを表示させるようにします。
2.1. Ostinatoの画面で、下の画面のPortを選択し、”Start Tx”(= 一番左のボタン)をクリックします。
2.2. Wiresharkの画面で、ICMPが表示され、”test”と表示されており編集したパケットが送信されたことが確認できます。
・補足
Ostinatoは、(Wiresharkでキャプチャしたパケットの編集することなく)ゼロからパケットを作成することもできます。
その際は、上記1.3. の”Open Streams”の代わりに”New Stream”を選択します。
リンク
・ostinato
http://code.google.com/p/ostinato/
・Ostinato capture > edit > replay (英語)
Ostinatoを紹介したブログです。
http://trycatch.be/blogs/decaluwet/archive/2011/10/31/ostinato-capture-gt-edit-gt-replay.aspx