Recon
Resolve subdomain wordlists through open resolvers
DNS subdomain brute force routed through open resolvers.
overview
What subbrute does
subbrute takes a domain and a --subs wordlist of candidate labels, then resolves each name. It finds hosts that never appear in certificate logs, search indexes, or DNS aggregators because those sources only list what was already published.
Lookups go through a pool of open resolvers via --resolvers instead of the target name servers. That spreads query load and keeps brute-force traffic off the zone's infrastructure. Raise --process_count when the wordlist is large; pass --targets to brute several domains in one run.
Reach for it after a passive pass such as subfinder has run dry. Trickest runs subbrute as a managed Recon node that writes resolved names to a file and folder. Merge with passive results, then probe with httpx. It resolves names; it does not fetch HTTP.
source github.com/TheRook/subbrute
use cases
Where subbrute fits
Brute-force names passive tools miss
Resolve a wordlist against a domain to find subdomains that never show up in certificate logs or search-engine sources.
Stay off the target's name servers
Route queries through open resolvers so brute forcing dodges rate limits and sends no direct traffic to the target's DNS.
Combine with passive enumeration
Merge subbrute's brute-forced names with a passive finder's output for a fuller subdomain set before probing.
Enumerate many domains at once
Supply a --targets file of domains and brute-force every one of them in a single pass.
reference
subbrute inputs and flags
| Name | Type | Flag | Description |
|---|---|---|---|
| target | STRING | · | Target domain to brute-force subdomains for (positional). |
| subs | FILE | --subs | A file with the list of candidate subdomain labels to try. |
| targets | FILE | --targets | A file of newline-delimited domains to brute-force in one run. |
| resolvers | FILE | --resolvers | A file of DNS resolvers; falls back to the internal resolvers.txt if empty. |
| process-count | STRING | --process_count | Number of lookup threads to run (default 8). |
| print-data | BOOLEAN | -p | Print the data from found DNS records instead of the hostname alone (default false). |
Showing key inputs. subbrute exposes 7 inputs in total.
Full flag reference (7 inputs)
| Name | Type | Flag | Description |
|---|---|---|---|
| subs | FILE | --subs | A file with the list of candidate subdomain labels. |
| target | STRING | · | Target domain to brute-force subdomains for (positional). |
| targets | FILE | --targets | A file containing a newline-delimited list of domains to brute-force. |
| verbose | BOOLEAN | --verbose | Print debug information. |
| resolvers | FILE | --resolvers | A file with a list of DNS resolvers; uses the internal resolvers.txt if empty. |
| print-data | BOOLEAN | -p | Print data from found DNS records (default false). |
| process-count | STRING | --process_count | Number of lookup threads to run (default 8). |
example
Run subbrute
# brute-force subdomains through open resolvers, 16 lookup threadssubbrute --subs /wordlists/dns/names.txt --resolvers resolvers.txt --process_count 16 example.comns1.example.commail.example.comvpn.example.comapi.example.comdev.example.comstaging.example.comautodiscover.example.comowa.example.comguidance
Choosing subbrute
Use subbrute for active subdomain brute forcing when passive sources miss guessable names. Pair with subfinder for coverage, then httpx for live hosts. Prefer aiodnsbrute when you want async resolution without open-resolver routing.
subfinder
Passive enumeration from datasets. subbrute brute-forces names; run both and merge.
aiodnsbrute
Async DNS brute-forcer. subbrute routes queries through open resolvers to stay off the target name servers.
faq
subbrute questions
related
More Recon tools
amass
Multi-source subdomain discovery; hand names to httpx.
amass-intel
OWASP Amass intel: map an organization's root domains and ranges.
assetfinder
Find domains and subdomains potentially related to a given domain.
bbot
Modular OSINT recon that chains modules from a seed target.
bevigil
CLI client for the BeVigil OSINT API, keyed by domain or app package.
cloud-enum
Multi-cloud public name enumeration for AWS, Azure, and GCP.
Run subbrute yourself
A domain and a subdomain wordlist feed subbrute, which resolves names through open resolvers and writes the discovered subdomains as output.
Facts on this page come from the live Trickest tool library.