DNSポイゾニングに関するメモ
フィッシング詐欺の新たな手口として、ユーザが正しいドメイン名にアクセスしているつもりでも、IPアドレスへの変換のしくみ(lmhostsやDNSサーバ)に細工をし、任意のIPアドレスのサーバに誘導し、クレジットカードや個人情報などを搾取する、通称ファーミング(Pharming)が注目されている。
ユーザを任意のIPアドレスにユーザを誘導するため一手段としてDNSポイゾニングという手法が用いられる可能性があり、ここではその手口や対策について簡単に紹介する。
【DNSポイゾニングの手口】
攻撃者は、攻撃対象となるユーザが利用するDNSサーバのキャッシュに誤った情報を記憶させ、ユーザが特定のドメイン名、たとえばwww.example.comというEコマースサイトにアクセスしようとした際に、任意のIPアドレスを持つサーバ(例えばクレジットカード番号収集用のサーバ)に通信を行うよう誘導する。これは以下のような手順で行われる。
1 攻撃対象のユーザが利用するDNSサーバに、ユーザが利用するであろうサイトのドメイン名(www.example.com)についてIPアドレスの問い合わせを行う。
2 DNSサーバは問い合わせ対象の情報が自ドメインの管理下にないため当該ドメインのDNSサーバに要求を転送する。
3 攻撃者は2の要求転送先であるDNSサーバになりすまし、誘導したいIPアドレスを回答として送信する。
DNSは通常UDPプロトコルを使用して通信を行うため、IPパケットの送信元を書き換えるだけで容易に詐称することができる。サーバー側の対策として返答の送信元の詐称を困難にするため要求を送信する際ランダムなシーケンスナンバーを指定するが、攻撃者が総当り的に異なるシーケンスナンバーを持つパケットを大量に送信することでDNSサーバをだますことができてしまう。
特に古いバージョンのDNSサーバ(BIND4,8等)では、一つの問い合わせについて複数の要求パケットを送信するために、シーケンスナンバーが偶然一致する確率が高くなる。また、サーバで生成する擬似乱数の偏りを利用して、シーケンスナンバーが一致する確率を高める方法も考えられている。
【対策】
このようなDNSポイゾニングの対策としては、サービス提供側(www.example.com)としては、SSLのサーバ認証を利用し、ユーザに都度証明書を確認するよう促すぐらいしかない。SSLを使用していることをユーザによく認識してもらいSSLを介さずに接続された場合は偽物のサイトであることを理解してもらう。また、仮にSSLで接続された場合でも攻撃者のドメイン名に対する証明書だったり、オレオレ証明書が用いられる場合もあり、当該サイト(www.example.com)に対する正しいドメインの証明書であることを確認してもらう必要がある。
自分が管理するDNSサーバに対してDNSポイゾニングが行われないようにするための対策としては、外部からの自ドメインに関する問い合わせについて回答するDNSサーバと、内部ユーザからの問い合わせを処理する(キャッシュ)サーバをそれぞれ異なるIPアドレス持つよう分離し、外部から内部ユーザが利用するDNSサーバを攻撃対象とされないようにすることが考えられる。また内部用のDNSサーバには外部から直接問い合わせができないようアクセス制限を行う。またファイアウォールやIDSを用いて不正なパケットを制限・監視する方法などが考えられる。
【まとめ】
DNSというサービスのプロトコル上の制約から、今回紹介したようなDNSポイゾニングについて完全な対策を行うのは容易ではない。DNSSECなどセキュアなプロトコルとサービスに関する研究が進められているが、そういった新たな技術が十分に普及するまではDNSポイゾニングの危険性は存在し続けるものと思われる。
【参考情報】
DNS Cache Poisoning – The Next Generation(Joe Stewart,GCIH@SecurityFocus )
http://www.securityfocus.com/guest/17905
(2/18:表現等一部更新)
国家公安委員会、不正アクセスの発生状況を公表
不正アクセスに関連してですが、
国家公安委員会、不正アクセスの発…
私の利用しているネットで、正にこの状況が発生しています。
我が家で nslookup コマンドを実行するとデタラメなIPアドレスをDNSサーバーに指定しても応答が返って来ます。
======================================================================
$ nslookup
Default Server: tegtan2.interlink.or.jp
Address: 203.141.128.34
> server 1.1.1.1
Default Server: [1.1.1.1]
Address: 1.1.1.1
> http://www.google.com
Server: [1.1.1.1]
Address: 1.1.1.1
Non-authoritative answer:
Name: http://www.l.google.com
Addresses: 64.233.179.99, 64.233.179.104
Aliases: http://www.google.com
======================================================================
これに対してプロバイダに問い合わせたところ、異常は認めるものの対策は出来ないらしく、
「NTTが割り振っているIPアドレスなので」と、言われました。
また、NTTに問い合わせたところ、こちらも暖簾に腕押しの状態。
警視庁のネット犯罪対策室に通報したところ、
「この手口でユーザーIDやパスワードを盗むのは法律上は犯罪にならないので、
事件にならなければ応対できない」とのこと。
一体、こういう場合はどこに相談すれば助けてもらえるのでしょうか?
何か良いアイディアがありましたらご教授願います。
トシヤさん、こんにちは。
でたらめなIPをDNSサーバとして指定した際に、DNSの要求に対しても必ず返答が返るというのは、ここで取り上げた状況とは少し違うような気がします。serverはIPで指定していますから。
あるとすればDNSのポイゾニングというよりはDNSクエリのスプーフィングですね。通常デフォルト設定しているtegtan2.interlink.or.jpが正しいIPを返している限りはDNS的な問題ないかと思います。
ただIPレベルでどこに接続されるかわからないということについては、プロバイダかルータがDNS要求に対しては強制的どこかのDNSを引かせるようになっているということはないでしょうか?