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

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

pointこの用語のポイント

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

pointDNSサーバの使うカンペをコッソリ書き換えるよ

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

スポンサーリンク

簡単に書くよ

DNSキャッシュポイズニング攻撃(読:ディーエヌエスキャッシュポイズニングコウゲキ 英:DNS cache poisoning)とは

「DNSサーバさん(IPアドレスとドメイン名の対応を管理するのが仕事のコンピュータ)の使っているカンペを変な内容に書き換えてやるぜ!」攻撃のこと。
もう少し具体的に書くと

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


image piyo

詳しく書くよ

最初に留意事項です。

DNS
DNSサーバ
フルサービスリゾルバ


の意味が分からない方は、おそらく、ここから先を読むのは早いです。
これらの用語の意味を先に勉強してきてください。
のんびり、お待ちします。

ちょっと休憩

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

フルサービスリゾルバDNSキャッシュサーバさんは他のDNSサーバさんに問い合わせた内容をカンペにメモって一定期間保存しています。
ちなみに、このカンペは「キャッシュ」と呼ばれたりします。

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

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

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

それを踏まえて

「DNSサーバさんの使うカンペを変な内容に書き換えてやるぜ!」な攻撃

が「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キャッシュポイズニング攻撃5

フルサービスリゾルバさんは、答えが分からないときは他のDNSサーバさんに問い合わせにいきます。
ここでポイントとなるのが「フルサービスリゾルバさんは結構忙しい」ということです。
2つも3つも同時に問い合わせなくてはいけない場合があります。

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

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

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

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

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

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

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

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

まず普通にパソコンさんからDNSサーバさんに対してお問い合わせをします。

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

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

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

今がチャンスです!

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

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

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

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

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

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

次に同じ内容の問い合わせがあったときは、わざわざ他のDNSサーバさんに聞きません。
カンペにメモってあるからです。
カンペを見て、カンペの内容を返します。

ということは、ですよ。
悪い人が仕組んだ偽物の答えを返しちゃいます。
おーまいがっ。

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

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

その通りです。

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

その通りです。

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

その通りです。

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

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

じゃあ、そんなに神経質にならなくても良いんじゃない?
成功する可能性は低いでしょ。

その通りです。

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

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

それでは、どうするか?

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

例えば、そうですね。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

以下、同じことを繰り返します。
実質的にチャンスは無限ですね。

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

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

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


image piyo2

一言でまとめるよ

まぁ「DNSキャッシュポイズニング攻撃」って単語が出てきたら「DNSサーバさん(IPアドレスとドメイン名の対応を管理するのが仕事のコンピュータ)のカンペを書き換えてやるぜ攻撃なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像018
書籍画像013

おまけ

■訳してみるよ

「DNS」は「Domain Name System(ドメイン・ネーム・システム)」の略です。
「domain(ドメイン)」の意味は「領域」とか「区域」とか「領土」とかです。
「name(ネーム)」の意味は「名前」とかです。
「system(システム)」はカタカナで「システム」と解釈してください。
「cache(キャッシュ)」の意味は「隠したもの」とか「隠し場所」とか「貯蔵所」とか「貯蔵物」とかです。
「poisoning(ポイズニング)」の意味は「中毒」とか「毒殺」とか「毒を盛る」とかです。
「攻撃」は日本語ですね。
何となく くっつけると

領域名システムの貯蔵物に毒を盛る攻撃

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
タヌキとキツネ
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本