loading
loading
Recon
DNS subdomain brute force routed through open resolvers.
overview
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
Resolve a wordlist against a domain to find subdomains that never show up in certificate logs or search-engine sources.
Route queries through open resolvers so brute forcing dodges rate limits and sends no direct traffic to the target's DNS.
Merge subbrute's brute-forced names with a passive finder's output for a fuller subdomain set before probing.
Supply a --targets file of domains and brute-force every one of them in a single pass.
reference
| 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.
| 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
# 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
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.
Passive enumeration from datasets. subbrute brute-forces names; run both and merge.
Async DNS brute-forcer. subbrute routes queries through open resolvers to stay off the target name servers.
faq
related
Multi-source subdomain discovery; hand names to httpx.
Find domains and subdomains potentially related to a given domain.
CLI client for the BeVigil OSINT API, keyed by domain or app package.
Multi-cloud public name enumeration for AWS, Azure, and GCP.
List assets from multiple cloud providers in one inventory.
Active multi-technique DNS enumeration for assessments.
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.