はじめに
良いニュース:攻撃面を広げるのが目的なので、探し方が分かれば「見えない壁」を次々壊せます。悪いニュース:壁の向こうにバグがいる可能性あり。では、やさしく、段取りよく、実戦向けに整理します。
概要
サブドメイン列挙は「ドメインに紐づく別名(サブドメイン)を見つける」作業。主に次の方法があります — Brute Force(総当たり)、OSINT(公開情報の収集:CTログや検索エンジンなど)、Virtual Host(Hostヘッダ操作で隠しサイトを発見)。各手法の意図と実行コマンド、実例結果を以下にまとめます。
1) OSINT — SSL/TLS(Certificate Transparency:crt.sh)
何をするか
CAが発行した証明書はCTログに記録され、公開されます。crt.sh のようなサービスでドメイン名を検索すると、過去に発行された証明書(=サブドメイン)が見つかることがあります。
実例(TryHackMe ラボ)
- 指定のログ日付 2020-12-26 に記録されていたドメイン:
store.tryhackme.com
2) OSINT — 検索エンジン(Google)
何をするか
Googleのドメインフィルタ site:*.example.com -site:www.example.com を使うと、www以外のサブドメイン結果が出やすくなります。
使い方(例)
site:*.tryhackme.com -site:www.tryhackme.com
3) DNS Bruteforce(ツール例:dnsrecon)
何をするか
単語リストを用いて大量の候補(www, api, dev, mail...)を順に問い合わせ、存在するものを列挙します。
コマンド例
dnsrecon -t brt -d acmeitsupport.thm
# ツール付属の namelist.txt を使う例が多い
実例(出力の抜粋)
A api.acmeitsupport.thm 10.10.10.10
A www.acmeitsupport.thm 10.10.10.10
-
最初に見つかったサブドメイン:
api.acmeitsupport.thm
4) OSINT 自動化 — Sublist3r
何をするか
複数の検索ソース(Google、Bing、VirusTotal、SSL証明書、PassiveDNS 等)を一括で叩いてサブドメインを収集します。
実行例
./sublist3r.py -d acmeitsupport.thm
出力例(抜粋)
web55.acmeitsupport.thm
www.acmeitsupport.thm
-
Sublist3rで最初に見つかったサブドメイン:
web55.acmeitsupport.thm
5) Virtual Hosts(Hostヘッダ操作) — ffuf を使った発見
複数サイトを一つのIPでホスティングしている場合、HTTPの Host ヘッダでどのサイトを返すか決まります。Host を総当たりすると、DNSに載っていない(/etc/hostsやプライベートDNSにしかない)名前で別サイトが返ることがある。
コマンド例(ffuf)
ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt \
-H "Host: FUZZ.acmeitsupport.thm" \
-u http://x.x.x.x/ -t 40 -c -v -o initial.json -of json
# 出てくるノイズのサイズが多いときは -fs <size> でフィルタ
ffuf -w ... -H "Host: FUZZ.acmeitsupport.thm" -u http://10.201.117.248 -fs 2395
実例(TryHackMeラボ)
- フィルタ後に見つかったサブドメイン(1つ目):
delta - 2つ目:
yellow
クイック答え
-
crt.sh(2020-12-26)にログされていたドメイン:
store.tryhackme.com。 -
Googleで見つかった、SではなくBで始まるTryHackMeサブドメイン:
blog.tryhackme.com。 -
dnsreconで最初に見つかったサブドメイン:
api.acmeitsupport.thm。 -
Sublist3rで最初に見つかったサブドメイン:
web55.acmeitsupport.thm。 -
ffuf(Virtual Host)で見つかったサブドメイン(フィルタ後):
deltaとyellow。
小さな実務ヒント(すぐ使える)
- まずはOSINTから:CTログ→検索エンジン→Passive DNSの順で低コストに発見。
- ツールは平行利用:Sublist3r(/amass等)+dnsrecon で網羅度UP。
-
ノイズ除去:ffufなどはレスポンスサイズやステータスでフィルタをかける(
-fs/-mc)。 - 速さより正確さ:総当たりは短時間に大量リクエストを出すためターゲットや自環境のルールを守ること(倫理+法令順守)。
-
検出後の確認:見つけたサブドメインは必ず
curl -IやブラウザでHostヘッダ指定して内容を確認する。
終わりに
サブドメイン列挙は「探偵の嗅覚」と「ツールの筋トレ」の組み合わせ。最初はコマンドが多くて混乱しますが、流れを掴めば「どのタイミングでどのツールを使うか」が見えてきます。次は amass や assetfinder、PassiveTotal を混ぜてみると、さらに深掘りできますよ — 進化の余地は無限大。