,、,, ,、,, ,, ,,
_,,;' '" '' ゛''" ゛' ';;,,
(rヽ,;''"""''゛゛゛'';, ノr)
,;'゛ i _ 、_ iヽ゛';,
,;'" ''| ヽ・〉 〈・ノ |゙゛ `';,
,;'' "| ▼ |゙゛ `';,
,;'' ヽ_人_ / ,;'_
/シ、 ヽ⌒⌒ / リ \
| "r,, `"'''゙´ ,,ミ゛ |
| リ、 ,リ |
| i ゛r、ノ,,r" i _|
| `ー――----┴ ⌒´ )
(ヽ ______ ,, _´)
(_⌒ ______ ,, ィ
丁 |
| |
- 一般的な Windows 環境でも、簡単に実験ができることがわかりましたので、試してみます
実験
- まずは Nighthawk を起動して "Enable advanced mode" を選択します
- "Interface selection" を IPv4: 192.168.12.2/24 に設定し "Scan network" を実行すると、アドレスの一覧が現れます
- "Target 1" に iPad のアドレス 192.168.12.3 を、"Target 2" にデフォルトゲートウェイ 192.168.12.1 を指定しましょう
- "Start ARP spoofing" で、ARPスプーフィングが実行されている状態になります
パケットスニッフィング
- 暗号化されていないため、通信の内容を確認することができました
- 次に Firesheep を入れた Firefox 3.6 を起動します
- Ctrl+Shift+S でサイドバーを出した後、左下のアイコンから "Preferences" を開いてください
- "Capture" で適切なインターフェースを選択
-
- "Websites" で "Add" から Yahoo JAPAN を追加し、下記のスクリプトを貼り付けて保存します
register({
name: 'Yahoo JAPAN',
url: 'http://yahoo.co.jp',
sessionCookieNames: [ 'T', 'Y' ],
matchPacket: function (packet) {
if (packet.host.match(/\.yahoo\.co\.jp$/)) {
return true;
}
},
identifyUser: function () {
var resp = this.httpGet('http://www.yahoo.co.jp');
this.userName = resp.body.querySelector('#pbhello span').innerHTML;
}
});
- すると Firesheep によって、セッションクッキーを含む通信がキャプチャされ、サイドバーにそのアカウント名が表示されます
- アカウント名をダブルクリックすると、そのアカウントになりすましてページを閲覧することが可能です
- HTTPSに対応していないため、メールも見ることができますね
- (アカン)
- iPad 側でログアウトをしてみたのですが、Firesheep 側ではログイン状態が継続してしまう点が意外でした
対策
- とりあえず、ARPスプーフィングの対策ですが、外部から動的にARPテーブルを書き換えられないように、静的に設定することが可能です
C:\>arp -s 192.168.12.1 xx-xx-xx-xx-xx-xx
C:\>arp -a
Interface: 192.168.12.2 --- 0x2
Internet Address Physical Address Type
192.168.12.1 xx-xx-xx-xx-xx-xx static
C:\>netsh -c "interface ipv4"
netsh interface ipv4>set neighbors "ローカル エリア接続" 192.168.12.1 xx-xx-xx-xx-xx-xx
netsh interface ipv4>show neighbors "ローカル エリア接続"
インターフェイス 11: ローカル エリア接続
インターネット アドレス 物理アドレス 種類
-------------------------------------------- ----------------- -----------
192.168.12.1 xx-xx-xx-xx-xx-xx 恒久
まとめ
- ただし、ARPスプーフィングは防げても、他の手法もありますし、通信経路上でリピータハブを挿入されたら防ぐ手立てはありません
- 根本的な解決は、サービス提供側が、適切にHTTPSを提供することにあるでしょう
- こうやって実験してみると、普段いまいち利益がわからないHTTPSも、はっきりと必要性を感じますね