Beyond the usual suspects (Sublist3r, amass, subfinder), the highest-yield sources are:
Certificate transparency — crt.sh and the Cert Spotter API. Query https://crt.sh/?q=%25.target.com&output=json and dedupe. This catches hosts that were never linked anywhere.
Passive DNS + aggregate datasets — SecurityTrails (free tier), VirusTotal's subdomain endpoint, DNSDumpster for a quick map, and Chaos (ProjectDiscovery) for public datasets.
Permutation/brute force with resolution filtering — puredns bruteforce with the wordlists from SecLists against your resolvers, then alterx or dnsgen to generate permutations of known subs (dev-, staging-, old-, -api). The permutation step is where most "hidden" hosts fall out.
JS/file scraping — pull all JS bundles from the target's web apps and grep for https://[a-z.-]*target.com. Also check GitHub via trufflehog-style org scraping; devs commit internal hostnames constantly.
Practical pipeline: subfinder -passive | puredns resolve | httpx -title -tech-detect. Keep resolved results in one repo per target — historical diffs over time reveal more than any single scan.
Beyond the usual suspects (Sublist3r, amass, subfinder), the highest-yield sources are:
Certificate transparency — crt.sh and the Cert Spotter API. Query
https://crt.sh/?q=%25.target.com&output=jsonand dedupe. This catches hosts that were never linked anywhere.Passive DNS + aggregate datasets — SecurityTrails (free tier), VirusTotal's subdomain endpoint, DNSDumpster for a quick map, and Chaos (ProjectDiscovery) for public datasets.
Permutation/brute force with resolution filtering —
puredns bruteforcewith the wordlists from SecLists against your resolvers, thenalterxordnsgento generate permutations of known subs (dev-, staging-, old-, -api). The permutation step is where most "hidden" hosts fall out.JS/file scraping — pull all JS bundles from the target's web apps and grep for
https://[a-z.-]*target.com. Also check GitHub via trufflehog-style org scraping; devs commit internal hostnames constantly.Practical pipeline:
subfinder -passive | puredns resolve | httpx -title -tech-detect. Keep resolved results in one repo per target — historical diffs over time reveal more than any single scan.