Claude-skill-registry Automated Subdomain Enumeration
Systematic approach to discovering subdomains through passive and active reconnaissance techniques
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/automated-subdomain-enum" ~/.claude/skills/majiayu000-claude-skill-registry-automated-subdomain-enumeration && rm -rf "$T"
skills/data/automated-subdomain-enum/SKILL.mdAutomated Subdomain Enumeration
Overview
Subdomain discovery is a critical first step in reconnaissance. Forgotten subdomains often contain vulnerabilities, outdated software, or misconfigurations that attackers can exploit. A systematic approach combines multiple data sources and techniques to build a comprehensive subdomain list.
Core principle: Combine passive reconnaissance (non-intrusive) with active enumeration (DNS queries, brute-forcing) to maximize coverage while respecting scope and legal boundaries.
When to Use
Use this skill when:
- Starting reconnaissance on a new target domain
- Building an inventory of an organization's attack surface
- Hunting for forgotten or shadow IT assets
- Looking for development, staging, or test environments
- Preparing for comprehensive vulnerability assessment
Don't use when:
- Outside authorized scope (get written permission first)
- Rate limiting or WAF might trigger alerts prematurely
- Target has strict testing windows you must respect
The Multi-Phase Approach
Phase 1: Passive Reconnaissance
Goal: Gather subdomains without directly touching target infrastructure.
Techniques:
-
Certificate Transparency Logs
# Use crt.sh or similar CT log search curl -s "https://crt.sh/?q=%25.target.com&output=json" | \ jq -r '.[].name_value' | \ sed 's/\*\.//g' | \ sort -u > ct_subdomains.txt -
Search Engine Dorking
# Google dorks for subdomains # site:target.com -www # Use tools like subfinder, amass with passive sources subfinder -d target.com -silent -all -o passive_subdomains.txt -
DNS Aggregators
- SecurityTrails
- VirusTotal
- DNSdumpster
- Shodan
-
GitHub/GitLab Code Search
# Search for domain mentions in code # "target.com" site:github.com # Look for: config files, API endpoints, documentation -
Web Archives
# Wayback Machine API curl -s "http://web.archive.org/cdx/search/cdx?url=*.target.com/*&output=json&fl=original&collapse=urlkey" | \ jq -r '.[] | .[0]' | \ grep -oP '(?<=://)[^/]*' | \ sort -u >> archive_subdomains.txt
Phase 2: Active Enumeration
Goal: Actively query DNS infrastructure to discover additional subdomains.
Techniques:
-
Brute Force with Wordlists
# Use tools like puredns, massdns, or dnsx puredns bruteforce wordlist.txt target.com \ --resolvers resolvers.txt \ --write active_subdomains.txt -
DNS Zone Transfers (if misconfigured)
# Test for zone transfer vulnerability dig axfr @ns1.target.com target.com -
Reverse DNS Lookups
# Get IP ranges, perform reverse lookups # Useful for finding additional subdomains on same infrastructure -
Permutation Scanning
# Generate permutations of found subdomains # Example: dev.api.target.com, staging.api.target.com altdns -i subdomains.txt -o permuted.txt -w words.txt dnsx -l permuted.txt -o verified_permuted.txt
Phase 3: Validation and Enrichment
Goal: Verify discovered subdomains are live and gather additional context.
-
Live Host Detection
# Use httpx to probe for web services cat all_subdomains.txt | httpx -silent -o live_hosts.txt # Get status codes, titles, tech stack httpx -l all_subdomains.txt -title -tech-detect -status-code -o enriched.txt -
Port Scanning
# Identify services on discovered hosts naabu -list live_hosts.txt -p 80,443,8080,8443 -o ports.txt -
Screenshot Capture
# Visual reconnaissance of web interfaces gowitness file -f live_hosts.txt -P screenshots/ -
Technology Fingerprinting
# Identify web technologies, frameworks, CMS wappalyzer -l live_hosts.txt -o tech_stack.json
Phase 4: Organization and Analysis
Goal: Structure discovered data for efficient analysis and next steps.
-
Categorize Subdomains
- Production vs. development/staging/test
- Internal-facing vs. external-facing
- By technology stack or function
- By sensitivity/criticality
-
Prioritize Targets
- High-value targets: admin, api, dev, staging, test, vpn, mail
- Outdated software versions
- Unusual ports or services
- Error messages or debug pages
-
Document Findings
# Target: target.com ## Statistics - Total subdomains discovered: X - Live hosts: Y - Unique IP addresses: Z - Technologies identified: [list] ## High-Priority Targets 1. dev.api.target.com - Swagger UI exposed, no auth 2. old-admin.target.com - PHP 5.6, potential RCE 3. test-payment.target.com - Test environment with prod data? ## Next Steps - Deep enumeration of api.target.com endpoints - Vulnerability scan of outdated PHP instance - Manual inspection of test environment
Tool Recommendations
All-in-one suites:
- Amass (comprehensive, integrates many sources)
- Subfinder (fast passive enumeration)
- Assetfinder (simple, effective)
Specialized tools:
- Puredns (DNS validation and brute-forcing)
- DNSx (DNS toolkit with various features)
- Httpx (HTTP probing and enrichment)
- Naabu (fast port scanner)
- Gowitness (screenshot capture)
Setup example:
# Install Go tools go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest go install github.com/projectdiscovery/httpx/cmd/httpx@latest go install github.com/projectdiscovery/naabu/v2/cmd/naabu@latest # Install other dependencies pip install altdns
Automation Script Template
#!/bin/bash # automated_subdomain_enum.sh DOMAIN=$1 OUTPUT_DIR="${DOMAIN}_recon_$(date +%Y%m%d_%H%M%S)" mkdir -p "$OUTPUT_DIR" echo "[*] Starting subdomain enumeration for $DOMAIN" # Phase 1: Passive echo "[*] Phase 1: Passive reconnaissance" subfinder -d "$DOMAIN" -all -silent -o "$OUTPUT_DIR/subfinder.txt" assetfinder --subs-only "$DOMAIN" > "$OUTPUT_DIR/assetfinder.txt" curl -s "https://crt.sh/?q=%25.$DOMAIN&output=json" | jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u > "$OUTPUT_DIR/crtsh.txt" # Combine and deduplicate cat "$OUTPUT_DIR"/{subfinder,assetfinder,crtsh}.txt | sort -u > "$OUTPUT_DIR/passive_all.txt" echo "[+] Found $(wc -l < "$OUTPUT_DIR/passive_all.txt") unique subdomains (passive)" # Phase 2: Active (optional, comment out if too noisy) # echo "[*] Phase 2: Active enumeration" # puredns bruteforce /path/to/wordlist.txt "$DOMAIN" -r /path/to/resolvers.txt -w "$OUTPUT_DIR/bruteforce.txt" # Phase 3: Validation echo "[*] Phase 3: Validating and probing subdomains" cat "$OUTPUT_DIR/passive_all.txt" | dnsx -silent -o "$OUTPUT_DIR/validated.txt" httpx -l "$OUTPUT_DIR/validated.txt" -title -status-code -tech-detect -silent -o "$OUTPUT_DIR/live_hosts.txt" echo "[+] Found $(wc -l < "$OUTPUT_DIR/live_hosts.txt") live hosts" echo "[*] Results saved to $OUTPUT_DIR/"
Legal and Ethical Considerations
CRITICAL: Always follow these rules:
-
Get Written Authorization
- Never test targets without explicit permission
- Scope must be clearly defined in writing
- Understand what techniques are permitted
-
Respect Rate Limits
- Don't overwhelm target DNS servers
- Use reasonable delays between requests
- Consider impact on production systems
-
Handle Data Responsibly
- Discovered subdomains may reveal sensitive information
- Don't publicly disclose findings without permission
- Follow responsible disclosure practices
-
Document Everything
- Keep records of authorization
- Log all activities with timestamps
- Document findings systematically
Common Pitfalls
| Mistake | Impact | Solution |
|---|---|---|
| Only using one data source | Miss many subdomains | Combine multiple techniques |
| Skipping validation | False positives waste time | Always verify with DNS queries |
| Too aggressive active scanning | Detection, blocking, legal issues | Start passive, escalate carefully |
| Not categorizing results | Inefficient analysis | Organize findings by priority |
| Ignoring out-of-scope domains | Legal/ethical violations | Strictly adhere to authorized scope |
Integration with Other Skills
This skill works with:
- skills/reconnaissance/web-app-recon - Next step after finding live web apps
- skills/reconnaissance/service-fingerprinting - Identify services on discovered hosts
- skills/automation/* - Automate the full recon pipeline
- skills/documentation/* - Organize findings in knowledge base
Success Metrics
A successful subdomain enumeration should:
- Discover both obvious and hidden subdomains
- Identify live hosts and their technologies
- Categorize findings by risk/priority
- Provide actionable next steps
- Complete within scope and authorization
- Document findings for future reference
References and Further Reading
- OWASP Testing Guide: Information Gathering
- "Bug Bounty Bootcamp" by Vickie Li (Chapter on Reconnaissance)
- ProjectDiscovery blog on subdomain enumeration
- DNS RFC standards for understanding DNS behavior