Updated Jul 14, 2026

Recon

Resolve wordlist subdomains a passive pass missed

Async DNS brute force for subdomains that passive sources miss.

Agent

overview

What aiodnsbrute does

aiodnsbrute resolves every entry in a wordlist against a domain, keeping many lookups in flight with asyncio. Passive enumeration only surfaces names already in certificate logs or DNS aggregators. Brute force finds names that resolve in DNS but appear in no public source.

Point --wordlist at your subdomain list and raise --max-tasks for concurrency. Pass --resolver-file so a single upstream does not bottleneck the run. Wildcard detection is on by default; use --gethostbyname when you need CNAMEs for takeover triage.

The managed Recon node takes a domain and --wordlist and writes JSON to a file and folder. Run it beside a passive finder such as subfinder, then hand resolved names to httpx. It finds names; it does not probe them.

source github.com/blark/aiodnsbrute

use cases

Where aiodnsbrute fits

Brute force subdomains a passive pass missed

Resolve a wordlist against a domain to find names that exist in DNS but are not published in certificate logs or aggregators, expanding the attack surface.

Run fast enumeration with custom resolvers

Supply a resolver file and raise max-tasks to push high concurrency through resolvers you trust, covering large wordlists quickly.

Spot subdomain-takeover candidates

Use the gethostbyname mode to return CNAMEs, which highlights dangling records worth checking for takeover before an attacker does.

Feed resolved names into a probing pipeline

Hand the JSON output to httpx and a scanner so the workflow continues against subdomains that resolve, not the whole wordlist.

reference

aiodnsbrute inputs and flags

11 inputs
NameTypeFlagDescription
domainSTRING·Domain to brute force.
wordlistFILE--wordlistWordlist to use for the brute force.
resolvers-fileFILE--resolver-fileFile of DNS resolvers, one per line; defaults to system resolvers.
max-tasksSTRING--max-tasksMaximum number of tasks to run asynchronously.
wildcardBOOLEAN--wildcardWildcard detection, enabled by default.
get-host-by-nameBOOLEAN--gethostbynameDetect CNAMEs, handy for subdomain-takeover detection.
verboseBOOLEAN--verbosityIncrease output verbosity.

Showing key inputs. aiodnsbrute exposes 11 inputs in total.

Full flag reference (11 inputs)
NameTypeFlagDescription
domainSTRING·Domain to brute force.
verboseBOOLEAN--verbosityIncrease output verbosity.
wildcardBOOLEAN--wildcardWildcard detection, enabled by default.
wordlistFILE--wordlistWordlist to use for the brute force.
max-tasksSTRING--max-tasksMaximum number of tasks to run asynchronously.
no-wildcardBOOLEAN--no-wildcardDisable wildcard detection.
resolvers-fileFILE--resolver-fileText file of DNS resolvers, one per line, comments start with #. Defaults to the system resolvers.
dns-lookup-typeBOOLEAN--queryUse DNS query lookups; faster, but does not return CNAME information. Enabled by default.
get-host-by-nameBOOLEAN--gethostbynameDetect CNAMEs, handy for potential subdomain-takeover detection.
verify-domain-nameBOOLEAN--verifyVerify the domain name is sane before starting. Enabled by default.
dont-verify-domain-nameBOOLEAN--no-verifySkip the domain-name sanity check.

example

Run aiodnsbrute

aiodnsbrute · command
# resolve a wordlist against example.com through custom resolvers at high concurrencyaiodnsbrute --wordlist /wordlists/dns-subdomains.txt --resolver-file resolvers.txt --max-tasks 1024 example.com
sample output
[*] Brute forcing example.com with a maximum of 1024 concurrent tasks[*] Wildcard detection: no catch-all record found[+] www.example.com          198.51.100.24[+] api.example.com          198.51.100.51[+] mail.example.com         203.0.113.10[+] vpn.example.com          203.0.113.42[+] staging.example.com      198.51.100.77[*] Completed! 114441 names checked, 5 subdomains found in 88.20 seconds

guidance

Choosing aiodnsbrute

Use aiodnsbrute for active, wordlist-driven subdomain discovery alongside a passive finder like subfinder. Bring a solid wordlist and a --resolver-file. Follow with httpx; aiodnsbrute does not probe hosts.

shuffledns

massdns wrapper for fast resolution and brute forcing. Heavier setup, very high throughput.

puredns

Brute forces and resolves with wildcard filtering. Prefer when accuracy at scale is the priority.

subfinder

Passive discovery only, no brute forcing. Run beside aiodnsbrute for combined coverage.

faq

aiodnsbrute questions

It actively resolves a --wordlist against the domain, so it finds subdomains that resolve in DNS but were never published in certificate logs or aggregators. Run it beside subfinder for combined coverage.

Run aiodnsbrute yourself

A domain and a wordlist feed aiodnsbrute, which resolves each candidate asynchronously and writes the discovered subdomains as a queryable output.

Facts on this page come from the live Trickest tool library.