Updated Jul 14, 2026

Recon

OWASP Amass: enumerate subdomains

Multi-source subdomain discovery; hand names to httpx.

Agent

overview

What amass does

amass is the OWASP project for attack-surface mapping. Seed a root domain with -d (or a file with -df). It pulls subdomains from many passive sources, can enable active DNS recon, and can brute-force more names against a wordlist.

Depth is the cost. You control resolvers and -dns-qps. Include or exclude sources as needed. -active and -brute reach past passive feeds. A graph directory can persist results across runs.

On Trickest, amass is the discovery stage. It writes a deduplicated name list plus a results folder. Pass that to httpx so later steps work from live hosts. Schedule the run when the surface changes.

source github.com/owasp-amass/amass

use cases

Where amass fits

Map an organization's external footprint

Enumerate subdomains of a root domain from many passive sources at once to scope an engagement or build an asset inventory.

Extend coverage with active recon and brute forcing

Enable active methods and brute forcing against a wordlist to find names that passive sources never returned, expanding the surface.

Resolve and annotate discovered names

Show IP addresses and data sources alongside each name so the output is already enriched for triage and downstream probing.

Feed a probing and scanning pipeline

Pass amass output to httpx and a scanner so the full discovered surface gets classified and tested in one workflow.

reference

amass inputs and flags

37 inputs
NameTypeFlagDescription
domainSTRING-dDomain names separated by commas (can be used multiple times).
domain-listFILE-dfPath to a file providing root domain names.
active-methodsBOOLEAN-activeEnable active recon methods.
bruteforce-flagBOOLEAN-brutePerform brute-force subdomain enumeration.
wordlist-bruteFILE-wPath to a wordlist file for brute forcing.
show-ipBOOLEAN-ipShow the IP addresses for discovered names.
print-data-sourcesBOOLEAN-srcPrint the data source next to each discovered name.
timeoutSTRING-timeoutNumber of minutes to execute the enumeration.

Showing key inputs. amass exposes 37 inputs in total.

Full flag reference (37 inputs)
NameTypeFlagDescription
portsSTRING-pPorts separated by commas (default: 443)
domainSTRING-dDomain names separated by commas (can be used multiple times)
no-altsBOOLEAN-noaltsDisable generation of altered names
passiveBOOLEAN-passiveDeprecated since passive is the default setting
show-ipBOOLEAN-ipShow the IP addresses for discovered names
timeoutSTRING-timeoutNumber of minutes to execute the enumeration
blacklistSTRING-blBlacklist of subdomain names that will not be investigated
show-ipv4BOOLEAN-ipv4Show the IPv4 addresses for discovered names
show-ipv6BOOLEAN-ipv6Show the IPv6 addresses for discovered names
domain-listFILE-dfPath to a file providing root domain names
active-methodsBOOLEAN-activeEnable active recon methods
wordlist-bruteFILE-wPath to a different wordlist file
bruteforce-flagBOOLEAN-brutePerform brute force subdomain enumeration
ini-config-fileFILE-configPath to the INI configuration file
max-dns-queriesSTRING-max-dns-queriesDeprecated flag to be replaced by dns-qps in version 4.0
no-recursive-bfBOOLEAN-norecursiveTurn off recursive brute forcing
trusted-resolverSTRING-trIP addresses of trusted DNS resolver
exclude-data-fileFILE-efPath to a file providing data sources to exclude
min-for-recursiveSTRING-min-for-recursiveSubdomain labels seen before recursive brute forcing (Default: 1)
print-data-sourcesBOOLEAN-srcPrint data sources for the discovered names
untrusted-resolverSTRING-rIP addresses of untrusted DNS resolver
exclude-source-namesSTRING-excludeData source names separated by commas to be excluded
include-data-sourcesSTRING-includeData source names separated by commas to be included
wordlist-alternationsFILE-awPath to a different wordlist file for alterations
dns-queries-per-secondSTRING-dns-qpsMaximum number of DNS queries per second
trusted-resolvers-fileSTRING-trfPath to a file providing trusted DNS resolvers
graph-database-directoryFOLDER-dirPath to the directory containing the graph database
untrusted-resolvers-fileFILE-rfPath to a file providing untrusted DNS resolvers
include-data-sources-fileFILE-ifPath to a file providing data sources to include
trusted-dns-resolvers-fileFILE-trfPath to a file providing trusted DNS resolvers
blacklisted-subdomains-fileFILE-blfPath to a file providing blacklisted subdomains
no-resolver-rate-monitoringBOOLEAN-noresolvrateDisable resolver rate monitoring
untrusted-dns-resolvers-fileFILE-rfPath to a file providing preferred DNS resolvers
already-known-subdomain-namesFILE-nfPath to a file providing already known subdomain names (from other tools/sources)
no-resolver-reliability-scoreBOOLEAN-noresolvscoreDisable resolver reliability scoring
trusted-dns-max-queries-per-secondSTRING-trqpsMaximum number of DNS queries per second for each trusted resolvers
untrusted-dns-max-queries-per-secondSTRING-rqpsMaximum number of DNS queries per second for untrusted resolvers

example

Run amass

amass · command
# active recon: brute forcing, IP addresses, and data sources for a root domainamass enum -d example.com -active -brute -ip -src
sample output
[Crtsh] www.example.com 203.0.113.10[DNSHistory] api.example.com 203.0.113.24[HackerTarget] mail.example.com 203.0.113.24[Brute Forcing] dev.example.com 203.0.113.61[Alterations] staging-api.example.com 203.0.113.61[RapidDNS] vpn.example.com 203.0.113.88[Crtsh] cdn.example.com 203.0.113.102

guidance

Choosing amass

Use amass when you want deep, multi-source subdomain discovery and are willing to tune it. For a fast, purely passive first pass, subfinder is quicker. amass finds names, so follow it with httpx to learn which are live.

subfinder

Faster passive-only discovery. amass goes deeper with active methods and brute forcing.

amass-intel

The intel subcommand for org, ASN, and CIDR discovery rather than subdomains.

assetfinder

Lightweight passive finder. amass queries more sources and adds active recon.

puredns

Resolves and brute-forces names with wildcard filtering. amass discovers and correlates from many sources; pipeline often runs amass then puredns then httpx.

faq

amass questions

Pass the root domain. amass treats `-d` as the seed and enumerates beneath it. Repeat `-d` or use `-df` for several roots. A subdomain seed only narrows the zone.

Run amass yourself

A domain feeds amass, which maps the subdomain surface and passes the names to httpx so only live hosts land as output.

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