読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

セキュリティ基礎用語(2)DNSの仕組みとDNSキャッシュポイズニングとは何かについて

セキュリティ
<スポンサーリンク>

DNSって何?

DNSドメイン・ネーム・システムと呼ばれる名前解決システムのこと。
「名前解決」とは、ネットワーク上で、コンピュータやネットワーク機器につけられた名前からアドレスを割り出すことだ。
要は、DNSとは、ドメイン名に対するIPアドレスを調べるためのプロトコルのこと。

DNSの起源はhostsファイルにさかのぼる。
hostsとは、Windowsだったら、

C:\Windows\System32\Drivers\etc\hosts

にあるファイル。
Linuxだったら、/etc/hosts

中はこんな感じで書かれていて、IPアドレスとサーバの名前の対応を示している。

102.54.94.97 rhino.acme.com # source server

しかし、ノードが増えてくると、hostsファイルの設定がいちいち面倒で、全てをhostsで賄うのは非現実的となった。
ちなみに、通信ネットワークではコンピュータやハブ、ルータなど一台一台の通信機器がノードに当たる。

DNSドメイン名に対応したIPアドレスを調べたいクライアントが、DNSサーバが保持しているドメイン名とIPアドレスの対応表に問い合わせて、目的のIPアドレスを調べる仕組みだ。

コメンドで名前解決したければ、

nslookup ドメイン名

を入力すればいい。

たとえば、

>nslookup yahoo.co.jp
サーバー:  XXXX.home
Address:  YYY.YYY.XXX.XXX

権限のない回答:
名前:    yahoo.co.jp
Addresses:  124.83.187.140
          203.216.243.240

と出ているので、

http://124.83.187.140/

にブラウザに打ち込んでリクエストを飛ばすとYahoo Japanの画面が開く。

DNSキャッシュポイズニングとは

DNSキャッシュポイズニングとは、DNSのキャッシュ機能を悪用して、ドメイン名を不正なIPアドレスに解決し、ブラウザを不正なWebページに誘導する攻撃手法のこと。

DNSにキャッシュされた情報を汚染することで偽の解決情報を登録する。
DNSのキャッシュサーバは、クライアントから問い合わせがあると、上位のDNSサーバに再帰問い合わせをする。

で、この問い合わせに対する返信については、トランザクションIDと呼ばれるID以外に真正性を確認する手段が設けられていないため、IDとポート番号さえ一致すれば、一番早く返ってきた返答をそのまま信頼する。

なので、クラッカーは正規の上位DNSサーバが応答する前に応答パケットを偽装して送りつけることで、標的のDNSキャッシュサーバに偽の名前解決情報をキャッシュさせる。

こいつに関してはトランザクションIDをランダムなものにするなどの防御が考えられているのだが、「やられにくくなる」程度で完全には防げない。
DNSプロトコルを改善したDNSSECの移行が期待されている。

[改訂新版] 3分間ネットワーク基礎講座

[改訂新版] 3分間ネットワーク基礎講座