[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

DNSキャッシュポイズニング攻撃

pointこの用語のポイント

pointDNSサーバを利用した悪いことだよ

pointDNSサーバの使うカンペを書き換えてやるぜ攻撃だよ

point変なホームページに誘導するのが目的だよ

スポンサーリンク

簡単に書くよ

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

DNSサーバさんの使っているカンペを変な内容に書き換えてやるぜ攻撃のこと。
もう少し詳しく書くと

フルサービスリゾルバさん(DNSキャッシュサーバさん)に悪意のある情報を覚えさせることで、変なホームページに誘導したりする嫌がらせ
です。

image piyo

詳しく書くよ

まず最初に「DNS」「DNSサーバ」「フルサービスリゾルバ」の意味が分からない方は、恐らくここから先を読むのはまだ早いです。
先に「DNS」「DNSサーバ」「フルサービスリゾルバ」の意味をお勉強してきてください。

……(--)

準備OKでしょうか?
それではDNSキャッシュポイズニング攻撃の説明を始めます。

フルサービスリゾルバ(DNSキャッシュサーバ)さんは、他のDNSサーバさんに問い合わせた内容を、カンペにメモって一定期間保存しています。

DNSキャッシュポイズニング攻撃

カンペに記載のある内容の問い合わせがあった場合は、そのカンペの内容に従ってお返事してやります。
カンペに記載がない場合のみ、他のDNSサーバさんに問い合わせにいくのです。

DNSキャッシュポイズニング攻撃2

このカンペの内容を変な風に書き換えてしまう嫌がらせが「DNSキャッシュポイズニング攻撃」です。

例えば、元々ドメイン名「i-3-i.info」はIPアドレス「198.51.100.1」の「ぴよぴよサーバ」と関連付けられていました。
それをIPアドレス「198.51.100.2」のウイルスたっぷり「デビルサーバ」と関連付くように書き換えてしまいます。

DNSキャッシュポイズニング攻撃3

そうすると、どうなるでしょう?

そうですね。
「『i-3-i.info』のIPアドレスは何~?」な問い合わせに対して「『198.51.100.2』(デビルサーバ)だよ~」と答えるようになってしまいます。
本当はIPアドレス「198.51.100.1」のぴよぴよサーバに遊びに行ってまったりするはずが、IPアドレス「198.51.100.2」のデビルサーバに行って、ウィルスと格闘する羽目になります。

DNSキャッシュポイズニング攻撃4

このように「DNSサーバさんのカンペを書き換えて、問い合わせに対して変な回答をするようにする」嫌がらせがDNSキャッシュポイズニング攻撃です。
カンペを使う仕組みは「キャッシュ」と言います。
DNSサーバさんのキャッシュに毒(悪意のある情報)を混ぜる攻撃だから「DNSキャッシュポイズニング攻撃」です。

では、実際に、どうやってカンペを書き換えるのでしょうかね?

せっかくなので、簡単に見ていきます。
興味の無い方は適当に読み飛ばしてください。

フルサービスリゾルバさんは、答えが分からないときは他のDNSサーバさんに問い合わせにいくDNSサーバさんです。
ここで注意していただきたいのですが、フルサービスリゾルバさんは結構忙しい人です。
場合によっては、2つも3つも同時に問い合わせをしなくてはいけない場合があります。

DNSキャッシュポイズニング攻撃5

戻ってきたお返事がどの問い合わせに対する回答か分からないと困りますよね。

DNSキャッシュポイズニング攻撃6

そこで、問い合わせる際には、質問番号をくっつけて送ってやります。
問い合わせ1には質問番号1、問い合わせ2には質問番号2、のような形です。

DNSキャッシュポイズニング攻撃7

そうすると他のDNSサーバさんは、この質問番号をくっつけてお返事をくれます。
「この答えは質問番号1の問い合わせに対する回答だよ」のような形です。

DNSキャッシュポイズニング攻撃8

さぁ、いよいよ本題です。
DNSキャッシュポイズニング攻撃をやってみましょう。

まず最初は、普通にお問い合わせをします。

DNSキャッシュポイズニング攻撃9

そうすると、答えの分からないDNSサーバさんは他のDNSサーバさんに問い合わせを行います。

DNSキャッシュポイズニング攻撃10

今がチャンスだ!

他のDNSサーバさんから本当の答えが返る前に、悪い人の方で他のDNSサーバさんに成りすまして、偽物の答えを送るのです。
えっ?質問番号が分からない?だったら片っ端から試せば良いじゃないですか。
「これは質問番号1の答えです」「これは質問番号2の答えです」のように順番に試して行けば、いつかは本物の質問番号と一致しますよ。

DNSキャッシュポイズニング攻撃11

偽物の答えを受け取ったDNSサーバさんは、その内容を問い合わせた人に返します。

DNSキャッシュポイズニング攻撃12

その後、偽物の答えをカンペにメモってしまうのです。

DNSキャッシュポイズニング攻撃13

次に同じ内容の問い合わせがあった際には、カンペにメモってあるので、わざわざ他のDNSサーバさんに問い合わせに行きません。
悪い人が仕組んだ偽物の答えを返しちゃいます。おーまいごっど。

これがDNSキャッシュポイズニング攻撃の仕組みです。

ふーん。
でもこれって、他のDNSサーバさんに問い合わせに行くときにやれることでしょ?

その通りです。

一回問い合わせたらカンペにメモっちゃうよね?

その通りです。

その内容がカンペから消えるまで、他のDNSサーバさんに問い合わせに行かないよね?

その通りです。

ということは、悪さをするタイミングって、カンペに内容が書かれていないときに1回だけだよね?
失敗したら、カンペにメモられた内容が消えるまで待たないといけないんだよね?

まったくもって、その通りです。

じゃあ、そんなに神経質にならなくても良いんじゃない?上手く行く可能性は低いでしょ。

その通りです。

そんなふうに考えていた時期が俺にもありました。

悪さをできるタイミングは他のDNSサーバさんに問い合わせるときです。
問い合わせた内容が既にカンペにメモられているときはできません。

では、どうするか?

カンペにメモられていない内容を問い合わせれば良いのです。

例えばそうですね。

存在しないドメイン名「tekitou001.example.com」のIPアドレスを問い合わせます。

DNSキャッシュポイズニング攻撃14

存在しないドメイン名なので、恐らくカンペにはメモられていません。
きっと他のDNSサーバさんにお問い合わせするでしょう。

DNSキャッシュポイズニング攻撃15

その間に攻撃を仕掛けましたが、失敗しました。

DNSキャッシュポイズニング攻撃16

でも諦めたらそこで試合終了です。

次に、存在しないドメイン名「tekitou002.example.com」のIPアドレスを問い合わせます。

DNSキャッシュポイズニング攻撃17

存在しないドメイン名なので、恐らくカンペにはメモられていません。
きっと他のDNSサーバさんにお問い合わせするでしょう。

DNSキャッシュポイズニング攻撃18

その間に攻撃を仕掛けましたが、失敗しました。

DNSキャッシュポイズニング攻撃19

でも諦めたらそこで試合終了です。

存在しないドメイン名「tekitou003.example.com」のIPアドレスを問い合わせます。

以下、延々と同じことが繰り返されます。
実質的にチャンスは無限ですね。

これだけだと、成功しても存在しないドメイン名とIPアドレスの組み合わせがカンペにメモられるだけです。
しかし、もう一工夫することで、実質的な被害を出すことができちゃうのです。

このようなDNSキャッシュポイズニング攻撃の効率を上げるやり方を、カミンスキーさんという人が発見してしまいました。
そのため、この手法は「カミンスキー型攻撃(Kaminsky attack)」と呼ばれています。

これ以上具体的なやり方を書くと怒られちゃうかもしれないので、これ位にしておきますね。

image piyo2

一言でまとめるよ

まぁ「DNSキャッシュポイズニング攻撃」って単語が出てきたら「DNSサーバさんのカンペを書き換えてやるぜ攻撃なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク