
コンピュータネットワークにおいて、ARPスプーフィング(ARPキャッシュポイズニングまたはARPポイズンルーティングとも呼ばれる)とは、攻撃者が(偽装した)アドレス解決プロトコル(ARP)メッセージをローカルエリアネットワークに送信する手法である。一般的に、その目的は、攻撃者のMACアドレスをデフォルトゲートウェイなどの別のホストのIPアドレスに関連付け、そのIPアドレス宛てのトラフィックを攻撃者に転送することである。
ARPスプーフィングは、攻撃者がネットワーク上のデータフレームを傍受したり、トラフィックを改変したり、すべてのトラフィックを停止させたりすることを可能にする可能性があります。多くの場合、この攻撃は、サービス拒否攻撃、中間者攻撃、セッションハイジャック攻撃などの他の攻撃の足がかりとして使用されます。[ 1 ]
この攻撃はARPを使用するネットワークでのみ使用可能であり、攻撃者は攻撃対象のローカルネットワークセグメントに直接アクセスできる必要がある。 [ 2 ]
アドレス解決プロトコル(ARP)は、インターネット層のアドレスをリンク層のアドレスに解決するために広く使用されている通信プロトコルです。
インターネット プロトコル(IP)データグラムがローカル エリア ネットワーク内のホスト間で送信される場合、宛先 IP アドレスはデータ リンク層を介して送信されるためにMAC アドレスに解決される必要があります。最初のホストはローカル ネットワーク上でブロードキャスト パケットを送信します。このパケットはARP 要求として知られています。ARP 要求に含まれる IP アドレスを持つ 2 番目のホストは、その IP アドレスに関連付けられた MAC アドレスを含むブロードキャストARP 応答で応答します。 [ 2 ]
ARP はステートレス プロトコルです。ネットワーク ホストは、どのネットワーク ホストが要求したかに関わらず、受信した ARP 応答を自動的にキャッシュします。キャッシュ内でまだ期限切れになっていない ARP エントリであっても、新しい ARP 応答パケットを受信すると上書きされます。ARP プロトコルには、ホストがパケットの発信元であるピアを認証する方法はありません。この動作が、ARP スプーフィングが発生する脆弱性となっています。[ 1 ] [ 2 ] [ 3 ]
ARPスプーフィングの基本原理は、偽装したARPメッセージをLANに送信することで、ARPプロトコルの認証機能の欠如を悪用することです。ARPスプーフィング攻撃は、LAN上の侵害されたホストから、またはターゲットLANに直接接続された攻撃者のマシンから実行できます。[ 4 ]
一般的に、この攻撃の目的は、攻撃者のホストMACアドレスを標的ホストのIPアドレスに関連付け、標的ホスト宛てのトラフィックを攻撃者のホストに送信することです。攻撃者は、パケットを検査(スパイ行為)したり、トラフィックを実際のデフォルト宛先に転送して発見を回避したり、転送前にデータを改ざん(中間者攻撃)したり、ネットワーク上のパケットの一部または全部を破棄させることでサービス拒否攻撃を仕掛けたりする可能性があります。
最も単純な認証方法は、ホストのARP キャッシュ内の重要なサービスに対して静的な読み取り専用エントリを使用することです。ホストは、このようなエントリが存在する場合、ARP 要求を送信する必要はありません。 [ 5 ]静的エントリはなりすましに対するセキュリティをある程度提供しますが、ネットワーク内のすべてのシステムのアドレス マッピングを生成して配布する必要があるため、メンテナンスの手間が増加します。すべての参加者に対してこの方法で ARP を保護することは、大規模なネットワークでは拡張性がありません。なぜなら、マッピングはマシンのペアごとに設定する必要があり、 n台のマシンが存在する場合はn 2 - n個のARP エントリを構成する必要があるからです。各マシンには、ネットワーク上の他のすべてのマシンに対する ARP エントリが必要です。n台のマシンのそれぞれにn-1 個のARP エントリが必要です。
ARP スプーフィングを検出するソフトウェアは、一般的に ARP 応答の認証または相互チェックの形式に依存しています。認証されていない ARP 応答はブロックされます。これらの技術は、動的IP アドレスと静的 IPアドレスの両方が認証されるように、 DHCP サーバーと統合される場合があります。この機能は、個々のホストで実装することも、イーサネット スイッチやその他のネットワーク機器に統合することもできます。単一の MAC アドレスに関連付けられた複数の IP アドレスの存在は、ARP スプーフィング攻撃を示している可能性がありますが、そのような構成には正当な用途もあります。より受動的なアプローチでは、デバイスがネットワーク上で ARP 応答をリッスンし、 ARP エントリが変更されたときに電子メールで通知を送信します。[ 6 ]
AntiARP [ 7 ]は、カーネルレベルでの Windows ベースのなりすまし防止機能も提供しています。ArpStar は、カーネル 2.6 および Linksys ルーター用の Linux モジュールで、マッピングに違反する無効なパケットを破棄します。
Kernel-based Virtual Machineなどの仮想化環境では、同じホスト上で実行されているゲスト間でMACスプーフィングを防止するためのセキュリティメカニズムが提供されています。[ 8 ]
一部のイーサネットアダプタは、MACアドレスとVLANアドレスのなりすまし防止機能を備えています。[ 9 ]
OpenBSD はローカル ホストになりすますホストをパッシブに監視し、永続的なエントリを上書きしようとする試みがあった場合に通知します。[ 10 ]
オペレーティングシステムによって反応が異なります。Linux は要求されていない応答を無視しますが、一方で、他のマシンからの要求に対する応答を使用してキャッシュを更新します。Solaris はタイムアウト後にのみエントリの更新を受け入れます。Microsoft Windows では、ARP キャッシュの動作は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters、ArpCacheLife、ArpCacheMinReferenceLife、ArpUseEtherSNAP、ArpTRSingleRoute、ArpAlwaysSourceRoute、ArpRetryCount の下のいくつかのレジストリ エントリを通じて構成できます。[ 11 ]
ARPスプーフィングで使用される技術は、ネットワークサービスの冗長性を実装するためにも使用できます。たとえば、一部のソフトウェアでは、バックアップサーバーが無償のARPリクエストを発行して、障害のあるサーバーに代わって透過的に冗長性を提供できます。[ 12 ] [ 13 ] Circle [ 14 ]とCUJOは、この戦略を中心とした製品を商用化している2つの企業です。
ARPスプーフィングは、スイッチが使用されている場合に、2つのホスト間のIPトラフィックをデバッグするために開発者によってよく使用されます。ホストAとホストBがイーサネットスイッチを介して通信している場合、通常、そのトラフィックは監視している第三者のホストMからは見えません。開発者は、AにBのMACアドレスを、BにAのMACアドレスをそれぞれ割り当て、さらにMがパケットを転送するように設定します。これでMは、中間者攻撃の場合とまったく同じように、トラフィックを監視できるようになります。
ARPスプーフィング攻撃を実行するために使用できるツールの例をいくつか挙げます。
{{cite web}}: CS1 maint: タイトルとしてアーカイブされたコピー (リンク)