DNSポイズニング(DNSスプーフィング)攻撃とは:定義、手法、対策について
DNSポイズニング(DNSスプーフィング)攻撃とは:定義、手法、対策について
DNSポイズニング(DNSスプーフィング)攻撃とは:定義、手法、対策について
DNSポイズニング攻撃では、ハッカーは有効なWebサイトのアドレスを偽のアドレスに置き換えます。これによって、パスワードや口座番号などの貴重な情報を窃取したり、なりすましサイトのロードを拒否したりできるようになります。
Webを閲覧している人が、DNSスプーフィング攻撃が起こっていることに気付かないこともあります。訪問したサイトは、外観に問題なく、機能までも正常に思われ、安全であるように認識できます。
あるいは、よく訪問するサイトでロードに問題があることに気づく人がいるかもしれません。その場合には何度か再試行するかもしれませんが、うまく機能しないサイトをホストする企業に対して怒りを感じる可能性があります。
DNSポイズニング攻撃の防止は、DNSスプーフィングをブロックすることから始まります。ここでは、DNSポイズニング攻撃とは何か、それらに対する防止方法を紹介します。
DNSポイズニングとは?
DNSポイズニングとは、Domain Name System(DNS)の既知の脆弱性を悪用するハッキングする手法です。これによって、ハッカーは特定のサイトへのトラフィックを偽バージョンへと再ルーティングできます。この汚染は、DNSの仕組みが原因となって拡散する可能性があります。
中国政府はDNSポイズニングを使用して、当局が好ましくないとみなすコンテンツを含むサイトへのアクセスをブロックしています。国内のユーザーからは、正しいアドレス(https://www.facebook.comなど)を使用しているように見えるかもしれません。しかし、スプーフィングのために、このアドレスを入力すると別のサーバーにアクセスすることになります。そのサーバーはまったく異なるコンテンツをロードします。
2014年、中国のスプーフィングが国外に広がりました。ある時点で、DNSポイズニングであるこの問題は全世界のインターネットユーザーの約7人に1人に影響を与えたとも報道されています。FacebookやTwitterを含め、訪問したいサイトがロードされなくなったのです。
DNSの仕組み
サイトの開発では短くユーザーフレンドリーなWebアドレスを使用することが、Web開発者に推奨されています。そうすることで、検索クエリのパフォーマンスが向上します。また、そのようなアドレスは、ユーザーがページをクリックする前に、含まれるページを把握する上で役立ちます。しかし、他のコンピューターは人間が使うアドレスを理解しません。そこでDNSが役立ちます。
ユーザーがブラウザにアドレスを入力するときには、以下のプロセスが行われます。
- DNSサーバーに接続する。ユーザーのコンピューターは、詳細情報を得るためにDNSサーバーに問い合わせる必要があります。
- DNSが数字のアドレスを検索する。コンピューターが理解できるのは、数字とドットのみで構成されたサーバーアドレスだけです。このサイトを以前に検索したことがない場合、コンピューターは別のサーバーに助けを求めます。
- DNSリゾルバがクエリを完了する。人間向けに最適化されたアドレスが、数値バージョンに変換されます。
- ユーザーがサイトに誘導される。正しい数字のアドレスを使用して、目的のWebサイトをホストする適切なサーバーに向かいます。
- データが格納される。インターネットサーバーは、人間用のアドレスから数値バージョンへの変換を格納するDNSサーバーを使用します。そこに検索結果が格納されます。
このプロセスは数秒で処理され、遅延に気付かないかもしれません。しかし、背後では、コンピューターが他のコンピューターに問い合わせ、次に向かうべき場所と何が起こるべきかを理解しています。
DNSシステムは1983年に開発されたました。しかし、当時のインターネットに含まれていたのは、現在に比べてはるかに少ないWebサイトとサーバーでした。開発者は、システムを改ざんしたりユーザーを騙したりする人が現れるなどとは想像すらしなかったため、システムにはセキュリティ対策が組み込まれませんでした。
DNSキャッシュポイズニングが起こるとどうなるか?
DNSキャッシュポイズニングが起こると、ユーザーが特定のサイトへのアクセスを要求するときに、サーバーはハッカーの応答を拾います。その改ざんされたデータが格納され、DNSキャッシュポイズニングが完了します。
そのために、ハッカーは以下のことを実行します。
- サーバーになりすます。ユーザーのDNSサーバーが変換のためのクエリを送信すると、ハッカーは正しいサーバーよりも前に、誤った答えを使用して非常に迅速に応答します。
- サーバーを拘束する。2008年の研究で、ハッカーがキャッシュサーバーに何千ものクエリを送信できることが明らかになりました。続いて、ハッカーは何千もの誤った応答を送信し、次第にルートドメインとサイト全体を制御できるようになります。
- 開いているポートを利用する。2020年の研究で、ハッカーがDNSリゾルバポートに何千ものクエリを送信できることが明らかになりました。このDNSキャッシュポイズニング攻撃により、開いているポートを徐々に特定していくことが可能です。その後の攻撃では、そのポートに焦点を絞ります。
DNSポイズニング攻撃は、システムが安全でないために発生します。コンピューターは、サーバーとのやりとりにUser Datagram Protocol(UDP)を使用します。これにより、迅速で効率的なコミュニケーションが可能になります。しかし、セキュリティ対策は組み込まれません。コンピューターは、通信相手のサーバーのアイデンティティを確認せず、返されるデータを検証しません。
この環境では、改ざんは比較的簡単です。アイデンティティを証明する必要はなく、通信相手のサーバーの所有者が誰かは問われません。このような場合、改ざんされた情報を取得しても気が付きません。
DNSスプーフィング対策
サイトが停止しても、その問題について訪問者がハッカーを責めることはありません。代わりに、ネットワーク管理者と企業が責められることになります。キャッシュポイズニングを防ぐことは重要ですが、それは容易ではありません。
以下のDNSスプーフィング対策が可能です。
- 独自のDNSサーバーを制御する。各クエリの結果として格納された情報を所有し、定期的に品質と信頼性をチェックできます。
- クエリを制限する。開いているポートでDNS要求を拒否します。データを汚染する可能性のあるクエリを受け取ることがなくなり、乗っ取られる可能性が低くなります。
- ソフトウェアを調べる。一部のDNSソフトウェアには保護機能が組み込まれています。開発者と話し合い、コストに見合う価値を得られることを確認してください。
当局も解決に取り組んでいます。Domain Name System Security Extensions(DNSSEC)がICANNによって開発され、これを実装することで検証が可能になります。これにより、通信相手が本物であり、受け入れるデータが信頼できることを確認できます。
完全な保護を提供するためには、DNSSECが広範にデプロイされる必要があります。自社が認証を求めても、他の組織が同様に行動しなければ、要求されるサイトを提供することはできません。当局は、今後このテクノロジーを使用する企業が増えることを期待しています。
Oktaの支援
DNSサーバーを適切に構成して保護するには、時間、人材、地道な努力が必要です。これらのタスクに取り組む時間や専門スキルが不足している場合には、Oktaの支援を利用できます。
Oktaの実績ある手法により、サイトの稼働を維持してデータを保護できます。DNSポイズニング(DNSスプーフィング)対策でOktaを役立てる方法について、お問い合わせください。
参考文献
DNS Poisoning Suspected Cause of Huge Internet Outage in China. (January 2014). eWeek.
URLs. MOZ.
Brief History of the Domain Name. Harvard.
How DNS Cache Poisoning Works. (October 2008). Networkworld.
DNS Cache Poisoning, the Internet Attack From 2008, Is Back From the Dead. (November 2020). ARS Technica.