Upload
sin-furuya02
View
3.361
Download
5
Embed Size (px)
DESCRIPTION
Wiresharkで検出できないチャットプログラムARPパケットのパディングにデータを詰め込む
Citation preview
Wiresharkで検出できない チャットプログラム
ARPパケットのパディングにデータを詰め込む
@furuya02
copyright© 2011/07.. by SAPPOROWORKS
ハンドル SIN/古谷誠進
Twitter @furuya02
仕事 某社でシステムサポートみたいな感じ
住居 札幌
年齢 アラフィフ 「45歳以上54歳まで( by ウィキペディア)」
自己紹介
copyright© 2011/07.. by SAPPOROWORKS
ARPのおさらい データリンク層でMACを取得するための必須プロトコル
copyright© 2011/07.. by SAPPOROWORKS
①端末AのMACは? 宛先 FF:FF:FF 送元 BB:BB:BB
②AA:AA:AAです。 宛先 BB:BB:BB 送元 AA:AA:AA
端末A AA:AA:AA
端末B BB:BB:BB
・「ARP要求」は、ブロードキャスト
・「ARP応答」は、ユニキャスト
GWのARP要求は常に流れる デフォルトゲートウエイのARPテーブルがタイムアウトで消えるとき・・・・
copyright© 2011/07.. by SAPPOROWORKS
GW
GWのMACは? 宛先 FF:FF:FF
・外部と通信するためにGWのMACアドレスを検索する
「ARP要求」が、常に流れている。
・「ARP要求」はブロードキャストなので、
スイッチングHUBを超えて流れてくる。
ARPパケット サイズは14+28=42バイト
copyright© 2011/07.. by SAPPOROWORKS
0000000 : ff ff ff ff ff ff 00 1f d0 d0 12 17 08 06 00 01 0000010 : 08 00 06 04 00 01 00 1f d0 d0 12 17 c0 a8 00 0a 0000020 : 00 00 00 00 00 00 c0 a8 00 fe
Ethernetヘッダ あて先/送り元/プロトコル
14バイト
ハードウエア種別 0x0001 2バイト
プロトコル種別 0x0800 2バイト
ハードウエア長さ 0x06
1バイト
プロトコル長さ 0x04
1バイト
オペコード 0x0001(要求)
2バイト
送り元MAC 6バイト
送り元IPアドレス 4バイト
あて先MAC 6バイト
あて先IPアドレス 4バイト
28バイト
プリアンブル 8バイト
パケットのパディング フレームの最小サイズに満たないため、勝手にサイズが大きくなる
copyright© 2011/07.. by SAPPOROWORKS
Ethernetヘッダ あて先/送り元/プロトコル
14バイト
EthernetⅡ(DIX規格)
データ本体 46~1500バイト
CRC 4バイト
CSMA/CDでは、最遠距離の衝突が伝達されるまで送信完了しないようにするため、フレームの最小サイズは、64バイトと定められている
Ethernetヘッダ あて先/送り元/プロトコル
14バイト
ARPパケット 28バイト
パディング 18バイト
WiresharkではCRCが表示されないので、最小パケットは60バイト
ARP(42バイト)には、18バイトが自動的に追加される
ARPパケットをWiresharkで見ると Trailerとして表示「誰が勝手に0x00にしたんだ・・・・」
copyright© 2011/07.. by SAPPOROWORKS
Ethernetヘッダ(14オクテット)
ARP(28オクテット)
パディング(18オクテット)
チャットプログラム Wiresharkで捕捉されないためには・・・・
copyright© 2011/07.. by SAPPOROWORKS
デフォルトゲートウエイの「ARP要求」 不審なパケットには見えない
パディング領域へデータを格納 プロトコル上はごみ領域であるので、解釈の対象外
フィルタされない データリンク層で必須パケットの為、 パーソナルファイアウォール等でフィルタされることはない
設定の必要なし ブロードキャストドメイン内であれば、常に相互に通信状態となっている
フローチャート(受信) 前回作成したパケットモニタとあまり大差は無い
copyright© 2011/07.. by SAPPOROWORKS
NIC情報の取得・選択 IPアドレス
デフォルトゲートウエイ MACアドレス
パケット取得
プロトコル==ARP パケットサイズ==60
データ取得・表示 YES
NO
フローチャート(送信) ARPパケットを生成してWinPcapで送信する
copyright© 2011/07.. by SAPPOROWORKS
「送信」ボタンが押された
ARPパケットの生成 宛先MAC=FF:FF:FF:FF:FF:FF パディング部分=メッセージ
データ送信 int pcap_sendpacket()
デモ ホストOSでモニタすると192.168.240.0/24のブロードキャストが
仮想HUBから流れてくる
copyright© 2011/07.. by SAPPOROWORKS
仮想DHCP 192.168.240.254
仮想HUB
192.168.240.2 00-50-56-e5-a0-0c
192.168.240.180 00-0c-29-fd-01-a5
VMwareの仮想ネットワーク(NAT) 192.168.240.0/24
ホストOS ゲストOS
192.168.2.1 00-08-a1-c3-cd-33
192.168.2.2 00-23-5a-4d-06-c4
サンプルプログラムとスライドを下記に置きました
興味を持っていただけた場合は、ぜひご利用ください。
http://www.sapporoworks.ne.jp/session/2011.07.22/
@furuya02
copyright© 2011/07.. by SAPPOROWORKS