DNS攻撃を理解する:脆弱性の特定と修正
Nihad Hassan
2022年10月26日
0 分で読めますドメインネームシステム(DNS)は、ドメイン名をIPアドレスに変換します。すべてのデバイスやWebサイトにはIPアドレスがあり、ほかのデバイスやWebサイト、オンラインサービスとの通信に使われています。IPアドレスは通常、000.000.000.000のような数字の羅列です。しかし、人がこうした数字を覚えるのは難しいため、ドメイン名を使います。Googleにアクセスするときは、ブラウザーのアドレスバーにドメイン名を入力するだけです。DNSサービスが、ユーザーの入力した「google.com」を、コンピューターが使う対応するIPアドレスに変換します。
DNSはインターネットインフラの基本的な構成要素です。あらゆる通信は、DNSによる名前解決から始まります。DNSが利用できなくなると、インターネット上のプログラムは機能しなくなります。
DNS攻撃とは、DNSインフラの安定性やセキュリティを標的とする攻撃です。多くの場合、DNSを利用できなくしたり、DNSが返す応答を傍受・改ざんしたりして、ユーザーを気付かないうちに悪意あるWebサイトへ誘導することを目的とします。DNSインフラには、権威DNSサーバーと再帰DNSサーバーの2つの構成要素があり、どちらも攻撃対象になります。
ここでは、よくあるDNS攻撃を取り上げ、被害を防ぐための対策を紹介します。
DNS攻撃の基礎知識
DNS攻撃にはいくつかの種類があり、それぞれ仕組みや影響が異なるため、適切な対策も異なります。
スプーフィング
DNSスプーフィングは、攻撃者が正規のDNSサーバーのレコードを改ざんし、ユーザーを本来のアクセス先ではなく偽のWebサイトに誘導する攻撃です。
偽のWebサイトにアクセスしたユーザーは、ログイン情報やクレジットカード情報などの機密情報を入力するよう促されます。攻撃者はこの手法で、被害者の機密データを盗んだり、ランサムウェアやキーロガーなどのマルウェアをデバイスに仕込んだりします。
攻撃者は、次の2つの方法でDNSスプーフィング攻撃を実行します。
標的のデバイスとDNSサーバー間の通信を傍受し、ユーザーのリクエストを悪意あるWebサイトに転送する
正規のDNSサーバーを直接攻撃し、悪意あるIPアドレスを返すよう強制する
この攻撃への対策は次のとおりです。
DNSサーバーのソフトウェアを定期的に更新し、パッチを適用する。
Webサイトに安全な接続を示す鍵マークがあるか確認する。このマークはブラウザーのアドレスバーの横に表示されます。鍵マークがない場合、攻撃者が悪意ある目的でWebサイトを偽装している可能性があります。
ドメインでドメインネームシステムセキュリティ拡張(DNSSEC)を有効にする。DNS情報にデジタル証明書の署名を付加し、セキュリティを強化できます。
キャッシュポイズニング
この攻撃では、攻撃者が偽のDNS情報をDNSキャッシュに注入し、誤った情報を返してユーザーを悪意あるWebサイトへ誘導します。たとえば、ユーザーがgoogle.comへのアクセスを要求しても、汚染されたDNSサーバーは、エクスプロイトキットやフィッシングページを含む可能性のある別のWebサイトのIPアドレスを返します。
サイバーセキュリティでは、DNSキャッシュポイズニングとスプーフィングは同じ意味で使われることがあります。しかし、機能と発生する順序は異なります。DNSポイズニングでは、攻撃者がDNSレコードを置き換え、ユーザーを悪意ある宛先へ誘導します。その後、DNSスプーフィングでは、汚染されたキャッシュを使ってユーザーを悪意あるWebサイトへ転送します。
DNSポイズニング攻撃を防ぐには、次の対策が有効です。
公開鍵暗号方式を使用するDNSSECを利用する。これにより、正規のDNSネームサーバーだけが正しいDNS情報でリクエストに応答することを保証できます。
DNSネームサーバーがICANNに登録されていない限り、ローカルDNSサーバーがインターネット経由のDNSクエリに応答しないようにする。
DoS/DDoS/フラッディング
DNSフラッディングとは、攻撃者が偽のDNSリクエストを大量に送り、DNSサーバーを過負荷状態にして正規のリクエストに応答できなくする攻撃です。DNSフラッド攻撃には、サービス拒否(DoS)フラッディングと分散型サービス拒否(DDoS)フラッディングの2種類があります。
DoSフラッド攻撃
DoSフラッド攻撃では、攻撃者は1台のコンピューターからリモートDNSサーバーに偽のトラフィックを大量に送ります。最新のDNSサーバーは高度な技術仕様を備えており、1台のデバイスでは停止させられないため、この手法は現在では効果がありません。
DDoS DNSフラッド攻撃
DDoS DNSフラッドは、攻撃者が多数のデバイスを使って1台のDNSサーバーを標的にする、最も効果的な攻撃手法です。標的サーバーのメモリやCPUリソースを消費させ、最終的にサーバーを停止させます。
サイバーセキュリティにおけるボットとは、マルウェアに感染し、攻撃者に制御されたノートパソコン、ワークステーション、IoTデバイスなどのコンピューティングデバイスを指します。こうしたボットの集合体はボットネットと呼ばれます。
攻撃者は、悪意あるスクリプトを実行する、数千台から数百万台もの侵害済みデバイスで構成されたボットネットをよく利用します。すべてのデバイスに同時に1台のサーバーへトラフィックを送信させ、DoS状態を引き起こします。
DNSフラッドは比較的新しい攻撃とされ、世界的なIoTデバイスの増加によって広く可能になりました。多くのIoTデバイスはセキュリティ設定が不十分で、攻撃者に制御されやすい状態にあります。
DDoSおよびDoSフラッド攻撃を防ぐには、次の対策が有効です。
DDoS緩和サービスを利用し、外部の攻撃者が偽のリクエストでDNSサーバーを過負荷状態にするのを防ぐ。
権威ネームサーバー専用のサーバーと、DNSリゾルバー専用のサーバーを別々に用意する。一方に障害が発生しても、もう一方が稼働し続けられます。
DNS専用のサーバーを使用する。中小規模の組織では、アプリケーションのホスティングとDNSサービスの実行など、1台のサーバーを複数の用途に使うことがよくあります。しかし、攻撃者がそのサーバー上のアプリケーションに侵入すると、DNS設定を侵害・改ざんされる可能性があります。
NXDomain
DNSフラッド攻撃と同様に、NXDomain攻撃では、存在しないドメイン名などの無効なレコードへのリクエストを大量に送り、標的のDNSサーバーを過負荷状態にします。攻撃者はDNSプロキシサーバーを使い、標的の権威DNSサーバーに膨大な数のDNSリクエストを自動送信します。権威サーバーは無効なリクエストの解決にリソースを消費し(サーバーのキャッシュを埋め)、正規のリクエストへの応答が遅くなり、最終的にはまったく応答しなくなります。
DNS NXDomainフラッド攻撃を防ぐには、次の対策が有効です。
DNSの監査を定期的に実施する。
不審なドメイン名やサーバーをブロックリストに登録する。
NXDomainリクエストを過剰に送信するクライアントのIPアドレスを一時的にブロックリストに登録する。
現在のDNSレコードのTTL(Time to Live)を延長し、外部DNSキャッシュに長期間保持されるようにする。これらのレコードは頻繁に更新する必要がありません。
増幅攻撃
これも、標的のDNSサーバーが正規のDNSクエリに応答できないようにするDDoS攻撃です。攻撃者はオープンDNSサーバーを悪用し、標的サーバーに複数の応答を送信します。
攻撃者は、標的のIPアドレスを送信元アドレスとして指定し、オープンDNSサーバーに多数のDNSリクエストを送信して攻撃を開始します。オープンDNSサーバーは、リクエスト元(この例では偽装された標的のIPアドレス)に応答を返します。DNS応答が大量に送られると、ネットワーク帯域幅が消費され、標的サーバーは正規のリクエストに応答できなくなり、最終的に停止します。
攻撃者は、特にIoTデバイスを含むボットネットをよく利用し、偽装したDNSリクエストを生成して、標的のサーバーや組織のネットワークを大量のDNS応答で過負荷状態にします。
この攻撃を防ぐには、次の対策が有効です。
すべてのネットワークデバイスで送信元IPアドレスの検証を徹底する。
DNS権威ネームサーバーが再帰サーバーとして機能しないようにする。
すべてのDNSサーバーで応答レート制限(RRL)を設定する。
オープンDNSリゾルバーが、信頼できる送信元からのクエリにのみ応答するよう設定する。
ハイジャック
この攻撃では、攻撃者がDNS応答を操作し、ユーザーを偽のWebサイトや悪意あるWebサイトへ誘導します。攻撃の手口は次のとおりです。
トロイの木馬などのマルウェアを被害者のコンピューターにインストールし、DNSクエリを誤って解決させて、ユーザーを悪意あるサイトに誘導する
標的のルーターを侵害してDNS設定を変更する。ルーターに接続するすべてのユーザーに影響します。
中間者攻撃のように、正規のDNSサーバーとユーザーデバイス間の通信を傍受し、DNS応答を操作してユーザーを悪意あるサイトに誘導する
DNSサーバーを直接標的にし、DNS設定を変更してユーザーを別のURLへ誘導する
この攻撃は悪意あるものですが、一部のインターネットサービスプロバイダー(ISP)もユーザーを別のWebサイトへ誘導するために同じ手法を使います。たとえば、ユーザーの閲覧履歴に基づく広告を表示するために利用するISPもあります。
リバインディング
この攻撃では、攻撃者が標的のルーターをマルウェアに感染させ、リモートから制御します。ユーザーのブラウザーで悪意あるJavaScriptコードを実行し、ルーターに感染させることから攻撃が始まります。複雑なパスワードでルーターを保護していなかったり、工場出荷時のデフォルト認証情報のままにしていたりする人は少なくありません。そのため、リバインディング攻撃に対して脆弱な状態になります。
リバインディング攻撃への対策として、まずルーターを強力なパスワードで保護しましょう。次の対策も有効です。
ルーターのデフォルトのユーザー名とパスワードを、推測されにくいものに変更する。
DNSサーバー、すべてのクライアントOS、インストール済みアプリケーションを最新の状態に保つ。
トンネリング
このDNS攻撃は、ユーザーのトラフィックを攻撃者のサーバーに転送します。ランサムウェアの攻撃者が、コマンド&コントロールセンター(C&C)との通信や標的デバイスからのデータ窃取に利用する典型的な手法です。
DNSトンネリングは、ファイアウォールなどのセキュリティツールによる検知を回避します。攻撃者は、検知を避けるため、標的ネットワークから盗んだデータを小さな単位に分け、一連のDNSクエリと応答として送信します。
DNSトンネリング攻撃は、次のように行われます。
攻撃者は、ドメイン名が割り当てられたサーバーを用意し、そのサーバー上でトンネリングマルウェアを実行する。
攻撃者はコンピューターをマルウェアに感染させる。感染したコンピューターは企業のファイアウォールの内側にあっても、DNSリゾルバーを利用できる。
これにより、DNSリゾルバーがリモートにある攻撃者のC&Cサーバーと通信できるようになる。
こうして、感染した各デバイスとリモートの攻撃者サーバーとの間に、被害者のデバイスからデータを窃取したり、ランサムウェアなどのマルウェアを標的デバイスに送り込んだりするための秘密の通信経路が作られます。
この攻撃を防ぐには、次の対策が有効です。
ネットワーク境界での次世代ファイアウォールや、ネットワーク検知・対応(NDR)などの高度なセキュリティソリューションを導入し、IT環境内のすべてのやり取りを監視する。これにより、APTやランサムウェアの攻撃者を検知し、攻撃者のサーバーとの通信を遮断できます。
組織のネットワーク内にあるすべてのデバイスが、疑わしいドメイン名をブロックする内部DNSサーバーにすべてのDNSクエリを送信するよう設定する。
ファントムドメイン
この攻撃では、攻撃者が多数のファントムドメインを設定し、標的のDNSサーバーに名前解決を要求します。これらのドメイン(多くの場合、大量のサブドメイン)は応答が非常に遅いか、まったく応答しません。しばらくすると、攻撃者のドメインからの応答を待つ標的DNSサーバーのキャッシュがいっぱいになり、最終的に応答できなくなります。
この攻撃を防ぐには、次の対策が有効です。
再帰DNSサーバーの数を増やす。
各DNSサーバーで、連続して行える再帰DNSリクエストの数を制限する。
まとめ
DNSサービスはインターネットインフラの重要な構成要素です。ユーザーのドメイン名を、ほかのサーバーが理解できるIPアドレスに変換する役割を担っています。しかし、セキュリティを考慮して設計されたものではありません。インターネットの普及とサイバー攻撃の増加に伴い、サイバー犯罪者はDNS攻撃への関心をますます高めています。
DNSサービスへの攻撃は、インターネット上のすべてのプログラムが正常に機能するのを妨げます。サイバー犯罪者はこのことを理解しており、悪意のある目的でDNSサービスを攻撃するさまざまな方法を編み出しています。
DNSサービスを攻撃する手法はいくつかあり、大きく次の2つのカテゴリに分類できます。
DNSサービスを利用できなくすることを目的とした攻撃
DNSレコードを操作し、何も知らないユーザーを悪意のあるサイトへ誘導することを目的とした攻撃
この記事で説明したように、DNS攻撃の種類ごとに、被害を軽減するための対策は異なります。ただし、一般的なDNS攻撃の防止策としては、DNSサーバーソフトウェアを最新の状態に保つこと、DNSサービスの提供に専用のDNSサーバーを使用すること、再帰DNSサーバーの数を増やすこと、そしてDDoS攻撃を軽減するために脆弱性を確認することが挙げられます。
キャプチャー・ザ・フラッグを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、キャプチャー・ザ・フラッグの課題の解き方を学びましょう。



