PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。
CTF・セキュリティ学習

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

かも次郎とアンペンが「DNS」を解説するマスコットイラスト
安全に生きたい編集部

こんにちは、アンペンです!

ここから偵察(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
難易度:中級 所要時間:11分 体験:自社ドメイン列挙 おすすめ:#71の後

📖 はじめての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のサブドメイン辞書を併用
  • ⑤補完:chaos API、BinaryEdgeSiteIndices等も組み合わせると見落とし減

『そんなに何経路も必要?』と思うかもしれませんが、答えはYESです。各経路には“見える範囲”と“死角”があるから。CT logは証明書を出したホストしか映らないし、ブルートフォースは辞書にある名前しか当てられない。1つの経路だけでは、必ず取りこぼしが出ます。だから全部を回して結果を重ね、最後に重複を消す。漏れを減らすには“複数の網を重ねる”——これが偵察の基本姿勢です。

図解:4経路のカバー範囲

各経路で見つかるサブドメインは少しずつ重なりつつ、独自の発見もあります。1経路だけでは抜けが多く、4本柱を組み合わせるのが定石です。実戦では結果をsort -uで重複削除して統合します。

CT log・パッシブDNS・OSS・ブルートフォースのサブドメイン列挙4経路
図1:サブドメイン列挙の4経路
🗺 たとえるなら、地図帳の重ね合わせ

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 -sslsubzy run --targets found_subs.txt
  • 対策:不要サブドメインの即削除、CNAMEを残さない運用、定期Takeover監査をCIに組込

ポイントは、危険の正体が『高度な攻撃』ではなく『放置』だという点です。鍵をかけ忘れた空き家のドアと同じで、誰も使っていないサブドメインが“開けっ放し”になっているだけ。だから対策も、特別な技術ではなく『使い終わったら、DNSのレコードまできっちり消す』という地味な運用に尽きます。攻撃者は派手な穴より、こうした“掃除し忘れ”を真っ先に探すんです。

放置サブドメインがS3バケットを指し攻撃者が同名で取得して乗っ取るTakeover図解
図3:Subdomain Takeoverの典型シナリオ
複数の地図を重ねて全ての道を発見するサブドメイン列挙のたとえ
図2:複数経路を重ね合わせると網羅性UP

CTFでやってみよう:自社ドメインを4経路で

やってみよう / 自分の環境・CTFのみ

自社/自分のドメインで4経路全部回す

目的は『自社ドメインがOSINT/Recon でどこまで見えるか』を実演し、忘れていたサブドメインを棚卸しすることです。HackerOne公開バウンティ対象も練習に使えます。

  1. https://crt.sh/?q=%25.example.com&output=json で過去の全証明書 → サブドメイン抽出
  2. subfinder -d example.com -all -recursive でOSS複数ソース統合
  3. amass enum -active -d example.com で能動的列挙(DNS解決確認付き)
  4. dnsx -d example.com -w subdomains-top1million-110000.txt でブルートフォース
  5. 4経路の結果を cat *.txt | sort -u > all.txt で統合・重複削除
  6. httpx -l all.txt で生きてるサブドメインを絞り込み(HTTPステータス確認)
  7. subjack -w live.txt -t 100 -timeout 30 -ssl でTakeover可能性をチェック
  8. 発見した『誰も知らない/古い』サブドメインを棚卸しレポート化、運用チームに渡す
他者ドメインに対する実攻撃(ポートスキャン以上)を行うのは違法。自社・CTF・許可済み(バウンティプログラム明記対象)のみ。

では守る側へ。攻撃者が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、ポートスキャン編で『開いてる扉』を素早く・静かに数える作法を扱います。

次に読みたい記事

参考資料

記事URLをコピーしました