【DNS編】サブドメイン列挙とCT logが暴く組織の地図|CTF思考フレームワーク R01
こんにちは、アンペンです!
ここから偵察(Recon)ルート10本に入ります。攻撃の第1段階『攻撃面の特定』を、本編より深く・テーマごとに掘り下げる応用編です。攻撃者がexploitを発射する前に時間を掛けるのは、ほとんどがこの偵察フェーズ。『攻撃面の全体像が見えていないexploitは外す』という鉄則があるからです。
1本目はDNS編。組織のIT資産マップを描く第一歩はサブドメイン全列挙。CT log・パッシブDNS・OSS・ブルートフォースの4経路を組み合わせると、運用者が忘れていた検証用サブドメイン・買収企業の名残・社内ツールの公開などが浮かび上がります。
ここからの偵察ルートは、本編のOSINTと似て非なるものです。OSINTが“情報を集めて理解する”受け身寄りの調査なら、Reconは“これから攻めるための下調べ”という、より実戦的な偵察。ペネトレーションテストの世界には『偵察に9割の時間をかけろ』という格言があります。攻撃面(どこに入口があるか)の地図が描けていなければ、どんな攻撃も的外れに終わるからです。まずはその“地図作り”の第一歩、DNSから始めましょう。

サブドメインってそんなにたくさんあるの?

大企業では数千〜数万。古い検証環境・買収企業のドメイン・社内ツール・退職者が立てたデモ環境が眠っていて、そこが侵入口になることが多い。本番より管理されていないサブドメインこそ狙い目だよ。
DNS偵察は(1)CT log(crt.sh)で発行された全TLS証明書を列挙、(2)パッシブDNS(SecurityTrails/DNSDB)で過去の解決履歴を取得、(3)Subfinder/Amass等のOSSで複数ソースを統合、(4)DNSブルートフォース(dnsx/shuffledns)で辞書攻撃の4経路で全サブドメインを掴みます。Subdomain Takeover(放置サブドメインを攻撃者が乗っ取る)が代表的な実害。守る側は『ワイルドカード証明書で内部名を隠す+不要サブドメインの即削除+四半期棚卸し+Takeover検出ツールCI組込』で攻撃面を縮小します。
この記事で分かること
- サブドメイン列挙の4経路とそれぞれの強み
- CT logとパッシブDNSの違い・併用方法
- Subdomain Takeoverの仕組みと検出ツール
- 守り側の棚卸しルーチンと自動検出CI
- 大規模組織向けのAttack Surface Management
📖 はじめてのWebセキュリティ R01|DNS編
サブドメイン列挙とCT logが暴く組織の地図。 シリーズ一覧を見る →
⚠️ 大事なお約束
他者ドメインへのスキャンや実攻撃は違法。CTFや自社・許可された範囲(バウンティプログラム対象)のみで確認してください。
サブドメイン列挙の4経路
- ①CT log(crt.sh):過去の全TLS証明書ログ。
crt.sh/?q=%25.example.comで内部用も含めて丸見え。Let’s Encrypt普及以降の最大の情報源で初手で必ず叩く - ②パッシブDNS:SecurityTrails / DNSDB(Farsight) / Microsoft Defender TI(旧RiskIQ)等の有料/フリーミアム。過去の名前解決履歴を蓄積、今は消えたサブドメインも見える
- ③OSS総合列挙:
subfinder -d example.com -all(ProjectDiscovery製、複数ソース統合)、amass enum -d example.com -active(OWASP製、より広範)、assetfinder(Tomnomnom製) - ④ブルートフォース:
dnsx -d example.com -w wordlist.txt(ProjectDiscovery)、shuffledns(高速版)。SecListsのサブドメイン辞書を併用 - ⑤補完:
chaosAPI、BinaryEdge、SiteIndices等も組み合わせると見落とし減
『そんなに何経路も必要?』と思うかもしれませんが、答えはYESです。各経路には“見える範囲”と“死角”があるから。CT logは証明書を出したホストしか映らないし、ブルートフォースは辞書にある名前しか当てられない。1つの経路だけでは、必ず取りこぼしが出ます。だから全部を回して結果を重ね、最後に重複を消す。漏れを減らすには“複数の網を重ねる”——これが偵察の基本姿勢です。
図解:4経路のカバー範囲
各経路で見つかるサブドメインは少しずつ重なりつつ、独自の発見もあります。1経路だけでは抜けが多く、4本柱を組み合わせるのが定石です。実戦では結果をsort -uで重複削除して統合します。

1つの地図(=1つのソース)では見落とす道があります。『航空写真+古地図+住宅地図+電車路線』を重ねると、街の全道路がほぼ網羅できる──サブドメイン列挙もまったく同じ。CT logは『新築建築許可申請』、パッシブDNSは『過去の郵便配達記録』、OSSツールは『複数ソース統合GIS』、ブルートフォースは『虱潰しの実地踏査』に相当します。4本重ねれば、運用者すら忘れている古いサブドメインまで浮かび上がります。
ここで覚える用語:Subdomain Takeover
『使われなくなったサブドメイン』が外部サービス(S3バケット/Heroku/GitHub Pages/Azure等)を指したまま放置されると、攻撃者が同名で外部サービスを取得し、正規ドメイン名で攻撃者コンテンツが配信される深刻な脆弱性。CNAMEレコードが残っているのに参照先が削除されている状態が典型。検出はsubjack/subzy/nuclei(takeoverテンプレート集)。実害例:UberやStarbucksでも過去に発生、フィッシング・OAuth Cookie盗難に繋がる。
Subdomain Takeoverの仕組みと検出
シナリオ:組織がblog.example.comでWordPressを社内マーケに使っていたが、運用終了でS3バケットを削除。しかしDNSのCNAME blog.example.com → example-blog.s3.amazonaws.comは残ったまま。攻撃者がこのCNAMEに気付き、自分でexample-blogという名前のS3バケットを取得→正規のblog.example.comで攻撃者コンテンツが配信される。
このシナリオの何が怖いって、利用者から見れば『正規ドメインのまま』という点です。URLは本物の blog.example.com、SSLの鍵マークもちゃんと付く。ブラウザは何の警告も出しません。なのに中身は、攻撃者がすり替えたページ。だからフィッシングに使われると、見抜くのが本当に難しいんです。“ドメインは正しいのに、中身が偽物”——これがSubdomain Takeoverの不気味さです。
- 影響:フィッシング(正規ドメインなのでSSL有効・ブラウザ警告なし)、OAuthクッキー盗難、内部ドキュメント開示
- 検出:
subjack -w found_subs.txt -t 100 -timeout 30 -ssl、subzy run --targets found_subs.txt - 対策:不要サブドメインの即削除、CNAMEを残さない運用、定期Takeover監査をCIに組込
ポイントは、危険の正体が『高度な攻撃』ではなく『放置』だという点です。鍵をかけ忘れた空き家のドアと同じで、誰も使っていないサブドメインが“開けっ放し”になっているだけ。だから対策も、特別な技術ではなく『使い終わったら、DNSのレコードまできっちり消す』という地味な運用に尽きます。攻撃者は派手な穴より、こうした“掃除し忘れ”を真っ先に探すんです。


CTFでやってみよう:自社ドメインを4経路で
自社/自分のドメインで4経路全部回す
目的は『自社ドメインがOSINT/Recon でどこまで見えるか』を実演し、忘れていたサブドメインを棚卸しすることです。HackerOne公開バウンティ対象も練習に使えます。
https://crt.sh/?q=%25.example.com&output=jsonで過去の全証明書 → サブドメイン抽出subfinder -d example.com -all -recursiveでOSS複数ソース統合amass enum -active -d example.comで能動的列挙(DNS解決確認付き)dnsx -d example.com -w subdomains-top1million-110000.txtでブルートフォース- 4経路の結果を
cat *.txt | sort -u > all.txtで統合・重複削除 httpx -l all.txtで生きてるサブドメインを絞り込み(HTTPステータス確認)subjack -w live.txt -t 100 -timeout 30 -sslでTakeover可能性をチェック- 発見した『誰も知らない/古い』サブドメインを棚卸しレポート化、運用チームに渡す
では守る側へ。攻撃者が4経路で自社の地図を描けるなら、こちらも同じ4経路で“自分の地図”を先に描いておけばいい。守りの本質は、攻撃者より先に『うちにはどんなサブドメインがあるのか』を把握し続けることです。次のリストは、その“先回りの棚卸し”を仕組み化する方法です。
守る側:『棚卸しルーチン+ASM』
- サブドメイン作成時の申請ワークフローでカタログ化(IPAM/CMDB等で台帳管理)
- 四半期に1回 crt.sh / Subfinder で差分監査を実施、台帳との突合
- 使われていないものは即削除(DNSレコードもCNAMEも全消去)
- CDN/S3/SaaS指す時はワイルドカード証明書+削除手順を文書化
- Subdomain Takeover検出(
subjack/subzy/nuclei takeover templates)をCIで定期実行 - 大規模組織はAttack Surface Management(ASM)製品(Microsoft Defender EASM / Censys ASM / Tenable Surface等)を採用
- 退職者・買収企業の継承漏れに注意。M&A時のDNS資産インベントリ化を必須に
- レジストラ・ネームサーバ管理アカウントをMFA+専用人員で運用

古いサブドメインがあると、Takeoverの温床になるんだね…

次はR02、ポートスキャン編。開いてる扉を数える偵察の作法を扱うよ。
まとめ:『4経路+棚卸し+Takeover監査』
- DNS偵察はCT log/パッシブDNS/OSS統合/ブルートフォースの4経路
- Subdomain Takeoverは実害大、放置サブドメインが温床
- 守りは四半期棚卸し+ワイルドカード証明書+Takeover検出CI+ASM製品
- 大規模組織は専門部隊+ASM、M&A時の継承漏れに注意
今日の持ち帰りは『偵察は攻撃の下ごしらえ、棚卸しは防御の下ごしらえ』。攻める側も守る側も、やることは同じ——“見えるものを全部洗い出す”。違うのは目的だけです。とくにサブドメインは、忘れた頃に侵入口になります。定期的に自社を一度スキャンしてみる習慣が、いちばん効く守りになります。
次はR02、ポートスキャン編で『開いてる扉』を素早く・静かに数える作法を扱います。
