ARP スプーフィング (ARP キャッシュポイズニング) は、ARP プロトコルが「応答を無条件に信じる」設計欠陥を悪用し、同一 LAN セグメント内の通信経路に攻撃者が割り込む 中間者攻撃 (MITM)。本実験では仮想環境上の Kali Linux から Windows 7 とゲートウェイの間に割り込み、Wireshark で通信を傍受するまでを再現する。環境構築 → 攻撃の実行 → 結果確認 → 脅威と対策の流れで、IP フォワーディングの役割と「合法的に学ぶための境界」まで通しで扱う。
本実験は 自身が管理する閉じた仮想環境でのみ実施可能。他人の Wi-Fi / 学校・職場の LAN / カフェなどで実行すると、日本では 不正アクセス禁止法 / 電波法 / 威力業務妨害罪に抵触する犯罪行為。「同じネットワークだから」「家族の PC だから」も理由にはならない。仮想マシン 2 台 (Kali + Windows 7) をホストオンリーネットワークで隔離する形が最も安全。
概要 — 中間者攻撃の構図 #
中間者攻撃 (Man-in-the-Middle, MITM) は、通信を行う 2 者の間に攻撃者が割り込み、双方になりすますことで通信を中継・盗聴する攻撃。
今回はその代表的な手法である ARP スプーフィングを実験する。攻撃者 (Kali Linux) が、被害者 (Windows 7) に対して **「私がルーターだ」**と偽り、同時にルーターに対して **「私が Windows 7 だ」**と偽ることで、両者間の通信をすべて攻撃者経由にさせる。
LAN 内で「○○さんの MAC アドレスは?」と聞くのが ARP の役割。各端末は 電話帳 (ARP テーブル) を持っていて、ARP リクエストへの応答をそのまま信じて電話帳に書き込む。「応答が本物か検証する仕組みがない」のが ARP の歴史的欠陥で、攻撃者は 「ゲートウェイの MAC は私です」と偽の応答を流すだけで、被害者の電話帳を書き換えられる。以降、被害者が「ゲートウェイに送る」つもりの通信はすべて攻撃者の元に届く。
環境構築 #
VirtualBox 上で 2 つの仮想マシンを動作させ、両者のネットワークアダプターを ブリッジアダプター に設定して、ホスト OS と同じ物理ネットワーク (例: 192.168.2.0/24) に参加させる。

被害者側 (Windows 7) #
1. IP アドレスの確認 — ipconfig を実行し、IP アドレス (例: 192.168.2.172) とゲートウェイ (例: 192.168.2.1) を確認する。

2. ARP テーブルの確認 (攻撃前) — arp -a を実行し、ゲートウェイ (192.168.2.1) の MAC アドレスがルーター本来のものであることを確認する。

攻撃者側 (Kali Linux) #
1. IP アドレスと MAC アドレスの確認 — ip a を実行し、IP アドレス (例: 192.168.2.105) と MAC アドレスを確認する。

2. IP フォワーディングの有効化 — 攻撃者が受け取ったパケットを破棄せず、本来の宛先に転送 (中継) するために、IP フォワーディングを有効化する。これが無いと、被害者は通信ができなくなり攻撃が発覚する。
# IPフォワーディングを有効化 (1を書き込む)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# 有効化されたか確認 (1が表示されればOK)
cat /proc/sys/net/ipv4/ip_forward
ARP スプーフィングだけ仕掛けて IP フォワーディングを切ったままだと、被害者の通信は攻撃者の手元で行き止まりになる → 被害者は「ネットが繋がらない」と気付いて再起動などで対処してしまう。IP フォワーディングを有効にすることで、攻撃者は中身を覗いた後、本来の宛先 (= ルーター) へパケットを転送する。被害者から見ると通信は普通に成立しているように見えるので、攻撃に気付かない、というのが MITM の肝心な部分。
攻撃の実行 #
arpspoof を 2 つのターミナルで同時実行 (片方は被害者側、もう片方はルーター側を騙す)。連続でログが表示されるが、そのまま放置する。192.168.2.172) が送受信するパケットを ip.addr == 192.168.2.172 や http などでフィルタリングして監視を開始。# arpspoof -i <インターフェース名> -t <ターゲット端末のIPアドレス> <書き換えたいIPアドレス>
# ターミナル1: 被害者(Windows 7)になりすまし、ルーターを騙す
sudo arpspoof -i eth0 -t 192.168.2.1 192.168.2.172
# ターミナル2: ルーターになりすまし、被害者(Windows 7)を騙す
sudo arpspoof -i eth0 -t 192.168.2.172 192.168.2.1

結果の確認 #
攻撃実行後、Windows 7 側で再度 arp -a コマンドを実行する。
ゲートウェイ (192.168.2.1) に対応する物理アドレス (MAC アドレス) が、ルーター本来のものではなく、攻撃者 (Kali Linux) の MAC アドレスに書き換わっていることが確認できる。これにより、ARP スプーフィングが成功したことが証明される。

この状態で Windows 7 がインターネット (例: http://57.181.220.64/ のサイト) にアクセスすると、Kali Linux で起動している Wireshark がその通信パケットをすべてキャプチャできることが確認できる。IP フォワーディングが有効なため、Windows 7 側は通信が遅延なく行えているように見える。

被害者側からは 「ネットが普通に動いている」ように見える一方、攻撃者は HTTP / FTP / Telnet などの平文通信を全部覗き見できる。Cookie・ログイン情報・送信フォームの内容が丸見え。「気付かれずに盗聴できる」のが MITM 攻撃の本当の怖さ。HTTPS であっても、SSL ストリッピングと組み合わせれば「鍵マークの無い HTTP」に書き換えて誘導することも可能。
考察と対策 #
この実験では、arpspoof というツールを使うだけで、いかに簡単に同一ネットワーク内の通信経路上に割り込めるかが確認できた。
ARP プロトコル自体に「送信者が本物か」を検証する仕組みがないという根本的な脆弱性が原因。
脅威・リスク #
攻撃者は通信経路上にいるため、暗号化されていない通信 (HTTP, FTP, Telnet など) の内容はすべて盗聴可能。ログインパスワードや Cookie が平文で盗まれる危険性がある。
また、SSL ストリッピングなどの攻撃と組み合わせることで、https:// で保護されているサイトへのアクセスを妨害し、偽のページに誘導することも可能になる。
この攻撃は、不特定多数が接続するフリー Wi-Fi やカフェ、ネットカフェなどで特に脅威となる。
対策・対処 #
| 対策層 | 内容 |
|---|---|
| 利用者: VPN の使用 | 公共のネットワークを利用する際は、VPN を使用するのが最も確実な対策。通信が暗号化されたトンネルを経由するため、傍受されても中身を解読されない |
| 利用者: HTTPS の確認 | 常に「https://」で通信しているか、ブラウザの鍵マークを確認する。「保護されていない通信」という警告を無視してはいけない |
| 管理者: DAI (Dynamic ARP Inspection) | 高機能なスイッチには、不正な ARP 応答を検知・破棄する DAI のような機能が備わっている |
| 管理者: クライアント分離 (AP アイソレーション) | Wi-Fi アクセスポイントの設定で、ユーザー同士が直接通信できないように分離する。攻撃者が他の利用者をスキャン・攻撃することを防げる |
家庭の Wi-Fi であれ会社の LAN であれ、同じネットワークに繋がっているだけで他人の通信を覗けるのが ARP の素朴な性質。だから「VPN を張る」「HTTPS を強制する」「カフェの Wi-Fi では機密情報を打ち込まない」といった利用者側の自衛と、スイッチ側で DAI を有効化する管理者側の対策の両方が必要。1990 年代の ARP 設計の名残が現代にも生きている、と理解しておくと、無線 / IoT / クラウドの様々な MITM 対策の意味が一段と腑に落ちる。
COMMENTS 0
まだコメントはありません。最初のコメントを投稿しよう。