【DNS編】サブドメイン列挙とCT logが暴く組織の地図|CTF思考フレームワーク R01

DNS の偵察って、サブドメイン探し?それだけで何わかるの?📡

実は、サブドメイン列挙で『組織の地図』が描けます。staging.example.com、admin.example.com、jenkins.example.com――公開予定でないサブドメインが攻撃の入口になります。Certificate Transparency log と総当たり辞書で網羅的に列挙できます。
DNS偵察は、攻撃面の発見の第一歩。Certificate Transparency log(crt.sh)、パッシブDNS(VirusTotal・SecurityTrails)、サブドメイン辞書(subfinder・amass)――これらを組み合わせると、組織が公開する意図のないサブドメインが多数発見されます。Bug Bounty でも頻出の偵察手法。
広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

公開してないつもりのサブドメイン、外からどんどん見つかるんだ…
この記事は、CTF思考フレームワーク Recon編 R01。DNS 偵察の基本(サブドメイン列挙・CT log活用・ゾーン転送)と、Subfinder・Amass・MassDNS の使い方、自社の見え方点検を整理します。
Recon(偵察)はCTFでもバグハンティングでも最初の関門。中でもDNSは「組織のインフラ全体を見渡す地図」になります。サブドメインの列挙ひとつで、本番環境の裏に隠された開発・staging・admin系が一気に見えてしまうことも。今回はDNSから始める偵察の作法を整理していきます🌐
攻撃者にとってDNSは「地図」、防御側にとっては「漏れやすい情報」。両方の視点で見ていきましょう。
先に意味を押さえておくと読みやすい用語です。
- CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
- DNS: ドメイン名をIPアドレスに変換するインターネットの住所録です。
- ポートスキャン: サーバーで開いている入口を調べる作業です。許可された範囲だけで行います。
難易度:★☆☆(初級) / この枝ルートの記事は、必要な回だけ選んで読めます。
👀 観察フェーズ:まず何を見る?
TXTレコードに古い検証用トークン(Google Site Verification、Atlassian、Stripe等)が残ってると、そこから「この組織が使ってるSaaS」が一気に分かります。
🤔 仮説フェーズ:攻撃者は何を考える?
攻撃者がまず立てる仮説は「公開している本番ドメインの裏に、開発・staging・admin系のサブドメインが必ず残っているはず」というもの。Certificate Transparency log(CT log)には過去に発行された証明書がすべて記録されており、削除されたサブドメインや社内向けに作ったはずのホスト名まで世界中から閲覧できます。さらにCNAMEで外部SaaS(旧Heroku、退役S3バケット等)を指したまま放置していれば、サブドメインテイクオーバーで自社ドメインを乗っ取られる余地が生まれる――攻撃者は「DNSは漏れる前提」で動きます。
「公開情報なのに価値が高い」のがDNS偵察の旨味。攻撃者は数十〜数千のサブドメインを一気に洗います。
🔬 検証フェーズ:どうやって確かめる?
検証は受動的な手法から始めるのが定石です。まず crt.sh や Censys で対象ドメインのCT log履歴を引き、過去に証明書が発行されたサブドメインを一覧化。続いて subfinder や amass の passive モードで VirusTotal・SecurityTrails 等の複数ソースを横断列挙し、解決可能なホストだけを dnsx でフィルタします。仕上げに dig で AXFR(ゾーン転送)を試し、許可ミスがあれば一発でゾーン全体を取得できる――この「公開情報の積み上げ」だけで対象組織のインフラ地図が描けるかを確認していきます。
⚔️ 攻撃フェーズ:実際の手口
実戦では、列挙したサブドメインを httpx で生存確認したうえで、jenkins.example.com・grafana.example.com・staging.example.com のような「内部向けに見えるが外から到達できる」ホストを優先的に深掘りします。古いCNAMEが退役済みのSaaSを指していれば、攻撃者がそのSaaSアカウントを取得するだけでサブドメインテイクオーバーが成立し、正規ドメイン名でフィッシングや Cookie 窃取が可能に。さらにTXTレコードに残った旧SaaSの検証トークンから利用サービスを推定し、SaaS側の認証ミスを突くケースもあります。あくまで許可された検証環境やBug Bountyプログラムの範囲内で観察するべき動きです。
CTF{dns_is_a_public_map_assume_everything_leaks}
DNSは公開情報。「秘密のサブドメイン」を作ったつもりでも、CT log経由でほぼ確実に見つかります。
🛡️ 防御フェーズ:どう守る?
守る側はまず「DNSは公開情報である」と割り切り、CT logに載って困るホスト名(internal-admin など)はそもそも証明書を発行しないか、ワイルドカード証明書で個別ホスト名を秘匿します。退役したサービスのCNAMEは削除フローを SRE のチェックリストに組み込み、subjack や nuclei の takeover テンプレートで自社ドメインを定期巡回。AXFRは権威DNSで明示的に拒否し、DMARC は p=none で止めず p=quarantine 以上まで運用ステージを進めます。TXTレコードの古い検証トークン棚卸しも、半年に一度は必ず実施したい衛生作業です。
🧪 自分で検証ラボを作る
Reconコマンドを安全に試すには、自分専用の検証ラボが一番。🏗️ ConoHa VPSなら月額数百円からLinux環境を立てられ、nmapやgobusterなどのツールを「自分のサーバ」に打ち込んで安全に試せます。
※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。
⚠️ よくある落とし穴
よくあるミス。
- 退役したサービス向けのCNAMEを残し、サブドメインテイクオーバーの温床になる。
- CT logを意識せず「stagingを内部用に隠してるつもり」になる(実は全公開)。
- DMARCを p=none のまま放置して「導入済み」とカウントする。
- 内部用ドメインと外部用ドメインを同じTLDの下で運用し、列挙で繋がりを露呈。
- 古い検証用TXTレコードを削除せず、利用SaaSが推測される。
- ゾーン転送制限を「内部DNSだから不要」と省略する。
🧰 ツール早見表
使う道具。
| ツール | 用途 | ひと言 |
|---|---|---|
| dig / nslookup | 基本のDNS問い合わせ | 何はなくともこれ |
| amass / subfinder | 受動的サブドメイン列挙 | 複数ソース横断で網羅性高 |
| crt.sh / Censys | CT log検索 | ブラウザでも使える手軽さ |
| subjack / nuclei | サブドメインテイクオーバー検出 | 退役サービスCNAME検査 |
| dnsrecon | 統合DNS偵察 | AXFR・逆引き・ブルートフォース対応 |
🎓 本気で学びたい人へ
Recon・OSINTを絵空事だけで終わらせず、セキュリティエンジニアをキャリアとして目指したい方に。🎓 ササエルは現場で使えるスキルを体系的に学べるスクールです。
📚 もっと深く学びたい人へ
体系的に攻撃と防御の両面を学びたいなら『ホワイトハッカー入門 第2版』が分かりやすい入口です📚
📚 次に読みたい
- 【ポートスキャン編】開いてる扉を数える偵察の作法|CTF思考フレームワーク R02
- 【Webサーバ指紋編】技術スタックを当てて攻撃面を絞り込む|CTF思考フレームワーク R03
- 【ログイン画面の攻撃者目線】何を狙う?どう守る?|CTF思考フレームワーク #01
✍️ 学んだことを発信する
セキュリティブログを自分で始めたい方へ。🌐 ConoHa WINGなら初期費用無料でWordPressを起こせ、学んだことをアウトプットしていけます。



