OWASP Amass 使用手册¶
简介¶
OWASP Amass 是目前最强大的子域名枚举和网络映射工具,由 OWASP(开放Web应用安全项目)维护。
核心特性¶
🔍 多源情报收集 - 整合100+数据源(DNS、证书、搜索引擎、API等)
🌐 主动+被动枚举 - 结合主动探测和被动信息收集
📊 深度分析 - ASN、IP、CIDR、关系映射
🗺️ 网络拓扑 - 自动绘制目标网络基础设施
💾 数据持久化 - 内置图数据库存储
🎯 精准控制 - 黑白名单、速率限制、递归深度
📈 可视化 - 支持导出为Maltego、GraphViz等格式
与其他工具对比¶
工具 |
速度 |
数据源 |
主动探测 |
可视化 |
推荐场景 |
|---|---|---|---|---|---|
Amass |
⭐⭐⭐ |
⭐⭐⭐⭐⭐ |
✅ |
✅ |
深度侦察、Bug Bounty |
Subfinder |
⭐⭐⭐⭐⭐ |
⭐⭐⭐⭐ |
❌ |
❌ |
快速枚举 |
DNSRecon |
⭐⭐⭐⭐ |
⭐⭐ |
✅ |
❌ |
DNS审计 |
Gobuster |
⭐⭐⭐⭐⭐ |
⭐ |
✅ |
❌ |
暴力破解 |
工作原理¶
Amass 通过以下方式收集信息:
被动信息收集
证书透明度日志 (crt.sh)
搜索引擎 (Google, Bing, Baidu)
威胁情报平台 (VirusTotal, AlienVault)
DNS数据库 (SecurityTrails, DNSDumpster)
Web档案 (Wayback Machine, CommonCrawl)
主动DNS枚举
暴力破解子域名
区域传送测试
DNS记录查询
反向DNS查询
网络映射
ASN枚举
IP段识别
CIDR范围确定
关系图构建
安装¶
预编译二进制(推荐)¶
# 下载最新版本
# 访问 https://github.com/owasp-amass/amass/releases
# Linux AMD64
wget https://github.com/owasp-amass/amass/releases/download/v4.2.0/amass_Linux_amd64.zip
unzip amass_Linux_amd64.zip
sudo mv amass /usr/local/bin/
# macOS ARM64
wget https://github.com/owasp-amass/amass/releases/download/v4.2.0/amass_Darwin_arm64.zip
unzip amass_Darwin_arm64.zip
sudo mv amass /usr/local/bin/
Kali Linux / Debian¶
# 从官方仓库安装
sudo apt update
sudo apt install amass
# 或使用snap
sudo snap install amass
macOS¶
# 使用Homebrew
brew install amass
Docker¶
# 拉取镜像
docker pull caffix/amass
# 运行
docker run -v ~/.config/amass:/root/.config/amass caffix/amass enum -d example.com
使用Go安装¶
# 需要Go 1.20+
go install -v github.com/owasp-amass/amass/v4/...@master
从源码编译¶
# 克隆仓库
git clone https://github.com/owasp-amass/amass.git
cd amass
# 编译
go install ./...
# 验证
amass -version
验证安装¶
amass -version
# 输出: amass version v4.x.x
amass -h
核心概念¶
子命令架构¶
Amass 使用子命令架构,每个子命令专注特定功能:
子命令 |
功能 |
用途 |
|---|---|---|
|
情报收集 |
发现根域名和ASN |
|
子域名枚举 |
主要枚举功能 |
|
可视化 |
生成网络拓扑图 |
|
追踪变化 |
监控域名变化 |
|
数据库管理 |
查询和管理数据 |
数据源类型¶
证书透明度 - crt.sh, Google CT, Censys
DNS服务 - DNS查询、区域传送
搜索引擎 - Google, Bing, Baidu, Yahoo
Web档案 - Archive.org, CommonCrawl
威胁情报 - VirusTotal, AlienVault OTX
API服务 - SecurityTrails, Shodan, Censys
暴力破解 - 字典、排列组合、变换
枚举技术¶
被动枚举 (
-passive) - 仅使用公开数据源主动枚举 (默认) - DNS查询 + 数据源
暴力破解 (
-brute) - 字典攻击递归枚举 (
-r) - 递归查找子域名反向DNS - IP到域名映射
子命令详解¶
1. intel - 情报收集¶
发现目标组织的根域名和ASN
# 基本语法
amass intel [选项]
常用选项¶
参数 |
说明 |
示例 |
|---|---|---|
|
组织名称 |
|
|
ASN编号 |
|
|
CIDR范围 |
|
|
IP地址 |
|
|
已知域名 |
|
|
WHOIS查询 |
|
|
显示IP地址 |
|
|
指定端口 |
|
使用示例¶
# 根据组织名称查找域名
amass intel -org "Google LLC"
# 查找ASN相关域名
amass intel -asn 15169
# 根据CIDR查找
amass intel -cidr 8.8.8.0/24
# 反向WHOIS查找
amass intel -d google.com -whois
# 显示IP地址
amass intel -org "Example Inc" -addr
# 组合查询
amass intel -org "Example Inc" -whois -addr -o intel_results.txt
2. enum - 子域名枚举¶
核心枚举功能,最常用的子命令
# 基本语法
amass enum [选项]
核心参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
目标域名(必需) |
|
|
域名列表文件 |
|
|
启用暴力破解 |
|
|
暴力破解字典 |
|
|
字典模式 |
|
|
主动扫描 |
|
|
被动模式 |
|
|
黑名单 |
|
|
黑名单文件 |
|
|
包含域名 |
|
|
排除域名 |
|
输出参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
输出文件 |
|
|
输出目录 |
|
|
JSON输出 |
|
|
显示IP地址 |
|
|
显示数据源 |
|
|
详细输出 |
|
|
静默模式 |
|
高级参数¶
参数 |
说明 |
示例 |
|---|---|---|
|
DNS解析器 |
|
|
解析器文件 |
|
|
端口扫描 |
|
|
网络过滤 |
|
|
超时时间 |
|
|
DNS查询限制 |
|
|
递归深度 |
|
|
子域名变体 |
|
|
递归触发阈值 |
|
数据源控制¶
参数 |
说明 |
示例 |
|---|---|---|
|
配置文件 |
|
|
脚本目录 |
|
|
禁用递归 |
|
|
禁用变体 |
|
使用示例¶
# 基本枚举
amass enum -d example.com
# 被动模式(快速)
amass enum -passive -d example.com -o passive.txt
# 主动模式(深度)
amass enum -active -d example.com -o active.txt
# 暴力破解模式
amass enum -brute -d example.com -w wordlist.txt
# 多域名枚举
amass enum -df domains.txt -o results.txt
# 显示IP和来源
amass enum -d example.com -ip -src -o detailed.txt
# 排除子域名
amass enum -d example.com -exclude test.example.com,dev.example.com
# 使用配置文件
amass enum -d example.com -config ~/.config/amass/config.yaml
# 限制递归深度
amass enum -d example.com -max-depth 2
# 完整参数示例
amass enum -active -brute -d example.com \
-w wordlist.txt \
-ip -src \
-o results.txt \
-json results.json \
-dir ./amass_output \
-v
3. viz - 可视化¶
生成网络拓扑图和关系图
# 基本语法
amass viz [选项]
参数说明¶
参数 |
说明 |
示例 |
|---|---|---|
|
域名 |
|
|
D3.js HTML文件 |
|
|
Graphviz DOT文件 |
|
|
GEXF格式(Gephi) |
|
|
Graphistry JSON |
|
|
Maltego CSV |
|
|
输出文件 |
|
|
数据库目录 |
|
使用示例¶
# 生成D3.js可视化
amass viz -d example.com -d3 -o graph.html
# 生成Graphviz DOT文件
amass viz -d example.com -dot | dot -Tpng -o graph.png
# 导出Maltego格式
amass viz -d example.com -maltego -o maltego.csv
# 导出GEXF(用于Gephi)
amass viz -d example.com -gexf -o network.gexf
# 指定数据库目录
amass viz -d example.com -d3 -dir ./amass_data -o viz.html
4. track - 变化追踪¶
监控域名变化,对比历史数据
# 基本语法
amass track [选项]
参数说明¶
参数 |
说明 |
示例 |
|---|---|---|
|
域名 |
|
|
起始时间 |
|
|
输出文件 |
|
|
数据库目录 |
|
使用示例¶
# 跟踪变化
amass track -d example.com
# 对比历史数据
amass track -d example.com -since "2024-01-01"
# 保存变化记录
amass track -d example.com -o changes.txt
# 持续监控(配合cron)
*/6 * * * amass track -d example.com -o /var/log/amass/changes_$(date +\%Y\%m\%d).txt
5. db - 数据库管理¶
查询和管理Amass数据库
# 基本语法
amass db [选项]
参数说明¶
参数 |
说明 |
示例 |
|---|---|---|
|
域名 |
|
|
数据库目录 |
|
|
列出所有枚举 |
|
|
显示域名 |
|
|
显示枚举详情 |
|
|
导入数据 |
|
|
时间过滤 |
|
使用示例¶
# 列出所有枚举
amass db -list
# 查看域名数据
amass db -d example.com -names
# 显示详细信息
amass db -d example.com -show
# 导入数据
amass db -import amass_results.json
# 按时间过滤
amass db -d example.com -since "2024-01-01" -names
# 指定数据库目录
amass db -dir /path/to/db -d example.com -names
基本用法¶
快速开始¶
# 最简单的使用
amass enum -d example.com
# 被动模式(快速,无DNS查询)
amass enum -passive -d example.com
# 主动模式(深度扫描)
amass enum -active -d example.com
# 暴力破解模式
amass enum -brute -d example.com
常用组合¶
# 被动 + 保存结果
amass enum -passive -d example.com -o passive_results.txt
# 主动 + IP信息
amass enum -active -d example.com -ip -o active_with_ip.txt
# 暴力 + 自定义字典
amass enum -brute -d example.com -w /opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
# 多域名 + JSON输出
amass enum -df domains.txt -json results.json
# 完整扫描
amass enum -active -brute -d example.com -w wordlist.txt -ip -src -o full_scan.txt
高级功能¶
1. 递归枚举¶
# 启用递归(自动发现子域名的子域名)
amass enum -d example.com -r
# 限制递归深度
amass enum -d example.com -r -max-depth 2
# 设置递归触发阈值
amass enum -d example.com -r -min-for-recursive 5
2. 子域名变体¶
# 启用变体生成
amass enum -d example.com -alts
# 变体包括:
# - 字符替换(o -> 0)
# - 连字符变化
# - 常见前缀后缀
3. 网络范围限制¶
# 只显示特定网络范围内的结果
amass enum -d example.com -nf 192.168.0.0/16
# 排除特定IP范围
amass enum -d example.com -nf -10.0.0.0/8
4. 黑名单控制¶
# 排除特定子域名
amass enum -d example.com -bl test.example.com,dev.example.com
# 使用黑名单文件
cat > blacklist.txt << EOF
test.example.com
dev.example.com
staging.example.com
EOF
amass enum -d example.com -blf blacklist.txt
5. 自定义DNS解析器¶
# 使用特定DNS服务器
amass enum -d example.com -r 8.8.8.8,1.1.1.1,9.9.9.9
# 使用解析器列表文件
cat > resolvers.txt << EOF
8.8.8.8
1.1.1.1
9.9.9.9
208.67.222.222
EOF
amass enum -d example.com -rf resolvers.txt
数据源配置¶
配置文件¶
Amass 使用 YAML 配置文件管理API密钥和数据源。
配置文件位置¶
# Linux/macOS
~/.config/amass/config.yaml
# Windows
%USERPROFILE%\AppData\Local\amass\config.yaml
生成配置模板¶
# 生成默认配置
amass enum -config /dev/null -show
配置文件示例¶
# ~/.config/amass/config.yaml
# 解析器配置
resolvers:
- 8.8.8.8
- 1.1.1.1
- 9.9.9.9
# 数据源配置
datasources:
# AlienVault OTX
- name: AlienVault
key: your_api_key_here
# BinaryEdge
- name: BinaryEdge
key: your_api_key_here
# C99
- name: C99
key: your_api_key_here
# Censys
- name: Censys
credentials:
apikey: your_api_id
secret: your_api_secret
# Chaos
- name: Chaos
key: your_api_key_here
# CIRCL
- name: CIRCL
credentials:
username: your_username
password: your_password
# Facebook
- name: FacebookCT
key: your_app_id
secret: your_app_secret
# GitHub
- name: GitHub
key: your_personal_access_token
# Hunter
- name: Hunter
key: your_api_key_here
# IPinfo
- name: IPinfo
key: your_api_key_here
# NetworksDB
- name: NetworksDB
key: your_api_key_here
# PassiveTotal
- name: PassiveTotal
credentials:
username: your_username
apikey: your_api_key
# SecurityTrails
- name: SecurityTrails
key: your_api_key_here
# Shodan
- name: Shodan
key: your_api_key_here
# Spyse
- name: Spyse
key: your_api_key_here
# Twitter
- name: Twitter
credentials:
apikey: your_api_key
secret: your_api_secret
bearer_token: your_bearer_token
# URLScan
- name: URLScan
key: your_api_key_here
# VirusTotal
- name: VirusTotal
key: your_api_key_here
# WhoisXML API
- name: WhoisXMLAPI
key: your_api_key_here
# ZETAlytics
- name: ZETAlytics
key: your_api_key_here
# 暴力破解配置
bruteforce:
enabled: true
recursive: true
minimum_for_recursive: 3
wordlists:
- /path/to/wordlist1.txt
- /path/to/wordlist2.txt
# 数据库配置
database: /path/to/amass_db
# 输出目录
output_directory: /path/to/output
# 最大DNS查询数
max_dns_queries: 20000
# 超时设置
timeout: 30
使用配置文件¶
# 使用配置文件
amass enum -d example.com -config ~/.config/amass/config.yaml
免费API密钥获取¶
服务 |
免费额度 |
注册地址 |
|---|---|---|
VirusTotal |
500/天 |
https://www.virustotal.com/gui/join-us |
SecurityTrails |
50/月 |
https://securitytrails.com/app/signup |
Shodan |
1次性100积分 |
https://account.shodan.io/register |
Censys |
250/月 |
https://censys.io/register |
GitHub |
5000/小时 |
https://github.com/settings/tokens |
AlienVault |
10000/月 |
https://otx.alienvault.com/ |
Hunter |
25/月 |
https://hunter.io/users/sign_up |
URLScan |
无限制 |
https://urlscan.io/user/signup |
实战场景¶
场景1:Bug Bounty快速侦察¶
#!/bin/bash
# Bug Bounty 快速侦察脚本
TARGET=$1
OUTPUT_DIR="amass_${TARGET}_$(date +%Y%m%d)"
mkdir -p $OUTPUT_DIR
cd $OUTPUT_DIR
echo "[*] Starting Bug Bounty reconnaissance for $TARGET"
# 1. 被动枚举(快速)
echo "[+] Phase 1: Passive enumeration"
amass enum -passive -d $TARGET -o passive.txt -json passive.json
# 2. 主动枚举
echo "[+] Phase 2: Active enumeration"
amass enum -active -d $TARGET -o active.txt -json active.json
# 3. 暴力破解
echo "[+] Phase 3: Brute force"
amass enum -brute -d $TARGET \
-w /opt/SecLists/Discovery/DNS/subdomains-top1million-20000.txt \
-o brute.txt
# 4. 合并去重
echo "[+] Phase 4: Merging results"
cat passive.txt active.txt brute.txt | sort -u > all_subdomains.txt
# 5. 提取活跃子域名(需要httpx)
echo "[+] Phase 5: Finding live subdomains"
cat all_subdomains.txt | httpx -silent -o live_subdomains.txt
# 6. 生成可视化
echo "[+] Phase 6: Generating visualization"
amass viz -d $TARGET -d3 -o network_graph.html
echo "[+] Reconnaissance complete!"
echo "[+] Total subdomains: $(wc -l < all_subdomains.txt)"
echo "[+] Live subdomains: $(wc -l < live_subdomains.txt)"
场景2:企业资产发现¶
#!/bin/bash
# 企业资产发现脚本
ORG_NAME="Example Inc"
OUTPUT_DIR="intel_$(date +%Y%m%d)"
mkdir -p $OUTPUT_DIR
echo "[*] Enterprise Asset Discovery for: $ORG_NAME"
# 1. 情报收集 - 发现根域名
echo "[+] Step 1: Discovering root domains"
amass intel -org "$ORG_NAME" -whois -o $OUTPUT_DIR/domains.txt
# 2. 对每个域名进行深度枚举
echo "[+] Step 2: Deep enumeration of each domain"
while read domain; do
echo "[*] Enumerating: $domain"
amass enum -active -brute -d $domain \
-o $OUTPUT_DIR/${domain}_results.txt \
-json $OUTPUT_DIR/${domain}_results.json
done < $OUTPUT_DIR/domains.txt
# 3. 合并所有结果
cat $OUTPUT_DIR/*_results.txt | sort -u > $OUTPUT_DIR/all_assets.txt
# 4. ASN枚举
echo "[+] Step 3: ASN enumeration"
amass intel -org "$ORG_NAME" -asn -o $OUTPUT_DIR/asn_info.txt
# 5. IP范围收集
echo "[+] Step 4: IP range collection"
amass intel -org "$ORG_NAME" -cidr -o $OUTPUT_DIR/ip_ranges.txt
# 6. 生成报告
echo "[+] Step 5: Generating report"
cat > $OUTPUT_DIR/report.md << EOF
# Asset Discovery Report: $ORG_NAME
**Date:** $(date)
## Summary
- Root domains found: $(wc -l < $OUTPUT_DIR/domains.txt)
- Total subdomains: $(wc -l < $OUTPUT_DIR/all_assets.txt)
## Root Domains
$(cat $OUTPUT_DIR/domains.txt)
## ASN Information
$(cat $OUTPUT_DIR/asn_info.txt)
## IP Ranges
$(cat $OUTPUT_DIR/ip_ranges.txt)
EOF
echo "[+] Asset discovery complete! Report: $OUTPUT_DIR/report.md"
场景3:持续监控¶
#!/bin/bash
# 域名变化监控脚本
DOMAIN=$1
ALERT_EMAIL="admin@example.com"
# 执行新枚举
amass enum -d $DOMAIN -o /tmp/current_scan.txt
# 检查变化
CHANGES=$(amass track -d $DOMAIN)
if [ ! -z "$CHANGES" ]; then
echo "New subdomains discovered:"
echo "$CHANGES"
# 发送告警邮件
echo "$CHANGES" | mail -s "New subdomains found for $DOMAIN" $ALERT_EMAIL
fi
场景4:深度网络映射¶
#!/bin/bash
# 深度网络映射
TARGET=$1
echo "[*] Deep network mapping for $TARGET"
# 1. 完整枚举
amass enum -active -brute -alts -d $TARGET \
-w /opt/SecLists/Discovery/DNS/dns-Jhaddix.txt \
-ip -src \
-json full_enum.json \
-o full_enum.txt
# 2. ASN发现
echo "[+] Discovering ASNs"
cat full_enum.txt | while read subdomain; do
ip=$(dig +short $subdomain | head -1)
if [ ! -z "$ip" ]; then
whois $ip | grep -i "origin" | awk '{print $NF}'
fi
done | sort -u > asns.txt
# 3. 对每个ASN进行枚举
cat asns.txt | while read asn; do
echo "[*] Enumerating ASN: $asn"
amass intel -asn $asn -o asn_${asn}_domains.txt
done
# 4. 生成网络拓扑图
amass viz -d $TARGET -d3 -o network_topology.html
echo "[+] Network mapping complete!"
场景5:多目标批量扫描¶
#!/bin/bash
# 批量域名扫描
DOMAIN_LIST=$1
OUTPUT_BASE="batch_scan_$(date +%Y%m%d)"
mkdir -p $OUTPUT_BASE
# 被动模式批量扫描(快速)
echo "[*] Passive scan of all domains"
amass enum -passive -df $DOMAIN_LIST -o $OUTPUT_BASE/passive_all.txt
# 对每个域名进行深度扫描
cat $DOMAIN_LIST | while read domain; do
echo "[*] Deep scan: $domain"
amass enum -active -brute -d $domain \
-w /opt/SecLists/Discovery/DNS/subdomains-top1million-5000.txt \
-o $OUTPUT_BASE/${domain}_results.txt \
-json $OUTPUT_BASE/${domain}_results.json &
# 限制并发数
if [[ $(jobs -r -p | wc -l) -ge 5 ]]; then
wait -n
fi
done
wait
# 统计结果
echo "[+] Scan complete!"
for file in $OUTPUT_BASE/*_results.txt; do
domain=$(basename $file _results.txt)
count=$(wc -l < $file)
echo " $domain: $count subdomains"
done
API集成¶
配置API密钥¶
# 编辑配置文件
vim ~/.config/amass/config.yaml
# 或使用环境变量
export AMASS_CONFIG=~/.config/amass/config.yaml
推荐API服务¶
必备API(免费)¶
datasources:
# VirusTotal - 必备
- name: VirusTotal
key: YOUR_VT_API_KEY
# GitHub - 强烈推荐
- name: GitHub
key: YOUR_GITHUB_TOKEN
# AlienVault - 推荐
- name: AlienVault
key: YOUR_OTX_KEY
# URLScan - 推荐
- name: URLScan
key: YOUR_URLSCAN_KEY
付费API(效果显著)¶
# SecurityTrails - 最有价值
- name: SecurityTrails
key: YOUR_ST_KEY
# Censys - 推荐
- name: Censys
credentials:
apikey: YOUR_CENSYS_ID
secret: YOUR_CENSYS_SECRET
# Shodan - 推荐
- name: Shodan
key: YOUR_SHODAN_KEY
数据库管理¶
数据库位置¶
# 默认位置
~/.config/amass/amass.sqlite
# 查看数据库
amass db -list
数据库操作¶
# 列出所有枚举
amass db -list
# 查看特定域名数据
amass db -d example.com -names
# 显示详细信息
amass db -d example.com -show
# 按时间过滤
amass db -d example.com -since "2024-01-01" -names
# 导出数据
amass db -d example.com -names -o exported_domains.txt
# 清理旧数据(小心!)
rm ~/.config/amass/amass.sqlite
导入导出¶
# 导出JSON
amass enum -d example.com -json export.json
# 导入数据
amass db -import export.json
# 导出可视化数据
amass viz -d example.com -gexf -o network.gexf
可视化分析¶
D3.js交互图¶
# 生成HTML可视化
amass viz -d example.com -d3 -o graph.html
# 在浏览器中打开
open graph.html # macOS
xdg-open graph.html # Linux
Graphviz图形¶
# 生成DOT文件
amass viz -d example.com -dot | dot -Tpng -o network.png
# 生成SVG
amass viz -d example.com -dot | dot -Tsvg -o network.svg
# 生成PDF
amass viz -d example.com -dot | dot -Tpdf -o network.pdf
Maltego集成¶
# 导出Maltego CSV
amass viz -d example.com -maltego -o maltego_import.csv
# 在Maltego中导入
# Transform Hub -> Import -> CSV
Gephi可视化¶
# 导出GEXF格式
amass viz -d example.com -gexf -o network.gexf
# 在Gephi中打开
# File -> Open -> network.gexf
性能优化¶
1. 并发控制¶
# 增加DNS查询限制(更快但可能被限速)
amass enum -d example.com -max-dns-queries 50000
# 减少查询(更慢但更稳定)
amass enum -d example.com -max-dns-queries 5000
2. 超时设置¶
# 设置DNS超时
amass enum -d example.com -timeout 10
# 被动模式(最快)
amass enum -passive -d example.com
3. 资源限制¶
# 限制递归深度
amass enum -d example.com -max-depth 1
# 禁用某些数据源
amass enum -d example.com -nolocaldb -noalts
4. 分布式扫描¶
# 分割域名列表
split -l 10 domains.txt chunk_
# 并行执行
for chunk in chunk_*; do
amass enum -df $chunk -o ${chunk}_results.txt &
done
wait
# 合并结果
cat chunk_*_results.txt | sort -u > final_results.txt
输出格式¶
文本格式¶
# 基本文本输出
amass enum -d example.com -o results.txt
# 带IP地址
amass enum -d example.com -ip -o results_with_ip.txt
# 带数据源
amass enum -d example.com -src -o results_with_source.txt
# 详细输出
amass enum -d example.com -ip -src -v -o detailed_results.txt
JSON格式¶
# JSON输出
amass enum -d example.com -json results.json
# JSON结构
{
"name": "subdomain.example.com",
"domain": "example.com",
"addresses": [
{
"ip": "192.0.2.1",
"cidr": "192.0.2.0/24",
"asn": 15169,
"desc": "GOOGLE"
}
],
"tag": "dns",
"sources": ["Crtsh", "VirusTotal"]
}
处理JSON输出¶
# 提取所有子域名
cat results.json | jq -r '.name' | sort -u
# 提取IP地址
cat results.json | jq -r '.addresses[].ip' | sort -u
# 按数据源分类
cat results.json | jq -r '.sources[]' | sort | uniq -c
# 提取ASN
cat results.json | jq -r '.addresses[].asn' | sort -u
# 生成CSV
cat results.json | jq -r '[.name, .addresses[0].ip, .tag] | @csv'
实战案例¶
案例1:快速Bug Bounty侦察¶
# 15分钟快速侦察
amass enum -passive -d target.com -o quick_recon.txt
cat quick_recon.txt | httpx -silent -o live_targets.txt
cat live_targets.txt | nuclei -t cves/ -o vulnerabilities.txt
案例2:完整资产清点¶
# 企业完整资产发现(耗时较长)
# 1. 发现根域名
amass intel -org "Target Corp" -whois -o root_domains.txt
# 2. 深度枚举
cat root_domains.txt | while read domain; do
amass enum -active -brute -alts -d $domain \
-config ~/.config/amass/config.yaml \
-o ${domain}_assets.txt
done
# 3. 网络映射
cat *_assets.txt | sort -u | while read sub; do
amass viz -d $sub -d3
done
案例3:APT威胁情报¶
# 发现攻击者基础设施
# 已知IOC: attacker-domain.com
# 1. 枚举攻击域名
amass enum -active -d attacker-domain.com -o attacker_infra.txt
# 2. 发现关联ASN
cat attacker_infra.txt | while read domain; do
ip=$(dig +short $domain | head -1)
whois $ip | grep -i origin
done | sort -u
# 3. 扩展发现
amass intel -asn <ASN_NUMBER> -o related_domains.txt
与其他工具组合¶
与Subfinder组合¶
# Amass深度 + Subfinder速度
subfinder -d target.com -silent -o subfinder.txt
amass enum -passive -d target.com -o amass.txt
cat subfinder.txt amass.txt | sort -u > all_subs.txt
与httpx组合¶
# 发现 -> 验证活跃
amass enum -d target.com -o subs.txt
cat subs.txt | httpx -silent -title -tech-detect -o live_subs.txt
与Nuclei组合¶
# 侦察 -> 漏洞扫描
amass enum -d target.com -o targets.txt
cat targets.txt | httpx -silent | nuclei -t cves/
与Nmap组合¶
# 域名发现 -> 端口扫描
amass enum -d target.com -ip -o subs_with_ip.txt
cat subs_with_ip.txt | awk '{print $2}' | sort -u | nmap -iL - -p-
完整工作流¶
#!/bin/bash
# 完整Bug Bounty工作流
TARGET=$1
# 1. 子域名发现
amass enum -passive -d $TARGET -o subs.txt
subfinder -d $TARGET -silent >> subs.txt
cat subs.txt | sort -u > unique_subs.txt
# 2. 活跃性检测
cat unique_subs.txt | httpx -silent -title -tech-detect -o live.txt
# 3. 端口扫描
cat live.txt | awk '{print $1}' | nmap -iL - -p- -oA nmap_scan
# 4. 漏洞扫描
cat live.txt | nuclei -t cves/ -o vulns.txt
# 5. 截图
cat live.txt | aquatone -out screenshots/
echo "[+] Workflow complete!"
常见问题¶
1. 速度太慢怎么办?¶
# 使用被动模式
amass enum -passive -d example.com
# 增加DNS查询限制
amass enum -d example.com -max-dns-queries 50000
# 禁用递归和变体
amass enum -d example.com -norecursive -noalts
2. 内存占用过高¶
# 限制并发
amass enum -d example.com -max-dns-queries 5000
# 分批处理
# 不要一次扫描太多域名
3. API配额用尽¶
# 使用被动模式减少API调用
amass enum -passive -d example.com
# 禁用特定数据源
# 在config.yaml中注释掉已用尽的API
4. 如何提高结果准确性?¶
# 使用主动模式验证
amass enum -active -d example.com
# 配置多个DNS解析器
amass enum -d example.com -rf resolvers.txt
# 使用配置文件启用所有数据源
amass enum -d example.com -config config.yaml
5. 数据库错误¶
# 删除损坏的数据库
rm ~/.config/amass/amass.sqlite
# 重新初始化
amass enum -d example.com
最佳实践¶
✅ 推荐做法¶
配置API密钥
至少配置VirusTotal、GitHub、AlienVault
定期检查API配额
分阶段扫描
# 第一阶段:被动快速扫描 amass enum -passive -d target.com -o passive.txt # 第二阶段:主动验证 amass enum -active -d target.com -o active.txt # 第三阶段:暴力破解 amass enum -brute -d target.com -w wordlist.txt
保存配置和数据
使用配置文件管理API
定期备份数据库
保存JSON格式便于分析
监控变化
# 定期运行track命令 amass track -d target.com
结合其他工具
Amass负责发现
httpx验证活跃性
Nuclei检测漏洞
❌ 避免错误¶
不要无配置直接使用
效果会大打折扣
配置API密钥很重要
不要忽略被动模式
被动模式速度快
适合初步侦察
不要过度依赖暴力破解
结合多种技术
暴力破解作为补充
不要忽略数据库
track功能很有用
历史数据有价值
🎯 效率技巧¶
使用别名
alias amass-quick='amass enum -passive' alias amass-deep='amass enum -active -brute'
自动化脚本
编写wrapper脚本
集成到工作流
结果处理
# 提取子域名 cat results.json | jq -r '.name' | sort -u # 统计数据源 cat results.json | jq -r '.sources[]' | sort | uniq -c | sort -rn
参考资源¶
官方资源¶
GitHub: https://github.com/owasp-amass/amass
文档: https://github.com/owasp-amass/amass/blob/master/doc/user_guide.md
OWASP: https://owasp.org/www-project-amass/
学习资源¶
HackTricks: https://book.hacktricks.xyz/generic-methodologies-and-resources/external-recon-methodology
YouTube: Search “Amass Tutorial”
Blog Posts: https://hakluke.medium.com/
相关工具¶
Subfinder: https://github.com/projectdiscovery/subfinder
Assetfinder: https://github.com/tomnomnom/assetfinder
Findomain: https://github.com/Findomain/Findomain
速查表¶
常用命令¶
场景 |
命令 |
|---|---|
快速被动扫描 |
|
深度主动扫描 |
|
使用配置 |
|
显示IP |
|
JSON输出 |
|
情报收集 |
|
可视化 |
|
追踪变化 |
|
查看数据库 |
|
完整扫描模板¶
# Bug Bounty完整扫描
amass enum \
-active \
-brute \
-d target.com \
-w /opt/SecLists/Discovery/DNS/subdomains-top1million-20000.txt \
-config ~/.config/amass/config.yaml \
-ip \
-src \
-o results.txt \
-json results.json \
-dir ./amass_output \
-v
最后更新: 2025-10-04 Amass版本: v4.2.0+ 适用场景: 渗透测试、Bug Bounty、威胁情报、资产管理 维护组织: OWASP