Cheatsheet
OWASP Amass: reconnaissance
03 Oct 2026
·
10 min read
Basic Usage #
Command Structure #
bash Copy
amass [ subcommand] [ options]
amass -h
amass [ subcommand] -h
amass -version
Available Subcommands #
Subcommand
Description
enum
Perform DNS enumeration and network mapping
intel
Collect intelligence on the target organization
viz
Generate visualizations of enumeration results
track
Compare results across multiple enumerations
db
Manage the graph database
DNS Enumeration #
Basic Enumeration #
bash Copy
amass enum -d example.com
amass enum -d example.com,target.org
amass enum -df domains.txt
amass enum -passive -d example.com
amass enum -active -d example.com
Advanced Enumeration Options #
bash Copy
amass enum -v -d example.com
amass enum -d example.com -max-dns-queries 1000
amass enum -d example.com -timeout 30
amass enum -ip -d example.com
amass enum -cidr 192.168 .1.0/24 -d example.com
Output Options #
bash Copy
amass enum -d example.com -o results.txt
amass enum -d example.com -json results.json
amass enum -d example.com -dir ./amass_output
amass enum -d example.com -log amass.log
Data Source Management #
bash Copy
amass enum -list
amass enum -d example.com -exclude censys,shodan
amass enum -d example.com -include virustotal,securitytrails
amass enum -d example.com -src
Intelligence Gathering #
Organization Intelligence #
bash Copy
amass intel -org "Example Corporation"
amass intel -asn 12345
amass intel -addr 192.168 .1.1
amass intel -cidr 192.168 .1.0/24
amass intel -whois -d example.com
Advanced Intelligence Options #
bash Copy
amass intel -org "Example Corporation" -max-depth 3
amass intel -active -org "Example Corporation"
amass intel -passive -org "Example Corporation"
amass intel -org "Example Corporation" -o intel_results.txt
Brute Force and Wordlists #
DNS Brute Force #
bash Copy
amass enum -brute -d example.com
amass enum -brute -w custom_wordlist.txt -d example.com
amass enum -brute -w wordlist1.txt,wordlist2.txt -d example.com
amass enum -brute -min-for-recursive 3 -d example.com
Wordlist Management #
bash Copy
/usr/share/amass/wordlists/
/usr/share/wordlists/amass/
~/.config/amass/wordlists/
echo -e "api\n dev\n test\n staging\n www\n mail\n ftp" > custom_subs.txt
amass enum -brute -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -d example.com
Network Mapping and Visualization #
Network Discovery #
bash Copy
amass enum -d example.com -ip -cidr 192.168 .1.0/24
amass enum -d example.com -asn
amass intel -org "Example Corporation" -cidr 10.0 .0.0/8
amass enum -d example.com -ip -asn -cidr 192.168 .0.0/16
Visualization #
bash Copy
amass viz -d3 -d example.com
amass viz -gephi -d example.com
amass viz -maltego -d example.com
amass viz -d3 -d example.com -db amass.db
Graph Database Operations #
bash Copy
amass db -import results.json
amass db -export results.json -d example.com
amass db -show -d example.com
amass db -list
amass db -delete -d example.com
Advanced Techniques #
Recursive Enumeration #
bash Copy
amass enum -d example.com -recursive
amass enum -d example.com -recursive -max-depth 5
amass enum -d example.com -recursive -min-for-recursive 2
bash Copy
amass enum -d example.com -max-dns-queries 500
amass enum -d example.com -max-flow 1000
amass enum -d example.com -freq 100ms
amass enum -d example.com -timeout 60
Filtering and Scope #
bash Copy
amass enum -d example.com -include ".*\.prod\..*"
amass enum -d example.com -exclude ".*\.test\..*"
echo -e "test.example.com\n dev.example.com" > blacklist.txt
amass enum -d example.com -blacklist blacklist.txt
amass enum -d example.com -include ".*\.com$"
Nmap Integration #
bash Copy
amass enum -d example.com -o subdomains.txt
nmap -iL subdomains.txt -p 80,443 ,8080,8443 --open
amass enum -d example.com -ip| grep -oE "\b ([0-9]\\ \\ {1,3\\ \\ }\.)\\ \\ {3\\ \\ }[0-9]\\ \\ {1,3\\ \\ }\b " | sort -u > ips.txt
nmap -iL ips.txt -sV -sC
Nuclei Integration #
bash Copy
amass enum -d example.com -o subdomains.txt
nuclei -l subdomains.txt -t /path/to/nuclei-templates/
amass enum -d example.com| httpx -silent| nuclei -t /path/to/nuclei-templates/
Subfinder Integration #
bash Copy
amass enum -passive -d example.com -o amass_results.txt
subfinder -d example.com -o subfinder_results.txt
cat amass_results.txt subfinder_results.txt | sort -u > combined_results.txt
Automation Scripts #
Comprehensive Reconnaissance Script #
bash Copy
#!/bin/bash
DOMAIN = $1
OUTPUT_DIR = "amass_recon_$( date +%Y%m%d_%H%M%S) "
if [ -z "$DOMAIN " ] ; then
echo "Usage: $0 <domain>"
exit 1
fi
mkdir -p $OUTPUT_DIR
echo "[+] Starting comprehensive reconnaissance for $DOMAIN "
echo "[+] Running passive enumeration..."
amass enum -passive -d $DOMAIN -o "$OUTPUT_DIR /passive_subdomains.txt"
echo "[+] Running active enumeration with brute force..."
amass enum -active -brute -d $DOMAIN -o "$OUTPUT_DIR /active_subdomains.txt"
echo "[+] Gathering intelligence..."
amass intel -d $DOMAIN -o "$OUTPUT_DIR /intelligence.txt"
echo "[+] Combining results..."
cat "$OUTPUT_DIR /passive_subdomains.txt" "$OUTPUT_DIR /active_subdomains.txt" | sort -u > "$OUTPUT_DIR /all_subdomains.txt"
echo "[+] Generating visualization..."
amass viz -d3 -d $DOMAIN -o "$OUTPUT_DIR /visualization.html"
echo "[+] Extracting IP addresses..."
grep -oE "\b ([0-9]\\ \\ {1,3\\ \\ }\.)\\ \\ {3\\ \\ }[0-9]\\ \\ {1,3\\ \\ }\b " "$OUTPUT_DIR /all_subdomains.txt" | sort -u > "$OUTPUT_DIR /ip_addresses.txt"
echo "[+] Reconnaissance complete. Results saved in $OUTPUT_DIR /"
echo "[+] Found $( wc -l ``< "$OUTPUT_DIR /all_subdomains.txt" ) unique subdomains"
echo "[+] Found $( wc -l < "$OUTPUT_DIR /ip_addresses.txt" ) unique IP addresses"
Continuous Monitoring Script #
bash Copy
#!/bin/bash
DOMAIN = $1
INTERVAL = 3600
BASELINE_FILE = "baseline_$DOMAIN .txt"
ALERT_EMAIL = "security@company.com"
if [ -z "$DOMAIN " ] ; then
echo "Usage: $0 < domain> ``"
exit 1
fi
# Create baseline if it doesn't exist
if [ ! -f " $BASELINE_FILE " ]; then
echo " [ +] Creating baseline for $DOMAIN "
amass enum -passive -d $DOMAIN -o $BASELINE_FILE
fi
while true; do
TIMESTAMP=$( date +%Y%m%d_%H%M%S)
CURRENT_FILE=" current_$\ \ \ \ { DOMAIN\ \ \ \ } _$\ \ \ \ { TIMESTAMP\ \ \ \ } .txt"
echo " [ +] Running enumeration at $( date ) "
amass enum -passive -d $DOMAIN -o $CURRENT_FILE
# Compare with baseline
NEW_SUBDOMAINS=$( comm -13 < ( sort $BASELINE_FILE) < ( sort $CURRENT_FILE) )
if [ ! -z " $NEW_SUBDOMAINS " ]; then
echo " [ ! ] New subdomains discovered:"
echo " $NEW_SUBDOMAINS "
# Send alert email
echo " New subdomains discovered for $DOMAIN : $NEW_SUBDOMAINS "|\
mail -s " Amass Alert: New Subdomains for $DOMAIN " $ALERT_EMAIL
# Update baseline
cat $BASELINE_FILE $CURRENT_FILE |sort -u > temp_baseline.txt
mv temp_baseline.txt $BASELINE_FILE
fi
# Clean up
rm $CURRENT_FILE
echo " [ +] Sleeping for $INTERVAL seconds.. ."
sleep $INTERVAL
done
Multi-Domain Assessment #
bash Copy
#!/bin/bash
DOMAINS_FILE = $1
OUTPUT_BASE = "multi_domain_$( date +%Y%m%d_%H%M%S) "
if [ -z "$DOMAINS_FILE " ] ; then
echo "Usage: $0 <domains_file>"
exit 1
fi
mkdir -p $OUTPUT_BASE
echo "[+] Starting multi-domain assessment"
while read domain; do
if [ ! -z "$domain " ] ; then
echo "[+] Processing $domain "
domain_dir = "$OUTPUT_BASE /$domain "
mkdir -p "$domain_dir "
amass enum -passive -d $domain -o "$domain_dir /passive.txt"
amass enum -active -d $domain -o "$domain_dir /active.txt"
amass intel -d $domain -o "$domain_dir /intel.txt"
cat "$domain_dir /passive.txt" "$domain_dir /active.txt" | sort -u > "$domain_dir /all_subdomains.txt"
echo "[+] Found $( wc -l < "$domain_dir /all_subdomains.txt" ) subdomains for $domain "
fi
done < $DOMAINS_FILE
echo "[+] Generating summary report..."
echo "Multi-Domain Assessment Summary" > "$OUTPUT_BASE /summary.txt"
echo "===============================" >> "$OUTPUT_BASE /summary.txt"
echo "" >> "$OUTPUT_BASE /summary.txt"
for domain_dir in $OUTPUT_BASE /*/; do
domain = $( basename "$domain_dir " )
if [ -f "$domain_dir /all_subdomains.txt" ] ; then
count = $( wc -l < "$domain_dir /all_subdomains.txt" )
echo "$domain : $count subdomains" >> "$OUTPUT_BASE /summary.txt"
fi
done
echo "[+] Multi-domain assessment complete. Results in $OUTPUT_BASE /"
Resource Management #
bash Copy
amass enum -d example.com -max-dns-queries 2000 -max-flow 2000
amass enum -d example.com -passive -max-dns-queries 500
amass enum -d example.com -active -brute -max-dns-queries 5000 -timeout 10
Configuration Validation #
bash Copy
amass enum -config ~/.config/amass/config.ini -list
amass enum -d example.com -src -v| grep -i "api\|key\|auth"
amass enum -list| grep -E "(Available|Enabled)"
Best Practices #
Reconnaissance Strategy #
Start with passive enumeration : Minimize detection risk
Use multiple data sources : Combine different intelligence sources
Implement rate limiting : Avoid overwhelming target infrastructure
Regular monitoring : Set up continuous subdomain monitoring
Validate results : Verify discovered assets are legitimate
Data Management #
bash Copy
amass db -show
amass db -delete -d old_domain.com
cp ~/.config/amass/amass.db backup_$( date +%Y%m%d) .db
amass db -export json_results.json -d example.com
amass viz -d3 -d example.com -o visualization.html
Quick approaches #
bash Copy
amass subs -names -ipv4 -d target.com > ~/engagements/subdomains_ipv4.txt
amass subs -names -ipv4 -d target.com | awk '{print $2}' | sort -u > ~/engagements/ips_only.txt
amass subs -summary -d target.com | grep -E '^ASN:' | sed -E 's/^ASN: ([0-9]+).*/\1/' | sort -u > ~/engagements/asns.txt
amass subs -summary -d target.com | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/[0-9]+' | awk '{print $1}' | sort -u > ~/engagements/netblocks.txt
amass track -d target.com
amass subs -names -d target.com | httpx -silent -status-code -title > ~/engagements/live_hosts.txt
amass subs -names -ipv4 -d target.com | awk '{print $2}' | sort -u | nmap -iL - -T4 --open -oN ~/engagements/nmap.txt
amass subs -names -d target.com | nuclei -silent -o ~/engagements/nuclei.txt