【DNS攻撃編】名前解決とサブドメイン管理の落とし穴|CTF思考フレームワーク #22
こんにちは、アンペンです!
前回は、ネットワーク偵察(Nmap)で攻撃者が地図を作る話をしました。
今回は、インターネットの『電話帳』にあたるDNSを狙う攻撃を見ていきます。キャッシュポイズニング・サブドメイン乗っ取り・DNSハイジャックの3つを、優しく整理していきましょう。

DNSってドメインをIPに変える仕組みでしょ?それが攻撃されたら何が困るの?

DNSが『電話帳』にあたるから、書き換えられると利用者全員が偽サイトに案内されてしまう。最初の入口を乗っ取られるイメージだよ。
前回の偵察に続いて、今回もネットワークの“土台”がテーマ。主役は、ふだん意識しないけれど、ネットを使うたびに必ずお世話になっている仕組み——DNSです。『名前を、住所(IPアドレス)に変える』案内係。ここが乗っ取られると、利用者は何も悪いことをしていないのに、丸ごと偽サイトへ案内されてしまう。今日は“電話帳の書き換え”にたとえて、その怖さと守りを見ていきます。
DNSが汚染されたり、廃止サービスを指す残骸レコードが放置されると、利用者は気づかないうちに攻撃者の用意した偽サイトへ送られてしまいます。守り方の基本はDNSSEC・リゾルバ最新化・CNAME監査の3点です。
この記事で分かること
- DNSの基本(リゾルバ・キャッシュ・権威サーバ)
- 3つの代表攻撃(キャッシュポイズニング・サブドメイン乗っ取り・DNSハイジャック)
- DNSSEC・残骸レコード監査の守り方
📖 はじめてのWebセキュリティ #22|DNS攻撃編
『電話帳』のDNSが乗っ取られたとき、利用者がどう誘導されるかと、守る側の運用を学びます。 シリーズ一覧を見る →
⚠️ 大事なお約束
この記事の確認は、CTF・公式ラボ・自分が管理するドメインだけで行ってください。他者のDNSへの書き換え試行や、本物のサブドメイン乗っ取り検証は不正アクセス等に該当する可能性があります。
DNSは『電話帳』― 名前を信用してIPに変える
DNS(Domain Name System)は、 example.com のような名前を 203.0.113.10 のようなIPアドレスに変換するインターネットの基盤です。利用者は名前を入力し、ブラウザはDNSに問い合わせて本物のIPに辿り着いていると信じています。
つまり、DNSが嘘の答えを返せば、利用者は気づかずに偽のサーバに接続してしまうのです。これがDNS攻撃の怖さの根っこです。
ここがDNS攻撃の本質です。私たちは“名前”は見ていても、“番地(IP)”は見ていない。だから、案内係が嘘の番地を教えても、気づきようがないんです。しかもURLバーには正しい example.com が表示されたまま。見た目は完全に本物なのに、つながっている先だけが偽物——これがDNS攻撃の不気味なところです。鍵マークやドメイン名を見ても、行き先のすり替えには気づけないことがある、と知っておきましょう。
まずDNSの流れをおさらい。あなたがブラウザに example.com と打つと、コンピュータは「その住所、何番地ですか?」とDNSに尋ねます。DNSは「203.0.113.10 ですよ」と番地(IP)を教えてくれて、ブラウザはそこへ接続する。私たちは名前しか見ていないので、返ってきた番地が本物かどうかは、まったく分かりません。この“見えないやりとり”を、私たちは毎回まるごと信用しているわけです。
図解:正しいDNS応答と汚染されたDNS応答

同じ名前への問い合わせでも、リゾルバが返す答えが本物か偽物かで、利用者の行き先が大きく変わります。

あなたが知っているお店に電話するとき、紙の電話帳の番号を信用しますよね。もし誰かが電話帳の番号だけをこっそり別の番号に書き換えていたら、あなたは別の場所に電話してしまいます。声がそっくりな相手だったら、しばらく気づきません。DNSの汚染も、まさにこの『電話帳の書き換え』に近い構造です。
ここで覚える用語:DNSキャッシュポイズニング
リゾルバ(問い合わせを取り次ぐサーバ)に対して、偽のDNS応答を信じ込ませる攻撃です。一度キャッシュされると、その後の問い合わせも偽の答えを返してしまうため、被害が広がりやすいのが特徴です。
キャッシュポイズニングが特にやっかいなのは、“一度の嘘が、大勢に効く”ところです。DNSは同じ質問を何度も受けるので、答えを一時的に覚えておきます(キャッシュ)。その覚えた答えに嘘を一度だけ刷り込めれば、あとはその案内係を使う利用者みんなが、まとめて偽の番地に案内されてしまう。Webキャッシュ汚染(#19)とそっくりな“一発で広く効く”構図が、ここでも顔を出します。
DNSを狙う代表的な3攻撃
DNSを狙う攻撃は、大きく3つ。『案内係に嘘を覚えさせる(キャッシュポイズニング)』『放置された名前を横取りする(サブドメイン乗っ取り)』『電話帳の大元を直接書き換える(DNSハイジャック)』。1つ目は“だます”、2つ目は“拾う”、3つ目は“奪う”。狙う場所は違っても、結果はどれも『利用者を偽の行き先へ』で同じです。
よくある攻撃パターン

- キャッシュポイズニング:リゾルバに偽応答を信じさせ、後続の利用者を偽IPに誘導する
- サブドメイン乗っ取り:廃止したクラウドサービスを指すCNAMEが残ったまま、攻撃者がそのサービスを再取得して正規サブドメインを乗っ取る
- DNSハイジャック:レジストラやDNS管理画面が乗っ取られ、レコードが直接書き換えられる
このうち最近特に被害事例が増えているのが、サブドメイン乗っ取りです。CDN・SaaS・PaaSの解約後にCNAMEを消し忘れて起きるケースが多く、運用ミスがそのまま脆弱性になります。
このサブドメイン乗っ取り、実は“高度なハッキング”というより“片付け忘れ”が原因なんです。たとえば、あるサービスを試すために test.example.com をそのサービスに向けておいた。後でサービスは解約したけれど、DNSの“向き先”だけ消し忘れた——。すると、その空き家になった向き先を攻撃者が再契約で乗っ取り、あなたの正規ドメインの一部を自分のものにしてしまう。派手な攻撃ではないぶん、どの組織でも起こりうる。だから「使い終わったら、向き先も消す」という地味な習慣が、そのまま強力な守りになります。
この回の練習は、自分が管理しているドメインの“電話帳”を棚卸しすることです。今どんなレコードが書かれているか、もう使っていない向き先が残っていないか。攻撃ではなく“お掃除”ですね。もちろん、他人のドメインを勝手に調べて乗っ取りを試すのは厳禁。自分の持ち物の電話帳を、すみずみまで見直してみましょう。
CTFでやってみよう:自分のドメインのDNSを点検する
自分のドメインのDNSレコードを棚卸ししよう
目的は他者を攻撃することではなく、「自分のドメインの電話帳が今どう書かれているか」を把握することです。
- 自分が管理するドメインの権威DNSにあるレコード(A・CNAME・TXTなど)を一覧化する
- CNAMEの参照先が今も生きているか(廃止SaaSを指していないか)を確認する
- 必要のないサブドメインや古い検証用レコードは削除する
- DNSSEC対応の状況を確認し、未対応なら導入を検討する
- 権威DNSやレジストラの管理画面に、強いパスワード・MFAが設定されているか確認する
守りの中心になる『DNSSEC』という言葉、難しそうですが、考え方はシンプルです。

そもそも、DNSの答えが本物かどうか、どうやって確かめるの?

そこを解決するのがDNSSECなんだ。ひとことで言うと、『DNSの答えに“電子的な署名”をつける仕組み』。お店の番地を教えるとき、本物の電話帳だけが押せる“割り印”を一緒に渡すイメージだよ。受け取った側はその割り印を確認して、「これは正規の答えだ」と検証できる。署名のない(または合わない)答えは、偽物として弾ける。名前を信用するしかなかった世界に、“本物の証明”を足してくれるのがDNSSECなんだ。
守る側なら、「DNSSEC・最新化・残骸監査」の3本柱
DNS攻撃の守りは、「応答の正しさを検証する仕組み(DNSSEC)」「リゾルバ実装を最新化」「残骸レコードの監査」の3点が柱になります。
- 権威DNS側でDNSSEC署名を有効化し、改ざんを検出可能にする
- リゾルバ(BIND・Unbound等)を最新版にし、ソースポートランダム化等の対策を確認する
- SaaS・CDN・PaaSの利用終了時にCNAMEを必ず削除し、定期的に残骸監査を実施する
- レジストラとDNS管理画面はMFAを必須にし、最低限の管理者だけにアクセスを絞る
- 重要ドメインにはレジストリロック等を適用し、第三者からの書き換えを防ぐ
- 監視ツールでDNSレコードの異常変更や不正な応答を継続的に検知する

DNSって『信用前提』の仕組みなんだね。だから守りも応答の正しさ検証が中心、と。

そう。あと、サブドメイン乗っ取りは『運用の事故』として最も起きやすいから、定期棚卸しの仕組み化が効くよ。
ここまでをひと言で言うと、DNSの守りは『答えに本物の証明をつけ、電話帳をこまめに片付ける』こと。DNSSECで応答の正しさを検証できるようにし、使わなくなった向き先は残さず消す。そして電話帳の大元(管理画面)は、MFAでしっかり施錠する。技術と運用、その両輪がそろってはじめてDNSは守られます。
まとめ:DNSは『電話帳』だから運用が命
- DNSは『名前→IP』の電話帳。書き換えられると利用者ごと偽サイトへ
- 代表攻撃はキャッシュポイズニング・サブドメイン乗っ取り・DNSハイジャック
- 守りはDNSSEC・リゾルバ最新化・残骸レコード監査
- レジストラ・DNS管理画面はMFA必須+最小権限+レジストリロック
今日の持ち帰りは『見えない案内係を、こまめに点検する』です。DNSはふだん完全に裏方なので、つい“あって当たり前”で放置しがち。でも、ここを乗っ取られると入口ごと持っていかれます。だからこそ、自分のドメインの電話帳を定期的に見直し、古い向き先を片付ける——その地道さが、いちばん効く守りになります。
次回は、通信経路に割り込んで盗み聞きや改ざんを行う中間者攻撃(MITM)を扱います。ARPスプーフィング・SSLストリッピングと、その守り方を見ていきましょう。
