DNSを狙う攻撃とDoS攻撃
DNSキャッシュポイズニングで誰が被害を受けるかを判断でき、対策を選べるようになる。あわせて、DNSリフレクタ攻撃・DNSウォータートーチャー攻撃・ドメイン名ハイジャック・EDoS攻撃を用語と標的で区別できるようになる。
DNSはインターネットの住所録なので、ここが壊されると正しいURLを打っても偽サイトに連れて行かれます。試験では「誰が被害者か」「標的はどこか」を問う、暗記より理屈で解く問題がよく出ます。
このレッスンで稽古する(用語チェック・過去問)結論:DNSの攻撃は「書き換える攻撃」と「止める攻撃」に分ける
DNSを狙う攻撃は大きく2種類です。偽の住所を覚えさせて利用者を偽サイトへ誘導する攻撃(キャッシュポイズニング、ドメイン名ハイジャック)と、サーバを過負荷にしてサービスを止める攻撃(DNSリフレクタ攻撃、DNSウォータートーチャー攻撃)です。
問題文を読んだら、まず「誘導されるのか」「止まるのか」で選択肢を絞ってください。誘導系ならどのサーバの情報が書き換わったか、停止系なら最後に負荷が集まるのはどこかを考えると答えに着きます。
前提:DNSには2種類のサーバがある
DNS(Domain Name System)は、www.example.co.jp のような名前をIPアドレスに変換する仕組みです。この変換を名前解決といいます。
登場するサーバは2種類です。
| サーバ | 役割 | たとえ |
|---|---|---|
| DNSキャッシュサーバ(フルサービスリゾルバ) | 社内のPCから問合せを受け、代わりに調べて答える。調べた結果を一定時間キャッシュ(メモ)しておく | 社内の受付係。一度調べた電話番号を手元のメモ帳に書いておく |
| 権威DNSサーバ(コンテンツサーバ) | 自分のドメインの正しい情報を持っている本家 | 各会社が自分で出している公式の電話帳 |
キャッシュサーバがPCに代わって権威DNSサーバをたどって調べることを再帰的な問合せといいます。2回目からはメモ(キャッシュ)を見て答えるので速くなります。
DNSキャッシュポイズニング:受付係のメモ帳を書き換える
DNSキャッシュポイズニングは、DNSキャッシュサーバのキャッシュに偽の対応情報(名前→攻撃者のIPアドレス)を注入する攻撃です。それ以降、そのキャッシュサーバに問合せた利用者は、正しい名前を入力しても偽サーバへ誘導されます。ポイズニングは「毒を盛る」という意味です。
影響範囲の考え方(最頻出)
- 被害を受けるのは汚染されたキャッシュサーバを使っている利用者だけ
- そのうえで、汚染された名前(FQDN)を引いたときだけ偽サーバへ行く
- 書き換えられた名前の「持ち主」の会社の従業員は、別のキャッシュサーバを使っていれば影響なし
受付係のたとえでいうと、B社の受付係のメモ帳に「A社の電話番号=詐欺師の番号」と書き込まれた状態です。被害に遭うのはB社の受付係に頼んでA社に電話する人です。A社の社員は自社の受付係に聞くので被害に遭いません。
flowchart LR
X["攻撃者"] -->|"偽の応答を注入"| C["B社 DNSキャッシュサーバ"]
U["B社従業員"] -->|"A社WebのFQDNを問合せ"| C
C -->|"偽のIP(サーバX)を回答"| U
U -->|"誤って接続"| S["攻撃者のサーバX"]
A["A社従業員"] -->|"自社のキャッシュサーバを使う"| OK["正しいA社Webサーバ"]
直接起きることは「利用者が本来と違うサーバに誘導される」ことです。ディスク上の設定が書き換わる、ワームが常駐する、メールの宛先が書き換わる、といった現象はキャッシュポイズニングの直接の結果ではありません。
キャッシュポイズニングの対策
攻撃者は、キャッシュサーバが権威DNSサーバに問い合わせた瞬間を狙い、本物より先に偽の応答を届けます。そのため対策は**「外から問合せさせない」と「偽の応答を当てにくくする」**の2本立てです。
| 対策 | 理由 |
|---|---|
| 再帰的な問合せを内部ネットワークからだけに限定する | 外部の攻撃者がキャッシュサーバに問合せを起こさせ、偽応答を差し込むきっかけを作れなくなる |
| 送信元ポート番号をランダム化する | 偽応答はポート番号が一致しないと受け付けられない。固定だと当てやすい |
| トランザクションIDをランダム化する | 問合せごとの識別番号。固定だと偽応答を作りやすい |
| キャッシュサーバとコンテンツサーバを分ける | 外部に公開するサーバにキャッシュを持たせない |
| DNSSECを使う | 応答に電子署名を付け、改ざんされていないか検証できる |
「固定する」「外部からも受け付ける」「兼用する」はすべて逆効果です。選択肢に出たら即外してください。
DNSに関わる攻撃の比較表
試験では、これらの名前と内容を入れ替えた選択肢がよく並びます。
| 攻撃 | やること | 結果 | 書き換え/停止 |
|---|---|---|---|
| DNSキャッシュポイズニング | キャッシュサーバに偽情報を注入 | そのキャッシュサーバの利用者が偽サーバへ誘導 | 書き換え |
| ドメイン名ハイジャック | 権威DNSサーバやレジストラ(ドメイン登録の窓口)の登録情報を不正に書き換える | そのドメインに来る人全員が攻撃者のサーバへ | 書き換え |
| DNSリフレクタ攻撃 | 送信元を標的のIPに偽装してDNSに問合せ、大きな応答を標的へ送らせる | 詐称されたIPの持ち主がパンク | 停止(DDoS) |
| DNSウォータートーチャー攻撃 | 存在しないランダムなサブドメインを大量に問い合わせる | そのドメインの権威DNSサーバがパンク | 停止(DDoS) |
| ゾーン転送の悪用 | DNSサーバが持つゾーン情報(ドメイン内の一覧)をまとめて転送させる | 内部情報が漏れる | 情報収集 |
なお、セッションハイジャックは通信の途中を乗っ取る攻撃で、ドメイン名ハイジャックとは別物です。ディレクトリトラバーサルはURLに ../ などを入れて禁止されたファイルを読む攻撃です。
DoS攻撃の仲間:リフレクタ、ウォータートーチャー、EDoS
DoS攻撃(Denial of Service)は、大量の処理を送り付けてサービスを使えなくする攻撃です。多数の機器から一斉に行うものをDDoS攻撃(Distributed DoS)といいます。
DNSリフレクタ攻撃はUDPの性質を悪用します。UDPは接続確認をせずに送る通信方式なので、送信元IPアドレスを偽装しやすいのです。攻撃者は小さな問合せをオープンリゾルバ(誰の問合せにも答えてしまうDNSサーバ)に送り、何倍にも大きくなった応答を標的に跳ね返らせます(増幅)。
DNSウォータートーチャー攻撃(ランダムサブドメイン攻撃)では、abc123.a-sha.example のような毎回違う名前を問い合わせます。キャッシュには載っていないので、キャッシュサーバは毎回A社の権威DNSサーバに聞きに行き、最終的に権威DNSサーバが過負荷になります。送信元を詐称していてもリフレクタ攻撃とは違い、標的は権威DNSサーバです。
EDoS攻撃(Economic Denial of Service)は、従量課金のクラウドでリソースを大量に消費させ、利用者に高額な請求という経済的損失を与える攻撃です。サービスは自動で増強されて止まらなくても、お金の面で事業を続けられなくするのが狙いです。
試験での問われ方
- 影響範囲の問題:「名前の持ち主の会社の従業員」と「汚染されたキャッシュサーバを使う会社の従業員」を入れ替えた4択になります。誰のキャッシュサーバが汚染されたかだけを見てください。
- 定義の問題:情報収集(バージョン情報の入手)、DNSリフレクタ、ゾーン転送が、キャッシュポイズニングの誤答として並びます。キーワードは**「キャッシュ」「偽の情報を注入」「誘導」**です。
- 対策の問題:「ポートを固定」「IDを固定」「外部からの再帰問合せを許可」は全部逆です。正解は内部限定・ランダム化です。
- 標的の問題:送信元詐称があると、リフレクタ攻撃と考えて「詐称されたIPの利用者」を選びたくなります。ランダムなサブドメインとあれば権威DNSサーバが標的です。
- UDPを悪用したDDoSと聞かれたら、SQLインジェクションなどのWeb攻撃ではなくDNSリフレクタ攻撃を選びます。
汚染されたキャッシュで誰が誘導されるか
ア A 社 Web サーバにアクセスしようとする A 社従業員
イ A 社 Web サーバにアクセスしようとする B 社従業員
ウ B 社 Web サーバにアクセスしようとする A 社従業員
エ B 社 Web サーバにアクセスしようとする B 社従業員
解き方と答えを見る
- 汚染されたサーバを特定する:偽情報が記憶されたのは「B社 DNSキャッシュサーバ」。
- そのサーバを使う利用者を特定する:各社の従業員は自社のキャッシュサーバを使うので、使っているのはB社従業員だけ。A社従業員はA社のキャッシュサーバを使うので影響を受けない → ア・ウは外れる。
- 汚染された名前を特定する:書き換えられたのは「A社WebサーバのFQDN」の対応情報。B社Webサーバの名前は正しいまま → エは外れる。
- 2つの条件を合わせる:B社のキャッシュサーバを使い、かつA社Webサーバの名前を引く人=A社WebサーバにアクセスしようとするB社従業員。
答え:イ(A社 Web サーバにアクセスしようとする B 社従業員)
ランダムなサブドメインの大量問合せで止まるのはどこか
ア A 社ドメインの権威 DNS サーバ
イ A 社内の利用者 PC
ウ 攻撃者が詐称した送信元 IP アドレスに該当する利用者 PC
エ 第三者の DNS キャッシュサーバ
出典:基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問27
解き方と答えを見る
- (1)を読む:A社ドメイン配下に、存在しないランダムなサブドメイン名を大量に作る。
- キャッシュの動きを考える:毎回違う名前なので、第三者のDNSキャッシュサーバのキャッシュには載っていない。そのため、キャッシュサーバは毎回A社ドメインの権威DNSサーバに再帰的に問い合わせる。
- 負荷が集まる場所を考える:多数のキャッシュサーバに分散して送っても、問合せは最終的にすべてA社の権威DNSサーバに集まる。
- (3)の送信元詐称を確認する:詐称は攻撃者の身元を隠すためのもの。応答はランダムなIPにばらけるだけで、特定の利用者PCを狙った増幅(リフレクタ攻撃)ではない → ウは外れる。
答え:ア(A 社ドメインの権威 DNS サーバ)
要点(試験直前に読む)
- キャッシュポイズニングで誘導されるのは「汚染されたキャッシュサーバを使う利用者が、汚染された名前を引いたとき」だけ。名前の持ち主の会社の従業員は無関係。
- キャッシュポイズニングの直接の被害は「本来と異なるサーバへの誘導」。ファイル書換え・ワーム常駐・メール宛先書換えは違う。
- 対策は、再帰的な問合せを内部ネットワークだけに限定し、送信元ポートとトランザクションIDをランダム化する。固定するのは逆効果。
- ランダムなサブドメインの大量問合せ=ウォータートーチャー攻撃で、標的は権威DNSサーバ。送信元偽装で増幅させて相手に返す=リフレクタ攻撃(UDPを悪用したDDoS)。
- ドメイン名ハイジャックは権威DNSサーバやレジストラの登録情報の書換え。EDoSは従量課金クラウドで利用者に経済的損失を与える攻撃。
ひっかけ
- 影響範囲の問題で「A社の名前が汚染されたからA社従業員が被害」と考えさせる → 汚染されたのが誰のキャッシュサーバかだけを見る。
- 対策の選択肢で「ポート番号を固定」「トランザクションIDを固定」「外部からの再帰問合せにも応答」を並べる → 固定・外部許可はすべて攻撃を助ける側。
- ウォータートーチャー攻撃の問題で、送信元詐称の記述から「詐称されたIPの利用者PC」を選ばせる → 「ランダムなサブドメイン」があれば権威DNSサーバが標的。
- ドメイン名ハイジャックの選択肢にセッションハイジャック・DoS・ディレクトリトラバーサルの説明を混ぜる → キーワードは「権威DNSサーバ(登録情報)の書換え」。
- EDoSの選択肢に情報窃取・課金回避・パスワード解析を混ぜる → EDoSは「従量課金」「リソース大量消費」「利用者の経済的損失」の3点セット。
用語(15)
ドメイン名とIPアドレスを対応付け、名前からIPアドレスを調べられるようにする仕組み。
ホスト名からトップレベルドメインまでを省略せずに書いた完全なドメイン名(例:www.example.co.jp)。
⚠ URLと混同しやすい。URLは https:// やパスを含む住所全体で、FQDNはその中のサーバ名の部分。
利用者の代わりに名前解決を行い、その結果を一定時間キャッシュしておくDNSサーバ。
⚠ 権威DNSサーバ。キャッシュサーバは調べて覚える受付係、権威DNSサーバは正しい情報を持つ本家。
自分が管理するドメインの正式な名前とIPアドレスの対応情報を持ち、問合せに答えるDNSサーバ。
⚠ DNSキャッシュサーバ。ウォータートーチャー攻撃とドメイン名ハイジャックで狙われるのは権威DNSサーバ側。
キャッシュサーバがクライアントに代わり、権威DNSサーバを順にたどって最終的な答えまで調べる問合せ。
DNSキャッシュサーバに偽の対応情報を記憶させ、そのサーバの利用者を偽サーバへ誘導する攻撃。
⚠ ドメイン名ハイジャック。ポイズニングはキャッシュサーバの一時的なメモの汚染で、ハイジャックは権威DNSやレジストラの登録情報そのものの書換え。
DNSの問合せと応答を対応させる識別番号。ランダムにすると偽の応答を作りにくくなる。
DNSの応答に電子署名を付け、受け取った側が改ざんされていないことを検証できるようにする拡張仕様。
権威DNSサーバやレジストラに登録されたドメイン情報を不正に書き換え、通信を攻撃者のサーバへ向ける攻撃。
⚠ セッションハイジャック。こちらはPCとサーバの通信の途中を乗っ取る攻撃で、DNSの登録情報は書き換えない。
サーバやネットワークに過剰な負荷をかけ、サービスを使えない状態にする攻撃。
⚠ DDoS攻撃。DoSは攻撃元が1か所、DDoSは多数の機器から分散して行う。
多数の機器から一斉に大量の通信を送り付け、標的のサービスを停止させる攻撃。
送信元を標的のIPに偽装したDNS問合せを送り、増幅された応答を標的に集中させる、UDPを悪用したDDoS攻撃。
⚠ DNSウォータートーチャー攻撃。リフレクタの標的は送信元を詐称された相手、ウォータートーチャーの標的は権威DNSサーバ。
外部の誰からの再帰的な問合せにも応答してしまうDNSキャッシュサーバ。リフレクタ攻撃の踏み台になる。
ランダムなサブドメイン名の問合せを大量に送り、キャッシュを素通りさせて権威DNSサーバを過負荷にする攻撃。
⚠ DNSリフレクタ攻撃。問題文に「ランダムなサブドメイン」があればウォータートーチャー攻撃で、標的は権威DNSサーバ。
従量課金のクラウドでリソースを大量に消費させ、利用者に経済的な損失を与える攻撃。
⚠ 通常のDoS攻撃。DoSはサービス停止が目的、EDoSは請求額を膨らませて経済的に事業を続けられなくするのが目的。
このレッスンの過去問
- DNSキャッシュポイズニングの影響範囲令和元年度 秋期 基本情報技術者試験 午前 問35
- DNSキャッシュポイズニング対策(再帰問合せの許可範囲限定)基本情報技術者試験 科目A免除 修了試験 20230723 実施分 問32
- DNSウォータートーチャー攻撃(ランダムサブドメイン攻撃)の標的基本情報技術者試験 科目A免除 修了試験 20260726 実施分 問27
- ドメイン名ハイジャックの手口基本情報技術者試験 科目A免除 修了試験 20250126 実施分 問27
- DNSリフレクタ攻撃の定義(UDPを悪用したDDoS)基本情報技術者試験 科目A免除 修了試験 20241208 実施分 問27
- EDoS攻撃の定義基本情報技術者試験 科目A免除 修了試験 20230122 実施分 問37