本記事は学習用です。作成には ChatGPT と GitHub Copilot を使用しています。
1. 導入:ARPスプーフィングの定義と目標
ARPスプーフィング(別名:ARPポイズニング)は、ローカルネットワークで IPアドレスとMACアドレスの対応情報(ARPキャッシュ) を攻撃者が偽情報で汚染し、通信を傍受・改ざん・遮断する手法である。ARP(Address Resolution Protocol)は IPv4 のローカルリンクで IP→MAC を解決する仕組みで、RFC 826 が仕様を定義する。ARPは認証機構を持たないため、偽の ARP 応答や Gratuitous ARP を受け入れやすく、攻撃が成立する。一次情報は RFC 826 を確認する。(srgia.com)
目標は次の4点。
- 仕組みと成立条件を正確に説明する
- 小規模な検証環境を構築して再現・観察する
- Wireshark/OSコマンドで早期検出する
- スイッチ機能(DHCP Snooping / Dynamic ARP Inspection)やホスト側の堅牢化で現実的に防ぐ
※ 実運用ネットワークでの攻撃的テストは規約・法令に抵触し得るため、検証は隔離環境で行うこと。社内規程や法的解釈は都度、法務・情報セキュリティ部門へ相談すること。
2. 背景:ARPの動作とプロトコル上の弱点
2.1 ARPの基本
- ARP はブロードキャストで「このIPのMACは?」と問い合わせ(ARP Request)を送信し、該当ホストがユニキャスト(場合によりブロードキャスト)で ARP Reply を返す。
- 各ホストは ARPキャッシュ(ARPテーブル) に IP↔MAC のエントリを保持し、一定時間で更新・破棄する。(srgia.com)
2.2 弱点(なぜ成り立つか)
- ARP は 認証・真正性検証 を持たない(任意ホストが「そのIPのMACは自分」と名乗れる)。
- 多くの実装は 未要求の ARP Reply や Gratuitous ARP を受け取りキャッシュを更新する。
- これにより攻撃者は被害端末の ARP キャッシュを書き換え、デフォルトゲートウェイ(または任意通信相手)になりすませる。(Cisco)
3. 攻撃シナリオ:MITM・改ざん・DoS
3.1 代表的な経路(MITM)
- 攻撃者は被害端末とゲートウェイ双方へ「相手IPのMAC=攻撃者MAC」という偽ARPを継続送信する。
- 被害端末→攻撃者→ゲートウェイ、ゲートウェイ→攻撃者→被害端末の 二方向中間者(Man-in-the-Middle / MITM) が成立する。
- 攻撃者はパケットを転送しつつ、読取・改ざん・選別破棄を行える。(Cisco)
3.2 Web改ざん・悪性スクリプト注入
JPCERT/CC は、侵入済みの同一L2ネットワーク上の別サーバを踏み台に ARP スプーフィングを行い、Web改ざん(不正スクリプト注入)につながった事例を紹介している。対策の難しさは標的Webサーバ側の堅牢化だけでは防げない点にある。(JPCERT/CC)
3.3 DNSスプーフィング併用
Ettercap などのツールは ARP ポイズニングで MITM を確立後、dns_spoof 等で偽応答へ誘導する運用例が多い。(Omomuki Tech)
4. 仕組みを可視化:フローとパケット
4.1 フロー(Mermaid)
4.2 典型的なパケット観察ポイント
- 同一IPに対する複数の異なるMAC が観測される(ARPテーブルの揺れ)。
- Gratuitous ARP の異常頻度。
- Wireshark フィルタ例
- 重複検出:
arp.duplicate-address-detected == 1 - ARPのみ:
arp - 特定IP解決トラフィック:
arp && arp.dst.proto_ipv4 == 192.0.2.1
これらはARPスプーフィング痕跡の一次手掛かりになる。(Wireshark Q&A)
- 重複検出:
5. ハンズオン:最小検証環境の構築と観察
※ 以下は 隔離した検証用ネットワーク(同一L2セグメント、インターネット非接続でも可)で実施する。
5.1 最小構成
- L2スイッチまたは仮想スイッチ(ブリッジ)
- VMまたは端末3台:Victim、Gateway(小型ルータやLinuxルータで可)、Attacker
5.2 事前確認(Victim側)
# 現在のARPテーブル確認(Linux)
ip neigh show
# 旧来コマンド
arp -n
# ゲートウェイMACの固定テスト(運用判断要)
sudo ip neigh replace 192.0.2.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0
※ 静的ARPは運用負荷が高く、DHCP 環境では非現実的になりやすい(後述のスイッチ機能を推奨)。
5.3 攻撃の観察(教育目的)
一般的ツール(Ettercap / dsniff の arpspoof 等)で両方向ポイズニングを再現できる。教育目的では パケット転送が継続 し HTTP/ICMP 等の疎通が維持される中で内容傍受可能となる構造を確認する。(Cisco)
5.4 監視(Wireshark・tcpdump)
- Wiresharkで
arpとarp.duplicate-address-detectedを中心に観察。(Wireshark Q&A) tcpdump -ni eth0 arpによりARP頻度と送信者MACの変化を把握。- Victim側
ip neighが短時間で変化していないか反復確認。
6. 現場の検出:ホスト・ネットワークの多層防御
6.1 ホスト側(エンドポイント)
- 異常な ARP 変動検知 スクリプト(
ip neigh差分監視、変化回数の閾値化)。 - HTTPS 強制 と HSTS、証明書ピンニング により MITM 下の平文改ざん・盗聴リスクを低減(TLS 終端が攻撃者になるケースは別途対策)。
- EDR/NGAV の ARPスプーフィング検知機能(製品差あり)。(CrowdStrike)
6.2 ネットワーク側(L2スイッチ機能)
DHCP Snooping/DAI(Dynamic ARP Inspection)/IP Source Guard の組み合わせが実践的。
- DHCP Snooping:信頼ポート以外の不正DHCP応答を遮断し バインディングDB(IP/MAC/VLAN/Port)生成。
- DAI:ARP応答を検証しバインディングDB照合で不正ARP破棄。
- IP Source Guard:DHCP Snooping情報で送信元IP/MAC/Portを検証。(Cisco)
6.3 無線LANや大規模L2の考慮
- 無線や大規模L2では ARP ブロードキャスト頻度が高く誤検知・見逃し双方のリスク。
- 重要区画は L3境界の明確化(VLAN分割+ルーティング) と 東西トラフィック監査 を推奨。
7. 実装例:対策手順と設定断片
7.1 Catalystスイッチ(概念例)
! DHCP Snooping
ip dhcp snooping
ip dhcp snooping vlan 10
interface GigabitEthernet1/0/1
ip dhcp snooping trust ! DHCPサーバ側は trust
! Dynamic ARP Inspection
ip arp inspection vlan 10
interface GigabitEthernet1/0/2
ip arp inspection trust ! 検証済み機器のみ trust(過度な trust は避ける)
! IP Source Guard(Port Security併用可)
ip verify source vlan dhcp-snooping
- コマンドは装置OS/バージョンで差異。適用前にラボ検証必須。(Cisco)
7.2 Linux端末の一時的緩和
# 重要通信先のみ静的ARP(短期・検証用途)
sudo ip neigh replace 192.0.2.1 lladdr 00:11:22:33:44:55 nud permanent dev eth0
# ARP監視例(5分ごと差分)
watch -n 300 'ip neigh show | sort'
※ 大規模やDHCP環境では運用負荷・障害波及リスク。恒久策はスイッチ機能とセグメント設計を優先。
7.3 監査・可視化
- SPAN/Mirror で ARP を収集し SIEM に重複MAC/多発GARPをカウントする簡易ルール。
- Wireshark検出フィルタの定期適用をジョブ化しヘルスチェック自動化。(Wireshark Q&A)
8. リスク評価と運用設計
- 成立条件:同一L2(ブロードキャストドメイン)に攻撃者が存在し被害端末・GWが未保護。VLANやPrivate VLANによる分離が有効。
- 影響:平文プロトコル(HTTP、Telnet、POP3等)は即時機密漏洩。TLS でもダウングレードや不適切ローカルCA導入があれば突破され得る。
- 優先度:
- セグメント設計(L3分割・東西トラフィック最小化)
- DHCP Snooping + DAI + IP Source Guard 導入
- 端末側可視化(EDR/監視)
- 重要通信の暗号化強制・ピンニング
- 教育・手順:運用手順に「ARP 異常時の切り分け」(
ip neigh、arp -n、Switch DAI統計、ミラー取得)を明記。 - 残余リスク:レガシー/IoT は DAI 非対応や誤検知の可能性。バイパス経路(無線ゲスト網等)を定期棚卸。
9. よくある誤りと対処
- 誤り:DAI 有効化後に trust ポート未設定で DHCP 不可。
対処:DHCPサーバ/アップリンクを trust、クライアントは untrust。段階導入。 - 誤り:EDR任せで L2 対策未実装。
対処:L2制御(DHCP Snooping / DAI)を優先。 - 誤り:検出が人手Wireshark解析に依存。
対処:ミラーポート常設と SIEM しきい値監視の自動化。(Cisco)
10. まとめ(運用チェックリスト)
- [ ] セグメント分割(VLAN/L3)で直結L2最小化
- [ ] DHCP Snooping 有効化・信頼ポート明示
- [ ] DAI を VLAN 単位で有効化しログ・例外を整備
- [ ] 重要端末の可視化(
ip neigh変化監視・EDRアラート) - [ ] ミラーポート+SIEMで ARP 重複/頻度異常を監視
- [ ] 平文プロトコル排除・TLS運用健全化
- [ ] 隔離環境で定期リハーサル(検出~封じ込め)
A. 参考サイト
- RFC 826(ARP 仕様、和訳)(srgia.com)
- Address Resolution Protocol(概要、関連RFC)(ウィキペディア)
- Cisco:DHCP Snooping/DAI/IP Source Guard(概念と手順)(Cisco) (インフラエキスパート)
- Wireshark Q&A:ARPスプーフィング検出フィルタ (Wireshark Q&A)
- JPCERT/CC:ARPスプーフィングによる Web 改ざん事例 (JPCERT/CC)
- CrowdStrike:ARPスプーフィング解説 (CrowdStrike)
- SCSK:概説記事 (SCSKサービスウェア)
- Ettercap と DNS スプーフィング手順(検証ノート向け)(Omomuki Tech)

コメント