目次
概要
ARPスプーフィングとは、ARPメッセージを偽装することで不正にデータを取得します。中間者攻撃(Man In The Middle Attack)の一種です。ARPスプーフィングの仕組みについて解説します。
ARPスプーフィングとは
ARPスプーフィングは、攻撃者がARPリプライを偽装してクライアントから送信されたパケットを不正に取得する攻撃です。以下のネットワーク構成で、ARPスプーフィングの仕組みを考えます。
通常の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キャッシュを不正に書き換えることから、ARPスプーフィングをARPキャッシュポイズニングとも呼びます。
データが不正に取得される
ARPキャッシュが書き換えられたことで、PC1からPC2へパケットを送信するときにカプセル化するイーサネットヘッダは、宛先MACアドレスがPC-Hackになってしまいます。PC2宛てのパケットは、デフォルトゲートウェイのR1へ転送するはずですが、攻撃者のPC-Hackへ転送されて不正にパケットが取得されます。そして、攻撃者はパケットの取得を検出されないように、さらに本来のデフォルトゲートウェイへパケットを転送します。
通信は双方向です。PC2からPC1へのリプライも攻撃者に不正に取得されます。R1のARPキャッシュを改ざんしているので、PC2からPC1へのリプライのパケットをカプセル化するイーサネットヘッダは、宛先MACアドレスがPC-Hackとなってしまいます。そのため、リプライも攻撃者に取得されてしまいます。
なお、例として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メッセージを検証
セキュリティの基礎
- SSLとWi-Fiの暗号化の違い
- セキュリティの目的 ~機密性/完全性/可用性~
- セキュリティの脅威と対策の概要
- マルウェア ~ユーザにとって有害なソフトウェア~
- 認証の基礎 ~正規のユーザ/デバイスですか?~
- 覚えやすくて推測されにくい安全なパスワードの作り方
- 暗号化の概要
- ハッシュ関数とは
- SSLとは? ~アクセス先は本物です!データは盗聴/改ざんされません!~
- ファイアウォールの概要 ~正規の通信のみを転送~
- IDS/IPS ~不正アクセス対策~
- Cisco アクセスコントロールリストの概要
- パケットフィルタ ~不正な通信をブロックするCisco ACLの最も多い用途~
- SPI(Stateful Packet Inspection)の概要
- Cisco ACLによるパケットフィルタの設定と確認
- 名前付きACL(Named ACL)
- タイムベース(Time-based)ACL
- Cisco ACLによるパケットフィルタの設定例
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~標準ACL~
- 標準ACLと拡張ACLのパケットフィルタリングをより深く理解するための演習 ~拡張ACL~
- リフレクシブ(Reflexive)ACL ~戻りの通信を自動的に許可~
- リフレクシブ(Reflexive)ACLの設定例
- Catalystスイッチのパケットフィルタリング RACL/VACL/PACL
- RACL/VACL/PACLの設定と確認コマンド
- uRPFの設定例
- VTYアクセス制御
- DHCPスプーフィング ~DHCPサーバを偽装~
- DHCPスヌーピング
- Cisco DHCPスヌーピングの設定と確認コマンド
- Cisco DHCPスヌーピングの設定例
- ARPスプーフィング
- Dynamic ARP Inspection
- Cisco Dynamic ARP Inspectionの設定と確認コマンド
- TCPインターセプトの設定例
- WAF(Web Application Firewall)の概要
- 電子メールのセキュリティ