1. DNS/毒盛/入門

リゾルバーになんらかの「偽造返答を受け取らせる」ことが最初の関門です。

../キャッシュサーバはキャッシュにある情報は通常は問い合わせを送出しません。

そして、ここでは、どういう返答であればキャッシュに取り込まれるか、 つまり/有効な毒となるかを考えます。

あとは誰かがキャッシュにある偽の情報を参照するのを待ちます。

1.1. 関連用語

DNSの基礎知識は前提にする。

2. 毒盛シナリオ

2.1. 利用者と攻撃者

人間あるいはソフトウェア

2.2. DNS キャッシュサーバ

毒盛対象のキャッシュサーバ(ホスト)

実装の種類にもよる(BINDが一番あやしげ)

2.3. DNS問い合せ(きっかけ)

攻撃開始: Kaminsky 流攻撃では「キャッシュされていないレコード」を問い合せる。

外部に問い合せを送らせて、その偽返答で毒入れする。

2.4. DNS問い合せ

キャッシュにないレコードが(返答のために)必要になると、キャッシュサーバは外部(ゾーンサーバなど)へ問い合せる。

このときに「問い合せポートが固定」だと毒を受けとり易い。 (DNSの仕様不備といえる)

2.5. DNS返答(期待される返答)

Kaminsky 流攻撃の問い合せに対しては、本来のサーバからはNXDOMAIN返答が返ってくる。

2.6. DNS偽返答(毒)

返答に見せかけた返答を送り込む。(委譲返答を使うのがMueller)

2.6.1. 受け取らせる条件

タイミング、問い合せ(query string)、TXID、port

2.6.2. 受け取らないための対策

ポートランダム化、 問い合せのエントロピー増強、 拡張仕様(TXID が16ビットだなんて)

そもそも問い合せをするのが問題かもしれない。

2.7. 偽返答をキャッシュさせるには

現状は受け取った返答が偽返答だと疑う実装はすくない。 (Deadwood は別格)

参照返答(上位からの委譲返答、あるいはゾーンサーバからの移転返答)がキャッシュされやすい。 (Kaminsky, Mueller )

キャッシュにないレコード(ドメイン名、レコードタイプ)がキャッシュされやすい。(Mueller 手法、 前野らの探索)

上書き: Ranking(RFC2181)を考慮すると毒をいれやすい。 (鈴木)

2.8. 毒の有効性

期間, 効果

キャッシュさせても、直ちに毒の効果が現れるとはかぎらない。 (TTLが関係する)

キャッシュさせても、正規の返答で上書きされると毒の効果が発揮されない。 (RFC2181や glue の扱い)

-- ToshinoriMaeno 2014-04-19 21:50:44

2.9. 毒盛対策

毒が入るまでの手順が理解できたら、それが成功しないようにじゃまをすること

-- ToshinoriMaeno 2014-04-19 23:12:27

2.10. ゾーンサーバを使った毒

Kaminsky 流攻撃だけが、毒盛手段ではない。

../Kashpureff型攻撃 https://en.wikipedia.org/wiki/AlterNIC

こんなサービス: http://www.ipillion.com/ip/208.91.197.132