この記事は、セキュリティ資格学習のために、AI(Claude)と共同で作成したコンテンツです。
※間違った解釈がある可能性があります。
この記事の目的
セキュリティの専門用語は、カタカナや略語が多く、初学者にとって非常に取っつきにくいものです。
そこで、専門家じゃなくてもわかるようにストーリー風に構成してみました。
📍 結城の計画
深夜2時。結城は自室のモニターを睨みつけていた。
「慎也…お砂糖(里見)…あなたたちがメタCで楽しそうにしているのが許せない」
結城の手元には、メタCのネットワーク構成図が表示されている。
「調べたら、慎也はメタC社から企業向けワールドの制作を業務委託されてるのね。ということは、開発者用VPNに接続している…」
結城の唇が不気味に歪んだ。
「VPN接続中は、メタC社内のDNSサーバーを使うことになる。そのDNSを乗っ取れば、山本を偽のサイトに誘導できる」
「DNSキャッシュポイズニング…インフラエンジニア時代に学んだ技術。山本には理解できないだろうね」
キーボードを叩く音だけが、静かな部屋に響いた。
💑 平和なひととき
その頃、慎也と里見は、メタCの二人だけのプライベートワールドで、夜景を眺めていた。
慎也は業務委託で企業向けワールドを制作中で、メタC社の開発者用VPNに接続している。
「今日もお疲れ様、お砂糖。最近、結城からの接触が減ったね」
慎也が安堵の表情で言った。
「うん…でも油断は禁物よ。静かなときほど、何か企んでいる可能性があるわ」
里見が心配そうに答える。
「お砂糖は心配性だなぁ。でも、そういうところも好きだよ」
「もう…慎也ったら。でもね、セキュリティって『心配性』が大事なの。楽観視した瞬間に攻撃されるものよ」
二人は手を繋ぎながら、キラキラと輝く夜景を眺めた。
「ねぇ、里見。さっき『DNS』って言ってたけど、それって何?」
「あ、説明するね。DNSはインターネットの基本中の基本なんだけど、実はすごく狙われやすいの。特に、慎也が今使ってるメタC社のVPN接続中は、会社のDNSサーバーを使ってるから、そこが狙われる可能性もあるわ」
📖 里見の解説:DNSの仕組み
DNS(Domain Name System:ディーエヌエス)
「DNSは、インターネットの住所録みたいなものよ」
里見が分かりやすく説明を始めた。
DNSの役割:
- 人間が覚えやすい名前(ドメイン名)を、コンピュータが理解できる数字(IPアドレス)に変換する
- 例:「www.meta-c.com」→「192.168.1.100」
身近な例え:
「友達に電話するとき、電話番号を覚えてる?」
「いや、名前で検索してかけるよ」
「そう!スマホの連絡先アプリと同じ。『山本慎也』という名前から電話番号を探してくれるでしょ?DNSも同じで、『www.meta-c.com』という名前から『192.168.1.100』というIPアドレスを探してくれるの」
FQDN(Fully Qualified Domain Name:完全修飾ドメイン名)
「FQDNは、住所のフルネームね」
FQDNの構造:
www.meta-c.com. ↑ ↑ ↑ ↑ ホスト名 ドメイン名 最後のドット
身近な例え:
「『東京都渋谷区○○1-2-3 メタCビル 5階』みたいに、一番詳しい住所がFQDN。『メタCビル』だけだと、どこのメタCビルか分からないでしょ?」
「なるほど!完全な住所ってことか」
hostsファイル
「hostsファイルは、パソコン内のメモ帳みたいなもの」
hostsファイルの役割:
- DNSサーバーに問い合わせる前に、まずhostsファイルを確認
- 「この名前はこのIPアドレス」と手書きで記録できる
- DNSより優先される
身近な例え:
「よく電話する人の番号を、スマホの連絡先に登録する前に、手帳にメモしておくでしょ?
hostsファイルは、そのメモ帳。DNSという大きな電話帳を見る前に、まず自分のメモ帳を確認するの」
危険性:
「でもね、このhostsファイルを勝手に書き換えられると…」
「え、どうなるの?」
「例えば、『www.meta-c.com = 192.168.1.100(本物)』を『www.meta-c.com = 10.0.0.99(偽物)』に書き換えられると、偽サイトに飛ばされちゃう」
「怖い…!」
DNSの問い合わせの流れ
「DNSがどう動くか、図で見てみよう」
【DNSの名前解決の流れ】 1. あなた:「www.meta-c.comのIPアドレスは?」 ↓ 2. リゾルバ(DNSキャッシュサーバー):「キャッシュにあるかな?…ないから上に聞こう」 ↓ 3. ルートDNSサーバー:「.comのことは、.com担当に聞いて」 ↓ 4. .com DNSサーバー:「meta-c.comのことは、meta-c.com担当に聞いて」 ↓ 5. meta-c.com DNSサーバー:「www.meta-c.comは192.168.1.100だよ!」 ↓ 6. リゾルバ:「192.168.1.100です!(キャッシュに保存しとこ)」 ↓ 7. あなた:「ありがとう!192.168.1.100にアクセスします」
身近な例え:
「学校で『山本慎也くん、どこ?』って探すとき、まず友達(リゾルバ)に聞くでしょ?
友達が知らなかったら、先生(ルートDNS)に聞いて、先生が『3年A組の担任に聞いて』って言って、担任の先生(権威DNSサーバー)が『あそこにいるよ』って教えてくれる。そんな感じ」
リゾルバ(DNSキャッシュサーバー)
「リゾルバは、代わりに調べてくれる秘書さんね」
リゾルバの役割:
- ユーザーの代わりにDNSサーバーに問い合わせ
- 一度調べた結果をキャッシュ(一時保存)する
- 次回同じ質問があったら、キャッシュから即答
身近な例え:
「会社の秘書さんが、『この人の連絡先は?』って聞かれたとき、一度調べたらメモしておいてくれるでしょ?
次に同じ人の連絡先を聞かれたら、メモから即答。それがリゾルバのキャッシュ機能」
DNSの4つのレコード
「DNSには、いろんな種類の『電話帳の書き方』があるの」
1. Aレコード(Address Record:アドレスレコード)
役割:ドメイン名をIPv4アドレスに変換
www.meta-c.com → 192.168.1.100
身近な例え:
「『山本慎也』→『090-1234-5678』みたいに、名前から電話番号を引く、一番基本の登録方法」
2. CNAMEレコード(Canonical Name:別名レコード)
役割:別名(エイリアス)を設定
blog.meta-c.com → www.meta-c.com → 192.168.1.100
身近な例え:
「『慎也』『しんちゃん』『やまちゃん』、全部同じ人でしょ?CNAMEは『別名も同じ人だよ』って登録する方法。blog.meta-c.comもwww.meta-c.comも、同じサーバーを指すの」
3. PTRレコード(Pointer Record:逆引きレコード)
役割:IPアドレスからドメイン名に逆変換
192.168.1.100 → www.meta-c.com
身近な例え:
「普通は『名前→電話番号』だけど、PTRは『電話番号→名前』の逆引き。知らない番号から電話がかかってきたとき、『この番号、誰?』って調べるでしょ?それがPTRレコード」
用途:
- メールサーバーの正当性確認(スパム対策)
- ログ解析(IPアドレスから接続元を特定)
4. MXレコード(Mail eXchange:メール交換レコード)
役割:メールサーバーの宛先を指定
meta-c.com のメールは mail.meta-c.com (192.168.1.200) へ
身近な例え:
「会社宛ての郵便物は、『総務部に届けてください』って書いてあるでしょ?
MXレコードは『このドメイン宛のメールは、こっちのサーバーに送ってね』という指示書」
優先度:
- MXレコードには優先度(プライオリティ)がある
- 数字が小さいほど優先度が高い
- メインサーバーがダウンしたら、予備サーバーに送る
meta-c.com MX 10 mail1.meta-c.com (優先) meta-c.com MX 20 mail2.meta-c.com (予備)
WHOIS(フーイズ)
「WHOISは、ドメインの登録情報を調べるデータベース」
WHOISで分かること:
- ドメインの所有者
- 登録日・更新日・有効期限
- ネームサーバー(DNSサーバー)
- 管理者の連絡先(最近は代理公開が多い)
身近な例え:
「不動産の登記簿みたいなもの。『この土地(ドメイン)の持ち主は誰?いつ買った?』って情報が公開されているの」
使い方:
whois meta-c.com
セキュリティでの用途:
- 怪しいサイトの運営者を調査
- フィッシングサイトのドメイン登録日確認(新しいドメインは怪しい)
- 攻撃者の情報収集
「なるほど…DNSって奥が深いんだね」
「そう。そして、このDNSを悪用する攻撃が『DNSキャッシュポイズニング』なの」
⚠️ 結城の攻撃開始
その時、メタCのシステムに異変が起きていた。
結城は、メタC社内のDNSサーバーに偽の応答を送り込んでいた。
DNSキャッシュポイズニング(DNS Cache Poisoning):
- DNSサーバーのキャッシュに偽の情報を混入させる攻撃
- 正規のDNS応答より早く、偽の応答を送り込む
- ユーザーが正しいドメイン名を入力しても、偽サイトに誘導される
攻撃の流れ:
1. 山本がメタC社の開発者用VPNに接続中 → 自動的にメタC社内のDNSサーバー(192.168.1.53)を使用 ↓ 2. 山本が「www.meta-c.com」にアクセスしようとする ↓ 3. VPN経由でメタC社のDNSサーバーに問い合わせ ↓ 4. 結城が正規の応答より早く偽の応答を送信 「www.meta-c.com = 10.0.0.99(結城の偽サーバー)」 ↓ 5. DNSサーバーが偽の情報をキャッシュに保存 ↓ 6. 山本が偽サイトに誘導される
「完璧…VPN接続中の山本は、必ず会社のDNSを使う。これで山本とお砂糖は、私の作った偽のメタCサイトに飛ばされる。そこで二人の会話を盗聴して、ログイン情報を盗む…」
結城の計画が、静かに動き出していた。
🔍 異変の検知
山本がメタCにログインしようとした瞬間、里見が異変に気付いた。
「待って、慎也!このログイン画面、おかしい…」
「え?普通に見えるけど…」
「URLをよく見て。本物は『https』なのに、これは『http』。それに証明書エラーが出てる」
里見が素早くコマンドプロンプトを開いた。
C:\> nslookup www.meta-c.com サーバー: meta-c-dns.internal アドレス: 192.168.1.53 (メタC社内のDNSサーバー) 名前: www.meta-c.com アドレス: 10.0.0.99 ← 本来は203.0.113.100のはず!
「やっぱり…VPN経由で使ってる社内DNSが汚染されてる!」
「えっ、どういうこと!?」
「DNSキャッシュポイズニング。メタC社のDNSサーバーのキャッシュに偽の情報が入ってる。慎也、絶対にログインしないで!すぐにVPNを切断して!」
🛡️ 防御と対策
里見は、すぐに佐藤に連絡した。
「佐藤さん、DNSキャッシュポイズニングです!すぐにキャッシュをクリアしてください!」
佐藤が冷静に対応する。
「了解。すぐにログを確認します」
数分後、佐藤がメタCのDNSサーバーのログを解析した結果を報告した。
「やはり…不正なDNS応答が大量に記録されていました。送信元IPアドレスは…」
「結城のIPアドレスですね」
里見が冷静に分析する。
対策:
- DNSキャッシュのクリア:汚染されたキャッシュを削除
- DNSSEC導入:DNS応答に電子署名をつけて改ざん防止
- 送信元ポートのランダム化:攻撃者が偽応答を送りにくくする
- 最新のDNSソフトウェア:脆弱性対策済みのバージョンに更新
「すぐに実施します。ユーザーには緊急メンテナンスのお知らせを…」
佐藤の素早い対応で、被害は最小限に抑えられた。
💑 安堵のひととき
攻撃が阻止された夜、慎也と里見は再びプライベートワールドで話していた。
「里見、本当にありがとう。もしあのままログインしてたら…」
「大丈夫よ、慎也。私がいつも守るから」
里見が優しく微笑んだ。
「でも、結城ってすごい技術力だね…怖いよ」
「そうね。だからこそ、私たちももっと勉強しないと。DNSの仕組みを理解しておけば、こういう攻撃にも気付けるの」
「うん…里美から学ぶこと、まだまだたくさんあるな」
「慎也も成長してるわよ。最近、セキュリティの質問が鋭くなってきた」
「えへへ、美里が良い先生だから」
二人は手を繋ぎながら、星空を見上げた。
「ねぇ、慎也。将来、二人でセキュリティの会社を作らない?」
「え…!」
「冗談よ。でも、いつか一緒に働けたらいいな、って思ってる」
「僕も…里美と一緒なら、どんな困難も乗り越えられる気がする」
「ありがとう。じゃあ、次はDHCPについて教えるね。ネットワークの自動設定の仕組みよ」
「うん、楽しみ!」
二人の絆は、試練を乗り越えるたびに深まっていった。
😤 結城の悔しさ
一方、結城は自室のモニターを拳で叩いていた。
「くっ…また(慎也の)お砂糖に邪魔された!」
ログには、「DNSキャッシュクリア完了」「DNSSEC有効化」の文字が並んでいた。
「お砂糖…あなた、相当な技術力ね。でも、まだまだ手はある」
結城の目が、次の標的を捉えた。
「DHCP…ネットワークの自動設定。ここを乗っ取れば、もっと巧妙に…」
結城の復讐は、まだ終わらない。
次なる攻撃の準備が、静かに進んでいた。
📚 用語まとめ
| 用語 | 読み | 意味・用途 |
|---|---|---|
| DNS | ディーエヌエス | Domain Name System。ドメイン名をIPアドレスに変換するシステム。インターネットの住所録。 |
| FQDN | エフキューディーエヌ | Fully Qualified Domain Name(完全修飾ドメイン名)。ホスト名を含む完全なドメイン名。例:www.meta-c.com |
| hostsファイル | ホスツファイル | ローカルPCに保存される、ドメイン名とIPアドレスの対応表。DNSより優先される。 |
| リゾルバ | リゾルバ | ユーザーの代わりにDNSサーバーに問い合わせを行うプログラム。DNSキャッシュサーバーとも呼ばれる。 |
| Aレコード | エーレコード | Address Record。ドメイン名をIPv4アドレスに変換するDNSレコード。 |
| CNAMEレコード | シーネームレコード | Canonical Name。ドメイン名の別名(エイリアス)を定義するDNSレコード。 |
| PTRレコード | ピーティーアールレコード | Pointer Record。IPアドレスからドメイン名への逆引きを行うDNSレコード。 |
| MXレコード | エムエックスレコード | Mail eXchange。メールサーバーの宛先を指定するDNSレコード。優先度設定が可能。 |
| WHOIS | フーイズ | ドメイン名の登録情報(所有者、登録日、有効期限など)を検索できるサービス。 |
| DNSキャッシュポイズニング | ディーエヌエスキャッシュポイズニング | DNSサーバーのキャッシュに偽の情報を混入させ、ユーザーを偽サイトに誘導する攻撃。 |
| DNSSEC | ディーエヌエスセック | DNS Security Extensions。DNS応答に電子署名を付けて改ざんを防ぐセキュリティ技術。 |
🎯 試験対策ポイント
DNSの問い合わせ順序(重要!)
- hostsファイルを確認(最優先)
- DNSキャッシュを確認
- リゾルバがDNSサーバーに問い合わせ
- ルートDNS → TLD DNS → 権威DNSサーバーの順に問い合わせ
4つのDNSレコードの使い分け
- Aレコード:基本の名前解決(ドメイン→IP)
- CNAME:別名設定(blog.example.com → www.example.com)
- PTR:逆引き(IP→ドメイン)、スパム対策に使用
- MX:メールサーバー指定、優先度あり
DNSキャッシュポイズニング対策
- DNSSEC:電子署名で改ざん検知
- ポート番号のランダム化:攻撃を困難にする
- 最新ソフトウェア:脆弱性対策
- キャッシュの適切な管理:TTL(Time To Live)の設定