DNS cache poisoning(DNSキャッシュポイズニング)とは

導入

今回の10分講座は、最近になって新たな攻撃方法が発見され、対応の緊急性が高まったDNSキャッシュポイズニングについて解説します。


昨今、日本レジストリサービス(JPRS)からキャッシュポイズニング攻撃によるキャッシュDNSサーバーへのアクセスが増加しているとの注意喚起が継続して出ております。キャッシュDNSサーバーに対する攻撃への対策が取られていないサーバーが、まだ存在する状態であることから、今一度「お客さま自身で管理されているDNSサーバー」の設定のご確認をお願いいたします。


攻撃者はDNSリゾルバーを欺きDNSキャッシュを汚染して偽情報を保存させ、リゾルバーが、クライアントに間違ったIPアドレスを送信します。Webサイトへ閲覧することを試みるユーザーは、不正な場所へ転送されます。


DNSサーバーのキャッシュの内容を書き換え、不正なサーバーなどに誘導する攻撃手法









とは

DNS cache poisoning(DNSキャッシュポイズニング) とは、 DNSサーバの脆弱性を利用して偽の情報をDNSサーバへ記憶させ、 そのDNSサーバを使用するユーザーに対して影響を与える攻撃です。

影響は攻撃者によってさまざまですが、 たとえばホスト名とIPアドレスの対応を本来の情報とは違うものにして、 特定のサイトへ到達できなくしたり、 攻撃者がコントロールする別のサイトへ誘導したりするものがあります。

なかでも、 DNS cache poisoningの攻撃を受け汚染されたサーバを利用しているユーザーが、 本来意図しない金融機関や商取引のデザインに似せた虚偽のサイトに誘導され、 ユーザー名やパスワードを奪われる手法が認識されており、 この手法をpharming(ファーミング)と呼びます。

DNS cache poisoningの攻撃手法は、 DNSサーバソフトウェアの脆弱性を利用するものが古くから知られていましたが、 最近では、DNSパケット中のIDを予測し応答を置き換える手法、 特にTTLの短いリソースレコードに対しては比較的容易に置き換えられることが注目されています。


DNSでは、前述の通りキャッシュという仕組みによって、負荷の軽減や高速化を図っています。この機能を悪用し、キャッシュサーバに偽のDNS情報をキャッシュとして蓄積させる「DNSキャッシュポイズニング」と呼ばれる攻撃があります。

DNSキャッシュポイズニングによる影響はさまざまですが、攻撃を受けたキャッシュサーバを利用するユーザーに対して、以下のような影響を与えることが可能です。

  1. ホスト名とIPアドレスの対応を変更し有害サイトへ誘導する
  2. Web、メールの内容を盗聴する、改ざんする
  3. spamを送信する
  4. DNSを使用不能にして、各種サービスやアプリケーションを動作不能にする(DoS)

DNSキャッシュポイズニングには、DNSサーバソフトウェアの不具合や設定間違いなどを狙った攻撃がありますが、以下では、DNSプロトコルの弱点をつく攻撃方法について説明します。


偽のDNS応答をフルサービスリゾルバー(キャッシュDNSサーバー)にキャッシュさせることで、利用者のアクセスを攻撃者が用意したサーバーに誘導し、フィッシングや送信された電子メールの窃盗などを図る攻撃手法です。
DNSキャッシュポイズニングの例を、通常の名前解決の動作と比較する形で以下に示します。

通常の名前解決の動作
DNSキャッシュポイズニングをされた場合の動作

攻撃者は、権威サーバーからの応答がフルサービスリゾルバーに届く前に発信元などを偽装した応答を送り込みます。送り込みに成功した場合(3’)、フルサービスリゾルバーに偽の応答内容がキャッシュされます(4’)。キャッシュされた偽の応答内容はスタブリゾルバー(DNSクライアント)への応答に使われ(5’)、以降、ユーザーのアクセスはキャッシュされた内容が無効になるまで攻撃者が用意したサーバーに誘導される(6’)ことになります。


偽のDNS応答をキャッシュDNSサーバーにキャッシュさせることで偽のサイトに誘導し、ドメインの乗っ取りやフィッシングなどを図る攻撃手法です。例えば、このような仕組みを電子メールに応用し、偽のサイトへ誘導され、情報が流出する危険性があります。

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

たとえば、高校生最後のいたずらとして、最上級生が高校の教室の番号をすべて入れ替えたとしましょう。そうすると、校舎内の配置に不慣れな新入生たちは、翌日、行き先に迷い、間違った教室にたどり着くことになります。さらに、この正しくない部屋番号が校舎の見取り図に記録され、最終的に誰かがこれに気づいて見取り図を修正するまで、生徒達は間違った教室に向かい続けると想像してください。

DNSキャッシュポイズニングはDNSキャッシュに偽情報を入力し、DNSは、正しくない応答を行い、ユーザーを間違ったWebサイトに接続します。DNSキャッシュポイズニングは「DNSスプーフィング」としても知られています。IPアドレスは、インターネットの「教室番号」で、Webトラフィックが適切な場所に着くことを可能にします。DNSリゾルバーキャッシュは「見取り図」で、不完全な情報を保存している場合、キャッシュされた情報が修正されるまで、トラフィックは間違った場所に転送されてしまいます。(実際のIPアドレスと本物のWebサイトが分離されているわけではないことに注意してください。)

典型的には、DNSリゾルバーのキャッシュ中のデータを確認する方法がないため、Time to Live (TTL)が期限切れになるか、手動で削除されるまで誤ったDNS情報がキャッシュに残ります。多くの脆弱性からDNSポイズニングが可能ですが、主な問題は、DNSがはるかに小さな規模のインターネットを意図して構築されており、(BGPのような)信頼の原理に基づいていることです。DNSSECと呼ばれる、よりセキュアなDNSプロトコルは、これらの問題の一部を解決することを目的としていますが、まだ広く採用されていません。


インターネット利用者がURLを入力するだけでホームページにアクセスできるしくみは、URLに記載されたドメイン名の「問い合わせ」に対し、該当するホームページのIPアドレスを「返答する」 DNSサーバーの働きによって実現している。

そのDNSサーバーは、問い合わせ内容をキャッシュとして一時的に保有する機能を持ち、利用者からの繰り返しの問い合わせにはキャッシュを使って素早く返答する仕組みを備えている。そのキャッシュに偽りのDNS情報を蓄積させる攻撃を「DNSキャッシュポイズニング」という。キャッシュが汚染されたDNSサーバーは、問い合わせに対して誤った内容を返答するため、DNSサーバーの利用者は気付かぬまま、本来アクセスしたかったIPアドレスとは別のIPアドレスに誘導されてしまう。

その結果として、インターネット利用者が正しいURLを入力しても、偽のDNS情報により、有害サイトといった本来とは異なるサーバー(攻撃者が用意したサーバー)へ誘導される恐れがある。URLを入力して知りたい情報を得られるというインターネットサービスの基本機能のひとつが損なわれてしまうため、インターネットの信頼性に影響する問題とされている。
こうした問題を受け、DNS応答が正規なものかを電子署名にて検証する「DNSSEC」の導入が進められている。


DNSキャッシュポイズニングとは、DNSキャッシュサーバーへのアドレス問い合わせを傍受して、偽のDNSキャッシュに誘導する攻撃のことだ。ウェブブラウザーやインターネットアプリケーションに、悪意のあるIPアドレスを返信して、正しいサイトの代わりに偽サイトに誘導する。そのウェブサイトは、ユーザーのPCをランサムウェアに感染させたり、ユーザー名、パスワード、口座情報などを盗んだりできる。


DNS(キャッシュDNS、厳密にはフルリゾルバと呼ぶべきもの[5][6])は自身でキャッシュしている対応表のみでは名前解決できない場合には上位のDNSに問い合わせる事により名前解決を行う。DNSキャッシュポイズニングは攻撃者が上位のDNSからの返答を偽装する事により、DNSのキャッシュにIPとURLの不正な対応関係を記憶させる攻撃手法を指す[7][8]

DNSキャッシュポイズニングの手法の一つに「IDおよび問合わせの推測」(RFC 3833 2.2)がある[9]。この手法において攻撃者はまず標的になるサイトのURLをキャッシュDNSにクエリする。このクエリに対する返答がキャッシュされていない場合、キャッシュDNSが上位のDNSに問い合わせるので、この際クエリに用いるIDと問い合わせ内容を推測する事で上位サーバからの返答を偽装する。(攻撃者は本物の上位サーバが返答するより早く偽装した返答を返す必要がある)。このような攻撃が可能な背景には、問い合わせの際に用いるID(TXID)が16ビット=65536通りしかなく、推測が容易な事があげられる[9]

DNSキャッシュポイズニングの初期の手法は、標的にしたいサイトの名前解決を何度もDNSに問い合わせる事で偶然TXIDが正しい値になる事を狙う、というものであった[10]。したがってその対策方法としては同一のドメイン名の名前解決を上位DNSに問い合わせる回数そのものを減らすために、キャッシュの有効期限を長くするなどするという方法が取られた[10]。攻撃者が前述の攻撃をしかけられるのはDNSにおいて標的サイトのキャッシュの有効期限が切れているタイミングに限られるので、この対策方法により攻撃が成功する可能性を下げられる。





H2候補

  • DNSの問い合わせの流れ
  • DNSのキャッシュ
  • DNSメッセージの偽装と従来の攻撃手法
  • 新しい攻撃方法(Kaminsky attack)
  • Kaminsky attack への対処
  • その他のKaminsky attackへの対応策について
  • 対象となるお客さま
  • カミンスキー型攻撃とは?
  • 対策方法:ソースポートランダマイゼーション
  • 対策が取られていない場合の影響
  • DNSリゾルバーは、何をするのでしょうか?
  • DNSキャッシュの仕組みは?
  • DNSキャッシュのポイズニングを実行する方法とは?
  • DNSスプーフィングと検閲
  • DNSSECはどのようにDNSポイズニング防止に役立つのか?
  • 影響
  • 主な感染/被害の流れ
  • 主な対策と注意点
  • インターネット利用者として対策

まとめ

※ このページは現在準備中です。記述内容は、以下の参考リンクより抜粋したものです。

参考

  • https://www.nic.ad.jp/ja/basics/terms/DNS-cp.html#:~:text=DNS%20cache%20poisoning(DNS%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9D%E3%82%A4%E3%82%BA%E3%83%8B%E3%83%B3%E3%82%B0)%20%E3%81%A8%E3%81%AF%E3%80%81%20DNS,%E5%BD%B1%E9%9F%BF%E3%82%92%E4%B8%8E%E3%81%88%E3%82%8B%E6%94%BB%E6%92%83%E3%81%A7%E3%81%99%E3%80%82
  • https://www.nic.ad.jp/ja/newsletter/No40/0800.html
  • https://jprs.jp/glossary/index.php?ID=0171
  • https://www.ntt.com/business/services/network/internet-connect/ocn-business/ocn/customer/set_up/poison.html
  • https://www.cloudflare.com/ja-jp/learning/dns/dns-cache-poisoning/
  • https://eset-info.canon-its.jp/malware_info/term/detail/00073.html
  • https://japan.zdnet.com/article/35162418/
  • https://www.ipa.go.jp/files/000017290.pdf
  • https://www.ipa.go.jp/security/vuln/DNS_security.html
  • https://ja.wikipedia.org/wiki/DNS%E3%82%B9%E3%83%97%E3%83%BC%E3%83%95%E3%82%A3%E3%83%B3%E3%82%B0

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です