performing-subdomain-enumeration-with-subfinder について
セキュリティ担当者向けに、Subfinderでのサブドメインのパッシブ列挙、ホスト検証、偵察ワークフローへの連携方法をまとめたスキルです。
主な機能
- 01単一または複数ドメインの列挙
- 02データソースの選択と除外
- 03再帰的なサブドメイン列挙
- 04レート制限と出力形式の設定
- 05httpxとdnsxによるホスト検証
- 06他の偵察ツールとの結果統合
活用シーン
- 01許可されたバグバウンティ対象の調査
- 02組織の外部資産の一覧化
- 03CI/CDでのサブドメイン変更の追跡
- 04評価対象となるクラウド上のサブドメインの特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-subdomain-enumeration-with-subfinderインストール後、Claude Code で/performing-subdomain-enumeration-with-subfinderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Subfinder を使用したサブドメイン列挙
使用する場面
- ペネトレーションテストやバグバウンティハンティングの偵察フェーズ
- 対象組織の外部攻撃対象領域をマッピングするとき
- 発見したサブドメインの脆弱性スキャンを実施する前
- 継続的なセキュリティ監視に向けて資産インベントリを作成するとき
- パッシブな情報収集が必要なレッドチーム活動中
前提条件
- ソースからビルドするために Go 1.21+ がインストールされていること
- Subfinder v2 がインストールされていること(
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest) - パッシブな情報源(Shodan、Censys、VirusTotal、SecurityTrails、Chaos)の API キーが設定されていること
- プロバイダー設定ファイルが
$HOME/.config/subfinder/provider-config.yamlにあること - パッシブ DNS および証明書の透明性に関する情報源へのネットワークアクセスがあること
- 発見したサブドメインを検証するための httpx または httprobe があること
ワークフロー
ステップ 1 — Subfinder のインストールと設定
# Install subfinder
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Verify installation
subfinder -version
# Configure API keys for enhanced results
mkdir -p $HOME/.config/subfinder
cat > $HOME/.config/subfinder/provider-config.yaml << 'EOF'
shodan:
- YOUR_SHODAN_API_KEY
censys:
- YOUR_CENSYS_API_ID:YOUR_CENSYS_API_SECRET
virustotal:
- YOUR_VT_API_KEY
securitytrails:
- YOUR_ST_API_KEY
chaos:
- YOUR_CHAOS_API_KEY
EOF
ステップ 2 — 基本的なサブドメイン列挙の実行
# Single domain enumeration
subfinder -d example.com -o subdomains.txt
# Multiple domains from a file
subfinder -dL domains.txt -o all_subdomains.txt
# Use all passive sources (slower but more thorough)
subfinder -d example.com -all -o subdomains_all.txt
# Silent mode for piping to other tools
subfinder -d example.com -silent | httpx -silent -status-code
ステップ 3 — 情報源の選択を絞り込み、カスタマイズ
# Use specific sources only
subfinder -d example.com -s crtsh,virustotal,shodan -o filtered.txt
# Exclude specific sources
subfinder -d example.com -es github -o results.txt
# Enable recursive subdomain enumeration
subfinder -d example.com -recursive -o recursive_subs.txt
# Match specific patterns
subfinder -d example.com -m "api,dev,staging" -o matched.txt
ステップ 4 — レート制限と出力形式の制御
# Rate limit to avoid API throttling
subfinder -d example.com -rate-limit 10 -t 5 -o rate_limited.txt
# JSON output for programmatic processing
subfinder -d example.com -oJ -o subdomains.json
# Output with source information
subfinder -d example.com -cs -o subdomains_with_sources.txt
# Collect results in a directory per domain
subfinder -dL domains.txt -oD ./results/
ステップ 5 — httpx で発見したサブドメインを検証
# Pipe subfinder output to httpx for live validation
subfinder -d example.com -silent | httpx -silent -status-code -title -tech-detect -o live_hosts.txt
# Check for specific ports
subfinder -d example.com -silent | httpx -ports 80,443,8080,8443 -o web_services.txt
# Resolve IP addresses
subfinder -d example.com -silent | dnsx -a -resp -o resolved.txt
ステップ 6 — より広範な偵察パイプラインとの統合
# Chain with nuclei for vulnerability scanning
subfinder -d example.com -silent | httpx -silent | nuclei -t cves/ -o vulns.txt
# Combine with amass for comprehensive enumeration
subfinder -d example.com -o subfinder_results.txt
amass enum -passive -d example.com -o amass_results.txt
cat subfinder_results.txt amass_results.txt | sort -u > combined_subdomains.txt
# Screenshot discovered hosts
subfinder -d example.com -silent | httpx -silent | gowitness file -f - -P screenshots/
主要な概念
| 概念 | 説明 |
|---|---|
| パッシブ列挙 | 対象の DNS サーバーに直接問い合わせずにサブドメインを発見すること |
| 証明書の透明性 | サブドメイン名を明らかにする SSL/TLS 証明書の公開ログ |
| DNS の集約 | 複数のパッシブ DNS データベースからサブドメインデータを収集すること |
| 再帰的な列挙 | より広く網羅するために、サブドメインのサブドメインを発見すること |
| 情報源プロバイダー | サブドメインに関する情報を取得するために問い合わせる外部 API およびデータベース |
| CNAME レコード | 追加のインフラストラクチャを明らかにする可能性のある正規名レコード |
| ワイルドカード DNS | 任意のサブドメインへの問い合わせに結果を返す DNS 設定 |
ツールとシステム
| ツール | 目的 |
|---|---|
| Subfinder | パッシブなサブドメイン列挙を行う主要エンジン |
| httpx | 稼働中のサブドメインを検証する HTTP プローブツール |
| dnsx | DNS の名前解決および検証ツールキット |
| Nuclei | 発見したホストを対象とするテンプレートベースの脆弱性スキャナー |
| Amass | アクティブ/パッシブモードを備えた補完的なサブドメイン列挙ツール |
| gowitness | 視覚的な偵察に使用するウェブページのスクリーンショットツール |
| Shodan | サブドメインに関する情報を取得するためのインターネット全体のスキャンデータベース |
| crt.sh | 証明書の透明性ログ検索エンジン |
よくあるシナリオ
- バグバウンティの偵察 — 対象プログラムのスコープ内にあるすべてのサブドメインを列挙し、脆弱性を含む可能性のある、放置された資産や設定ミスのある資産を特定します
- 攻撃対象領域のマッピング — 継続的なセキュリティ監視とリスク評価に向けて、外部からアクセス可能なサブドメインを包括的にインベントリ化します
- クラウド資産の検出 — サブドメイン乗っ取りに対して脆弱な可能性のある、クラウドサービス(AWS、Azure、GCP)を指すサブドメインを特定します
- CI/CD との統合 — パイプラインでサブドメインの監視を自動化し、新たなサブドメインを検出して攻撃対象領域の変化を通知します
- 合併・買収のデューデリジェンス — セキュリティ評価の一環として、買収対象の外部公開範囲全体をマッピングします
出力形式
## Subdomain Enumeration Report
- **Target Domain**: example.com
- **Total Subdomains Found**: 247
- **Live Hosts**: 183
- **Unique IP Addresses**: 42
- **Sources Used**: crt.sh, VirusTotal, Shodan, SecurityTrails, Censys
### Discovered Subdomains
| Subdomain | IP Address | Status Code | Technology |
|-----------|-----------|-------------|------------|
| api.example.com | 10.0.1.5 | 200 | Nginx, Node.js |
| staging.example.com | 10.0.2.10 | 403 | Apache |
| dev.example.com | 10.0.3.15 | 200 | Express |
### Recommendations
- Remove DNS records for decommissioned subdomains
- Investigate subdomains with CNAME pointing to unclaimed services
- Restrict access to development and staging environments
コメント
Markdown 対応