DNS キャッシュポイズニング
基礎
ドメイン名と IP アドレスをひもづける DNS サーバに偽の情報を記憶させることで、その DNS サーバの利用者を不正な Web サーバなどへ誘導する攻撃手法
例 : www.example.com
- キャッシュ DNS サーバ => 権威 DNS サーバ
- www.example.com の名前解決要求
 
 - 悪意ある DNS サーバ => キャッシュ DNS サーバ
- 権威 DNS サーバが正当な応答を返す前に、www.example.com の応答を返す
 
 - キャッシュ DNS サーバ
- 悪意ある DNS サーバから応答をキャッシュ
 
 - クライアント => キャッシュ DNS サーバ
- www.example.com の名前解決要求
 
 - キャッシュ DNS サーバ => クライアント
- 悪意ある DNS サーバからもらった www.example.com の IP アドレスを返す
 
 - クライアント
- 偽のサイトにアクセスする
 
 
DNS スプーフィングの一種
ファーミング- DNS サーバのキャシュに偽の情報を登録することで、多くの一般ユーザを次々に偽のサイトに誘導する手法
 
カミンスキー攻撃- キャッシュに存在しないサブドメインへの DNS クエリ発行を利用して、攻撃を従来より効率良く成立させる手法
 - キャッシュに存在しないサブドメイン(a.example.com,b.example.com…)の DNS クエリを利用することでキャッシュサーバに再帰問合せの実行を強制
- これにより攻撃成立の機会を大幅に増加させ、攻撃を効率的に行えるようになっています
 
 - ポート番号が 53 番に固定されていると攻撃が成立しやすくなる
- 応答パケットの偽装を難しくするには、ランダムに選択したポート番号を通信に使用すること( 
ソースポートランダマイゼーション)や DNSSEC の導入が有効な対策となる 
 - 応答パケットの偽装を難しくするには、ランダムに選択したポート番号を通信に使用すること( 
 
hosts ファイルの書き換え
- マルウェアがこれを実行し、不正なサイトへアクセスさせる事件もある
 
攻撃の成否
- 攻撃者は、送信ポート番号(名前解決要求の送信元ポート番号であり、応答時の宛先ポート番号となる)、トランザクション ID を本来の応答レコードと合致させる必要がある
- しかし、送信ポート番号、宛先ポート番号ともに 53 番に固定する設定となる DNS サーバが数多く存在し、攻撃を容易にさせている
 
 
- 攻撃者は、送信ポート番号(名前解決要求の送信元ポート番号であり、応答時の宛先ポート番号となる)、トランザクション ID を本来の応答レコードと合致させる必要がある
 
対策
- DNS サーバをキャッシュサーバとコンテンツサーバの 2 台のサーバに分けて、キャッシュサーバでは外部からのアクセスを受け付けないようにする方法
 
