12
Wiresharkで検出できない チャットプログラム ARPパケットのパディングにデータを詰め込む @furuya02 copyright© 2011/07.. by SAPPOROWORKS

Wiresharkで検出できないチャットプログラム

Embed Size (px)

DESCRIPTION

Wiresharkで検出できないチャットプログラムARPパケットのパディングにデータを詰め込む

Citation preview

Page 1: Wiresharkで検出できないチャットプログラム

Wiresharkで検出できない チャットプログラム

ARPパケットのパディングにデータを詰め込む

@furuya02

copyright© 2011/07.. by SAPPOROWORKS

Page 2: Wiresharkで検出できないチャットプログラム

ハンドル SIN/古谷誠進

Twitter @furuya02

仕事 某社でシステムサポートみたいな感じ

住居 札幌

年齢 アラフィフ 「45歳以上54歳まで( by ウィキペディア)」

自己紹介

copyright© 2011/07.. by SAPPOROWORKS

Page 3: Wiresharkで検出できないチャットプログラム

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応答」は、ユニキャスト

Page 4: Wiresharkで検出できないチャットプログラム

GWのARP要求は常に流れる デフォルトゲートウエイのARPテーブルがタイムアウトで消えるとき・・・・

copyright© 2011/07.. by SAPPOROWORKS

GW

GWのMACは? 宛先 FF:FF:FF

・外部と通信するためにGWのMACアドレスを検索する

「ARP要求」が、常に流れている。

・「ARP要求」はブロードキャストなので、

スイッチングHUBを超えて流れてくる。

Page 5: Wiresharkで検出できないチャットプログラム

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バイト

Page 6: Wiresharkで検出できないチャットプログラム

プリアンブル 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バイトが自動的に追加される

Page 7: Wiresharkで検出できないチャットプログラム

ARPパケットをWiresharkで見ると Trailerとして表示「誰が勝手に0x00にしたんだ・・・・」

copyright© 2011/07.. by SAPPOROWORKS

Ethernetヘッダ(14オクテット)

ARP(28オクテット)

パディング(18オクテット)

Page 8: Wiresharkで検出できないチャットプログラム

チャットプログラム Wiresharkで捕捉されないためには・・・・

copyright© 2011/07.. by SAPPOROWORKS

デフォルトゲートウエイの「ARP要求」 不審なパケットには見えない

パディング領域へデータを格納 プロトコル上はごみ領域であるので、解釈の対象外

フィルタされない データリンク層で必須パケットの為、 パーソナルファイアウォール等でフィルタされることはない

設定の必要なし ブロードキャストドメイン内であれば、常に相互に通信状態となっている

Page 9: Wiresharkで検出できないチャットプログラム

フローチャート(受信) 前回作成したパケットモニタとあまり大差は無い

copyright© 2011/07.. by SAPPOROWORKS

NIC情報の取得・選択 IPアドレス

デフォルトゲートウエイ MACアドレス

パケット取得

プロトコル==ARP パケットサイズ==60

データ取得・表示 YES

NO

Page 10: Wiresharkで検出できないチャットプログラム

フローチャート(送信) ARPパケットを生成してWinPcapで送信する

copyright© 2011/07.. by SAPPOROWORKS

「送信」ボタンが押された

ARPパケットの生成 宛先MAC=FF:FF:FF:FF:FF:FF パディング部分=メッセージ

データ送信 int pcap_sendpacket()

Page 11: Wiresharkで検出できないチャットプログラム

デモ ホスト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

Page 12: Wiresharkで検出できないチャットプログラム

サンプルプログラムとスライドを下記に置きました

興味を持っていただけた場合は、ぜひご利用ください。

http://www.sapporoworks.ne.jp/session/2011.07.22/

@furuya02

copyright© 2011/07.. by SAPPOROWORKS