PR

ARPスプーフィング徹底ガイド:仕組み・検出・実践対策

本記事は学習用です。作成には 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 ReplyGratuitous 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)

sequenceDiagram participant Victim as 被害端末 participant Attacker as 攻撃者 participant GW as ゲートウェイ Note over Attacker: 継続的な偽ARP送信(両側へ) Attacker->>Victim: ARP Reply「GWのIPは AttackerのMAC」 Attacker->>GW: ARP Reply「VictimのIPは AttackerのMAC」 Victim->>Attacker: IPパケット(本来はGWへ) Attacker->>GW: 転送(内容は傍受・改変可能) GW-->>Attacker: 応答パケット Attacker-->>Victim: 転送(透明なMITM)

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で arparp.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導入があれば突破され得る。
  • 優先度:
  1. セグメント設計(L3分割・東西トラフィック最小化)
  2. DHCP Snooping + DAI + IP Source Guard 導入
  3. 端末側可視化(EDR/監視)
  4. 重要通信の暗号化強制・ピンニング
  • 教育・手順:運用手順に「ARP 異常時の切り分け」(ip neigharp -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. 参考サイト

B. 関連書籍

コメント