概要

ARPスプーフィングとは、ARPメッセージを偽装することで不正にデータを取得します。中間者攻撃(Man In The Middle Attack)の一種です。ARPスプーフィングの仕組みについて解説します。

ARPスプーフィングとは

ARPスプーフィングは、攻撃者がARPリプライを偽装してクライアントから送信されたパケットを不正に取得する攻撃です。以下のネットワーク構成で、ARPスプーフィングの仕組みを考えます。

図 ARPスプーフィング その1
図 ARPスプーフィング その1

通常のARPによるアドレス解決

PC1が他のネットワークのPC2へパケットを送信するときについて考えています。宛先IPアドレスが異なるネットワークのとき、デフォルトゲートウェイのMACアドレスを解決するためにARPリクエストをブロードキャストします。問い合わせ対象は、デフォルトゲートウェイのIPアドレス10.1.1.254です。そして、デフォルトゲートウェイのR1はARPリプライで自身のMACアドレス Rを通知します。PC1は、デフォルトゲートウェイのIPアドレスに対するMACアドレスRをARPキャッシュに保存します。また、デフォルトゲートウェイのR1は、ARPキャッシュにPC1のIPアドレス10.1.1.1に対するMACアドレスAを保存します。

ARPキャッシュの書き換え

攻撃者は、PC1とR1のARPキャッシュを書き換えるとために、ARPリプライを偽装します。

攻撃者はホストのIPアドレス10.1.1.1のMACアドレスとして自身のMACアドレスPC-HackのARPリプライを送信します。これによりR1のARPテーブルを書き換えます。また、デフォルトゲートウェイのIPアドレス10.1.1.254のMACアドレスとして自身のMACアドレスPC-HackのARPリプライを送信します。すると、PC1のARPテーブルを書き換えることができます。

ARPはセキュリティを考慮したプロトコルではありません。ARPリクエストとリプライを関連付けるような情報などなく、ARPリプライの情報が正確かどうかを検証できません。ほとんどのARPの実装では、ARPリプライを受信するとその内容でARPキャッシュを更新します。

図 ARPスプーフィング その2
図 ARPスプーフィング その2

このように、ARPキャッシュを不正に書き換えることから、ARPスプーフィングをARPキャッシュポイズニングとも呼びます。

データが不正に取得される

ARPキャッシュが書き換えられたことで、PC1からPC2へパケットを送信するときにカプセル化するイーサネットヘッダは、宛先MACアドレスがPC-Hackになってしまいます。PC2宛てのパケットは、デフォルトゲートウェイのR1へ転送するはずですが、攻撃者のPC-Hackへ転送されて不正にパケットが取得されます。そして、攻撃者はパケットの取得を検出されないように、さらに本来のデフォルトゲートウェイへパケットを転送します。

図 ARPスプーフィング その3
図 ARPスプーフィング その3

通信は双方向です。PC2からPC1へのリプライも攻撃者に不正に取得されます。R1のARPキャッシュを改ざんしているので、PC2からPC1へのリプライのパケットをカプセル化するイーサネットヘッダは、宛先MACアドレスがPC-Hackとなってしまいます。そのため、リプライも攻撃者に取得されてしまいます。

図 ARPスプーフィング その4
図 ARPスプーフィング その4

なお、例としてPC1とPC2間で考えていますが、PC1にとってのデフォルトゲートウェイのIPアドレスに対するARPキャッシュを改ざんしています。そのため、PC1から他のネットワーク宛てのパケットはすべて不正に取得されます。

こうして、本来の通信の送信元と宛先の間に不正な第三者が介在することになるので、ARPスプーフィングは中間者攻撃の一種です。中間者攻撃は、通信自体はできてしまうので攻撃に気が付きにくく、影響が非常に大きくなってしまう可能性があります。

ARPスプーフィングの対策

ARPスプーフィングの対策として、以下が挙げられます。

  • レイヤ2スイッチでの認証
  • ARPメッセージの検証(Dynamic ARP Inspection : DAI)

レイヤ2スイッチでの認証

そもそも、攻撃者のデバイスがネットワークに接続できてしまうことが大問題です。レイヤ2スイッチでIEEE802.1X認証などを利用して、正規のユーザのデバイスのみがネットワークに接続できるようにします。これは、ARPスプーフィングだけの対策ではなく、ネットワークのセキュリティ対策の基本です。

ARPメッセージの検証(Dynamic ARP Inspection : DAI)

ARPのプロトコル自体には、ARPメッセージが正確であることを検証する仕組みはありません。そこで、レイヤ2スイッチでARPメッセージを検証するDynamic ARP Inspectionを利用します。

Dynamic ARP Inspectionによって、ARPメッセージの整合性を検証して、ARPスプーフィングを防止します。

まとめ

ポイント

  • ARPスプーフィングは、ARPメッセージ(ARPリプライ)を偽装してARPキャッシュを書き換えます。これにより、不正にデータを取得しようとする攻撃です。
  • ARPスプーフィングが成立してしまうと、通信の本来の送信元と宛先の間に不正な第三者が介在します。つまり、ARPスプーフィングは中間者攻撃の一種です。
  • ARPスプーフィングの主な対策は以下の通りです。
    • IEEE802.1X認証
    • Dynamic ARP InspectionでARPメッセージを検証

セキュリティの基礎