ARP Spoofng

ARP スプーフィング

目次

  1. はじめに
  2. ARPスプーフィングの概要
  3. ARPスプーフィングの防止
  4. おわりに

はじめに

  Ethernetスイッチングハブの主な効果はデータ通信におけるパケットの転送効率を上げることです。Ethernetスイッチングハブはリピータハブと違って、ハブに接続されている複数のホストの中で通信を行っている当事者のホストにだけパケットを転送します。このため、Ethernetスイッチングハブには盗聴の防止という副産物のような効果があります。

  しかし、このEthernetアドレスのフィルタリングによるセキュリティ効果は、ARP spoofingまたはARP cache poisoningと呼ばれる技法によって無力化されることが知られています。

  通信データの盗聴によるリスク(利益や信頼など何かを失う可能性)を軽く見ることは危険です。現在では、LANは企業内に当たり前のように在り、重要な情報が飛び交っています。もし、人事評価や財務諸表などの機密情報が盗聴されたら大問題です。
2008年には、インターネットサービスを提供しているサーバー群が収容されているセグメント上の1台のホストが攻撃を受け、HTTPのトラフィックが盗聴され、さらに改竄されるという事件が起きています。

  この記事では、ARPスプーフィングの詳細に触れ、ARPスプーフィング防止機能を備えたスイッチングハブの正しい導入方法ついて述べます。

ページのトップ

ARPスプーフィングの概要

  ARP spoofingのしくみは簡単です。目標のホストに偽のARPパケットを送り、そのホストのARPキャッシュに間違った情報を保持させます。このことから、ARP cache poisoningとも呼ばれています。盗聴の手順を【図 2-1】に示すネットワーク構成を例に説明します。

  
    
                            To the internet
                                   |
                                   |
                              +----+----+
                              | Gateway |
                              +----+----+
                                   | IP:  10.0.0.254
                                   | eth: 2:0:0:0:0:fe
                                   |
                          +--------+--------+
                          |                 |
                          | Ethernet Switch |
                          |                 |
                          +---+----+----+---+
                              |    |    |
                  +-----------+    |    +-----------+
                  |                |                |
              +---+---+        +---+---+        +---+---+
              | HostA |        | HostB |        | HostC |
              +-------+        +-------+        +-------+
        IP:   10.0.0.10        10.0.0.11        10.0.0.12
        eth:  2:0:0:0:0:a      2:0:0:0:0:b      2:0:0:0:0:c
    
                          【図 2-1】ネットワーク構成1
    

  上のネットワーク構成において、HostCを操作している人物(以降、攻撃者といいます)がHostAとGatewayの間の通信を盗聴しようとしていると仮定します。攻撃者は、先ず、HostAとGatewayのEthernetアドレスを取得します。次に、両者(HostAとGateway)に向けて偽のARPパケットを送ります。HostAには、IPアドレス10.0.0.254のEthernetアドレスは2:0:0:0:0:cだと伝えます。一方Gatewayには、IPアドレス10.0.0.10のEthernetアドレスは2:0:0:0:0:cだと伝えます。これ以降、HostAとGatewayの間のパケットがHostCに届くようになります。HostCは、受信したパケット(正確にはEthernetフレーム)のEthernetヘッダーを変更して、正当な受信者に向けて転送します。そして、目的の情報を盗んだ後、HostCはHostAとGatewayのARPキャッシュを正常に戻すため、正しいARPパケットを両者に向けて送ります。

  通信をしている二人の間に割り込んで通信データを中継する技法を、総じて"Man in the Middle Attack"と呼びます。ARPスプーフィングの他にDNSスプーフィングやDHCPスプーフィングと呼ばれる技法があります。

  Man in the Middleの脅威は盗聴だけではありません。暗号化されていないファイルは改竄される恐れがあります。ウェブサーバーと同じセグメントにいるホストを操ることができれば、ウェブサーバーを直接攻撃して保管されているHTMLファイルを改竄できなくても、ウェブサーバーからの応答パケットを横取りし、不正なコードを実行する<script>タグを埋め込んで、クライアントに渡すことができます。

ページのトップ

3 ARPスプーフィングの防止

3.1 スイッチングハブの防止機能

  最近の高価なEthernetスイッチングハブにはARPスプーフィングを防止する機能を持った製品があります。製品によって異なると思いますが、この機能の多くは、DHCP Snooping(スヌーピング)機能と合わせて働き、偽のARPパケットを検出します。概要は次のとおりです。

  まず、スイッチングハブに正当なDHCPのIPアドレスを登録したり、あるいは正当なDHCPが接続されているポートを特定したりします。スイッチングハブはDHCPサーバーと端末間の通信を傍受して、その中に信頼できるアドレステーブルを構築します。信頼できるアドレステーブルには、DHCPサーバーが振り出したIPアドレスとそれが割り当てられた端末のEthernetアドレスならびにその端末が接続されているポート番号の組み合わせが保持されています。スイッチングハブはARPパケットを受信したとき、その送信元の論理アドレスと物理アドレスの組み合わせを取り出し、信頼できるアドレステーブルに照らし合わせて、その組み合わせが正当なものであるか否かを検査します。そして、もし不正な組み合わせであれば、ARPパケットを破棄し、目標ホストのARPキャッシュが汚染されることを防ぎます。

  ただし、導入するときには少し注意が必要です。上で説明したようなARPパケットを検査する防止機能は、ホストを直接接続しているスイッチングハブすべてに求められます。このことを【図 3-1】に示すネットワーク構成を例に説明します。

  
    
                                    To the internet
                                          |
                                          |
                       +----+----+   +----+----+
                       |  DHCP   |   | Gateway |
                       +----+----+   +----+----+
                            |             | IP:  10.0.0.254
                            |             | eth: 2:0:0:0:0:fe
                            |             |
                       +----+-------------+----+
                       | Trusted       Trusted |
                       | port          port    |
                       |                       |
                       |    Ethernet Switch    |
                       | with DHCPsnooping and |
                       |    Anti-ARPspoofing   |
                       |                       |
                       |       Untrusted       |
                       |       port            |
                       +-----------+-----------+
                                   |
                                   |
                          +--------+--------+
                          | Ethernet Switch |
                          |  Ordinary HUB   |
                          +---+----+----+---+
                              |    |    |
                  +-----------+    |    +-----------+
                  |                |                |
              +---+---+        +---+---+        +---+---+
              | HostA |        | HostB |        | HostC |
              +-------+        +-------+        +-------+
        IP:   10.0.0.10        10.0.0.11        10.0.0.12
        eth:  2:0:0:0:0:a      2:0:0:0:0:b      2:0:0:0:0:c
    
                          【図 3-1】ネットワーク構成2
    

  このネットワーク構成では、GatewayはARPパケットを検査する防止機能を持ったスイッチングハブ(以降、スマートハブといいます)に接続されていますが、端末は特別な機能を持たない平凡なハブに接続されています。ここでも、攻撃者はHostCを操作して、HostAとGatewayの間の通信を盗聴しようとしていると仮定します。

  HostCは、Gatewayに偽のARPパケットを送りつけることができません。その手前でスマートハブに阻まれてしまいます。しかし、HostAには偽のARPパケットを送りつけることができます。HostAのARPキャッシュの汚染に成功すると、HostAからGatewayへのパケットはHostCを経由して届くようになります。
  攻撃者はHostCに届くこれらのパケットを本当のGatewayに転送しなければなりません。そうしなければHostAの利用者が不審に思うからです。パケットを本当のGatewayに転送できるか否かはスマートハブの機能によります。
もしスマートハブのDHCPスヌーピング機能が、受信したすべてのパケットの発信元IPアドレスと発信元Ethernetアドレスの組み合わせを信頼できるアドレステーブルに照らし合わせて検査するならば、攻撃者は横取りしたパケットをGatewayへ転送することはできません。なぜなら、HostCは自分のIPアドレスを偽ることができても、Ethernetアドレスを偽ることが理論的にできないからです。これは攻撃者にとって不幸な結果です。
  もう一つは攻撃者にとって幸運な結果です。もしスマートハブのDHCPスヌーピング機能が、受信したパケットの発信元Ethernetアドレスとポート番号またはVLAN番号しか検査しない場合、攻撃者は横取りしたパケットをGatewayへ転送することができます。
  HostAからのパケットがGatewayに届いたら、Gatewayはそれを宛先IPアドレスに向けて転送し、その後応答パケットを受け取るでしょう。GatewayのARPキャッシュは汚染されていませんので、HostAへの応答パケットはHostCを介さず、直接HostAに届きます。   このような状況では、攻撃者はHostAからGatewayへの片方向の通信しか盗聴することができません。しかし、攻撃者にとってはこれでも充分です。なぜなら、HostAから送信される各種サービスへのログインIDやパスワードを盗聴できるからです。
  ただし、Gatewayが既にHostAのエントリーをARPキャッシュに持っている場合に限ります。もし、GatewayがHostAのEthernetアドレスを知らなければ、Gatewayはそれを知るためのARPリクエストを一斉同報します。これによってHostAはARPキャッシュのGatewayのエントリーを修正します。その結果、攻撃者が横取りできるのは第1パケットだけになってしまいます。攻撃者はこのような事態を避けるためにさらに工夫を重ねるでしょう。

  もしかすると、攻撃者はHostCにTransparent Proxy(透過プロキシ)をインストールするかもしれません。透過プロキシが、DNS, FTP, SSH, SMTP, POP, HTTPSなどすべてのプロトコルに対応できるなら、攻撃者はHostAとGateway間の双方向の通信内容を盗むことが出来ます。HostCからのパケットは、HostAから盗んだユーザーデータをカプセル化しているだけで、EthernetおよびIPヘッダは偽装していません。たとえスマートハブのDHCPスヌーピング機能が、受信パケットの発信元IPアドレスと発信元Ethernetアドレスの組み合わせの正当性を検査しても、不正を見破ることはできません。

  以上のことから、ARPパケットを検査することによって盗聴を防止するスイッチングハブは、ホストを直接接続する箇所に導入しなければならないことが解ります。

ページのトップ

3.2 その他のARPスプーフィング対策

  ARPスプーフィング防止機能を持ったスイッチングハブを導入するのは効果的ですが、1台が数十万円もすると中規模以上のネットワークでは少し費用がかかります。

  特別な機器を導入せずにARPスプーフィングを防止する方法もあります。個々のホストで重要なサーバーやルーターのARPエントリーを静的に登録し、ARPパケットによって動的に変化しないようにします。こちらの対策は機材を購入する費用がかからない代わりに、パソコンの台数が多いと大変な労力がかかります。

  既存のスイッチングハブがフィルタリング機能を持っているなら、正しいIPアドレスとEthernetアドレスの組み合わせをフィルタリングルールに登録する方法もあります。この方法は、固定IPアドレスを使っている場合は良いのですが、DHCPを使っている場合は対応できません。

  ARPスプーフィングを防止または検出するUnix/linux用のツールがいくつか公開されています。例えば、ArpOnarpwatchなどです。詳しくはそれぞれのホームページをご覧ください。

  その他、ネットワークに接続しているパソコンに、ユーザーが好き勝手にソフトウェアをインストールできないようにする仕組みも効果的です。このような対策は、ARPスプーフィングの防止に限らず、ファイル交換ソフトによる情報漏洩の防止、ウィルス感染の予防などにも効果があります。

ページのトップ

4 おわりに

  ARP Spoofingツールは、インターネットの中を検索すれば簡単に見つることができるでしょう。以前は、このページでも検査用プログラムを公開していましたが、Wiresharkなどのパケットキャプチャーツールと合わせて使用すれば悪用される可能性がありますので、現在では公開を止めています。

  ARPスプーフィングは、攻撃者が同じサブネット内に居る場合に成功します。もし、ネットワークの利用者がすべて信頼できる人物であるなら、この脅威は顕在化しません。ですから、社内ネットワークにおいてはネットワークの利用者を厳格に制限するべきです。例えば、契約社員が持参したノートパソコンを勝手に社内ネットワークに接続させるようなことを許してはいけません。また、一般ユーザーが攻撃者に変貌しないようにセキュリティーについての教育を実施することも大切です。

  最後に、この記事がネットワーク管理者にとって少しでも役立つものになることを願っています。

ページのトップ

著作権者の文書による承諾を得ずに、本記事の一部または全部を無断で複写・複製・転載することはできません。