| name | amass |
| description | Build, extend, and operate Amass — the OWASP attack surface mapping tool for subdomain enumeration, ASN/org discovery, and DNS intelligence. Use when performing external reconnaissance, passive or active subdomain enumeration, certificate transparency analysis, ASN mapping, or tracking changes in an attack surface. Use when the user asks about subdomain discovery, passive DNS, API key integration, graph visualization, Amass config files, or comparing Amass with subfinder. Covers installation, all subcommands, config, data sources, brute force, resolvers, and visualization.
|
| metadata | {"author":"redhoundinfosec","version":"1.0","repo":"https://github.com/owasp-amass/amass","stars":"12.8k"} |
amass Agent Skill
When to Use This Skill
Use this skill when:
- Enumerating subdomains for an external attack surface assessment
- Mapping ASNs and IP ranges owned by a target organization
- Performing passive DNS reconnaissance without touching the target
- Running active DNS enumeration (brute force, permutations)
- Discovering SaaS/cloud assets beyond the primary domain
- Tracking changes in an organization's external footprint over time
- Integrating with data sources (Shodan, VirusTotal, SecurityTrails) via API keys
- Visualizing the discovered graph of domains, IPs, and ASNs
What Amass Does
Amass is the OWASP project for in-depth DNS enumeration and network mapping. It combines passive techniques (passive DNS, certificate transparency, web archives, BGP routing tables, public APIs) with active techniques (brute force, DNS zone walking, certificate SAN expansion, alterations) and stores all results in a local graph database. The graph model enables cross-session change tracking and relationship visualization across domains, IPs, CIDRs, ASNs, and organizations. Compared to subfinder, Amass is slower but deeper — subfinder is optimal for speed, Amass for completeness.
Installation
go install -v github.com/owasp-amass/amass/v4/...@master
sudo snap install amass
docker pull caffix/amass
docker run --rm -v ~/.config/amass:/root/.config/amass \
caffix/amass enum -passive -d example.com
brew install amass
wget https://github.com/owasp-amass/amass/releases/latest/download/amass_Linux_amd64.zip
unzip amass_Linux_amd64.zip
sudo mv amass_Linux_amd64/amass /usr/local/bin/
amass -version
Subcommands Overview
| Subcommand | Purpose |
|---|
enum | Subdomain enumeration (passive + active) |
intel | Org/ASN/CIDR discovery from targets |
track | Change detection across sessions |
db | Query and manage local graph database |
viz | Generate graph visualizations |
enum — Subdomain Enumeration
Passive Mode (no DNS queries to target)
amass enum -passive -d example.com
amass enum -passive -d example.com -d sub.example.com
amass enum -passive -d example.com -o passive-results.txt
amass enum -passive -d example.com -config ~/.config/amass/config.yaml -o results.txt
amass enum -passive -d example.com -json passive.json
amass enum -passive -d example.com -silent -o results.txt
Active Mode (queries DNS, performs brute force)
amass enum -active -d example.com
amass enum -brute -d example.com
amass enum -brute -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
amass enum -brute -alts -d example.com -w /path/to/wordlist.txt
amass enum -brute -d example.com -w wordlist.txt -max-dns-queries 50000
amass enum -passive -d example.com -src CertSpotter,VirusTotal,Shodan
Resolver Configuration
amass enum -d example.com -r 1.1.1.1,8.8.8.8,9.9.9.9
cat > resolvers.txt << 'EOF'
1.1.1.1
8.8.8.8
8.8.4.4
9.9.9.9
64.6.64.6
208.67.222.222
EOF
amass enum -d example.com -rf resolvers.txt
amass enum -d example.com -tr 1.1.1.1,8.8.8.8
amass enum -active -d example.com -rf resolvers.txt -tr 1.1.1.1
Output and Logging
amass enum -d example.com \
-o subdomains.txt \
-json results.json \
-log amass.log
amass enum -passive -d example.com -show-graph
amass enum -d example.com -ipv4 -ipv6
intel — Organization and ASN Discovery
amass intel -org "Acme Corp"
amass intel -whois -d example.com
amass intel -asn 12345
amass intel -ip 93.184.216.34
amass intel -org "Target Corp" 2>&1 | grep -E "^[0-9]" | awk '{print $1}' > asns.txt
while read asn; do
amass intel -asn "$asn" -o "asn-${asn}-ranges.txt"
done < asns.txt
track — Change Detection
amass track -d example.com
amass track -d example.com -show new
amass track -d example.com -show lost
amass track -d example.com -config ~/.config/amass/config.yaml
db — Graph Database Operations
amass db -list
amass db -d example.com -show
amass db -d example.com -ip -show
amass db -d example.com -enum 1
amass db -names -d example.com
amass db -summary -d example.com
Database location: ~/.config/amass/amass.sqlite (configurable in config.yaml)
Configuration File
Location: ~/.config/amass/config.yaml
output_directory: /home/user/.config/amass
minimum_ttl: 1440
resolvers:
- 1.1.1.1
- 8.8.8.8
bruteforce:
enabled: true
wordlist_file: /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
recursive: true
minimum_for_recursive: 1
alterations:
enabled: true
flip_words: true
add_words: true
edit_distance: 1
scope:
domains:
- example.com
blacklist:
- www.example.com
datasources:
- name: Shodan
apikey: YOUR_SHODAN_KEY
- name: VirusTotal
apikey: YOUR_VT_KEY
- name: SecurityTrails
apikey: YOUR_ST_KEY
- name: Censys
apikey: YOUR_CENSYS_ID
secret: YOUR_CENSYS_SECRET
- name: GitHub
apikey: YOUR_GITHUB_TOKEN
- name: PassiveTotal
apikey: YOUR_PT_KEY
secret: YOUR_PT_SECRET
- name: Chaos
apikey: YOUR_CHAOS_KEY
- name: BinaryEdge
apikey: YOUR_BE_KEY
- name: URLScan
apikey: YOUR_URLSCAN_KEY
Data Sources (Passive DNS and More)
Amass integrates 50+ data sources out of the box. Key categories:
| Category | Sources |
|---|
| Certificate Transparency | crt.sh, CertSpotter, Facebook CT |
| Passive DNS | Mnemonic, Robtex, CIRCL |
| DNS Databases | VirusTotal, SecurityTrails, PassiveTotal |
| Search Engines | Google, Bing, Yahoo, Baidu, DuckDuckGo |
| Web Archives | Wayback Machine, CommonCrawl |
| Internet Scanning | Shodan, Censys, BinaryEdge |
| Code / Dev | GitHub, GitLab (search for subdomain leakage) |
| Threat Intel | AlienVault OTX, ThreatCrowd |
| BGP / Routing | BGPView, Hurricane Electric |
| DNS Wild Card / AXFR | Active zone transfer attempts |
amass enum -list-sources
Visualization
amass viz -d3 -d example.com -o graph.html
amass viz -gephi -d example.com -o graph.gexf
amass viz -graphml -d example.com -o graph.graphml
amass viz -dot -d example.com -o graph.dot
dot -Tsvg graph.dot > graph.svg
Comparison with subfinder
| Feature | Amass | subfinder |
|---|
| Speed | Slow (thorough) | Fast |
| Passive DNS sources | 50+ | 40+ |
| Active brute force | Yes (built-in) | No (external) |
| Alterations | Yes | No |
| Graph database | Yes (sqlite) | No |
| Change tracking | Yes (track) | No |
| ASN/org mapping | Yes (intel) | No |
| Memory usage | High | Low |
| Config complexity | High | Low |
| Best for | Comprehensive OSINT | Quick passive enum |
Recommended combined workflow:
subfinder -d example.com -all -o sf-results.txt
amass enum -passive -d example.com -config ~/.config/amass/config.yaml -o amass-results.txt
cat sf-results.txt amass-results.txt | sort -u > all-subs.txt
Common Workflows
Full Passive Recon
#!/bin/bash
DOMAIN=$1
OUTDIR="recon-$DOMAIN-$(date +%Y%m%d)"
mkdir -p "$OUTDIR"
amass enum -passive -d "$DOMAIN" \
-config ~/.config/amass/config.yaml \
-o "$OUTDIR/subdomains.txt" \
-json "$OUTDIR/amass-full.json" \
-log "$OUTDIR/amass.log"
echo "[+] Found $(wc -l < "$OUTDIR/subdomains.txt") subdomains"
Active + Brute Force Enumeration
amass enum -active -brute -alts \
-d example.com \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt \
-rf resolvers.txt \
-tr 1.1.1.1,8.8.8.8 \
-config ~/.config/amass/config.yaml \
-o active-enum.txt \
-json active-enum.json
Attack Surface Expansion (Intel Phase)
amass intel -org "Target Corp" | tee target-asns.txt
while read -r asn; do
amass intel -asn "$asn" | tee -a target-cidrs.txt
done < target-asns.txt
amass enum -passive -df discovered-domains.txt \
-config ~/.config/amass/config.yaml \
-o all-subs.txt
cat all-subs.txt | httpx -silent -o live-hosts.txt
Weekly Change Tracking
#!/bin/bash
amass enum -passive -d example.com \
-config ~/.config/amass/config.yaml \
-o /dev/null 2>&1
amass track -d example.com -show new > new-subs-$(date +%Y%m%d).txt
if [ -s new-subs-$(date +%Y%m%d).txt ]; then
echo "New subdomains detected:" | cat - new-subs-$(date +%Y%m%d).txt | mail -s "Amass Alert: $domain" security@company.com
fi
Troubleshooting
| Issue | Fix |
|---|
| Very slow / hanging | Normal for passive mode — Amass queries 50+ sources; use -timeout 30 |
| No results | Check API key validity; try amass enum -list-sources to see active sources |
| Wildcard DNS false positives | Amass auto-detects wildcards; if not, add domain to scope blacklist |
| High memory usage | Normal — graph DB is in-memory during run; reduce sources with -src flag |
| Database locked | Only run one Amass instance per database directory |
| Brute force slow | Use smaller wordlist; increase -max-dns-queries |
connection refused (Docker) | Mount config: -v ~/.config/amass:/root/.config/amass |
| API auth errors | Verify key format in config.yaml; test key independently |
| Resolver SERVFAIL | Use public resolvers like 1.1.1.1; avoid ISP resolvers for large scans |
Built by Red Hound InfoSec — On-demand offensive security expertise for SMBs.
20+ years of Fortune 500 experience. Penetration testing, attack surface analysis, and security consulting.
redhound.us | GitHub | Book a consultation