跳转至

OWASP Amass 使用手册

目录


简介

OWASP Amass 是目前最强大的子域名枚举和网络映射工具,由 OWASP(开放Web应用安全项目)维护。

核心特性

  • 🔍 多源情报收集 - 整合100+数据源(DNS、证书、搜索引擎、API等)
  • 🌐 主动+被动枚举 - 结合主动探测和被动信息收集
  • 📊 深度分析 - ASN、IP、CIDR、关系映射
  • 🗺️ 网络拓扑 - 自动绘制目标网络基础设施
  • 💾 数据持久化 - 内置图数据库存储
  • 🎯 精准控制 - 黑白名单、速率限制、递归深度
  • 📈 可视化 - 支持导出为Maltego、GraphViz等格式

与其他工具对比

工具 速度 数据源 主动探测 可视化 推荐场景
Amass ⭐⭐⭐ ⭐⭐⭐⭐⭐ 深度侦察、Bug Bounty
Subfinder ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ 快速枚举
DNSRecon ⭐⭐⭐⭐ ⭐⭐ DNS审计
Gobuster ⭐⭐⭐⭐⭐ 暴力破解

工作原理

Amass 通过以下方式收集信息:

  1. 被动信息收集
  2. 证书透明度日志 (crt.sh)
  3. 搜索引擎 (Google, Bing, Baidu)
  4. 威胁情报平台 (VirusTotal, AlienVault)
  5. DNS数据库 (SecurityTrails, DNSDumpster)
  6. Web档案 (Wayback Machine, CommonCrawl)

  7. 主动DNS枚举

  8. 暴力破解子域名
  9. 区域传送测试
  10. DNS记录查询
  11. 反向DNS查询

  12. 网络映射

  13. ASN枚举
  14. IP段识别
  15. CIDR范围确定
  16. 关系图构建

安装

预编译二进制(推荐)

# 下载最新版本
# 访问 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 使用子命令架构,每个子命令专注特定功能:

子命令 功能 用途
intel 情报收集 发现根域名和ASN
enum 子域名枚举 主要枚举功能
viz 可视化 生成网络拓扑图
track 追踪变化 监控域名变化
db 数据库管理 查询和管理数据

数据源类型

  1. 证书透明度 - crt.sh, Google CT, Censys
  2. DNS服务 - DNS查询、区域传送
  3. 搜索引擎 - Google, Bing, Baidu, Yahoo
  4. Web档案 - Archive.org, CommonCrawl
  5. 威胁情报 - VirusTotal, AlienVault OTX
  6. API服务 - SecurityTrails, Shodan, Censys
  7. 暴力破解 - 字典、排列组合、变换

枚举技术

  • 被动枚举 (-passive) - 仅使用公开数据源
  • 主动枚举 (默认) - DNS查询 + 数据源
  • 暴力破解 (-brute) - 字典攻击
  • 递归枚举 (-r) - 递归查找子域名
  • 反向DNS - IP到域名映射

子命令详解

1. intel - 情报收集

发现目标组织的根域名和ASN

# 基本语法
amass intel [选项]

常用选项

参数 说明 示例
-org 组织名称 -org "Example Inc"
-asn ASN编号 -asn 15169
-cidr CIDR范围 -cidr 192.168.0.0/16
-ip IP地址 -ip 8.8.8.8
-d 已知域名 -d example.com
-whois WHOIS查询 -whois
-addr 显示IP地址 -addr
-p 指定端口 -p 80,443

使用示例

# 根据组织名称查找域名
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 [选项]

核心参数

参数 说明 示例
-d 目标域名(必需) -d example.com
-df 域名列表文件 -df domains.txt
-brute 启用暴力破解 -brute
-w 暴力破解字典 -w wordlist.txt
-wm 字典模式 -wm default,all
-active 主动扫描 -active
-passive 被动模式 -passive
-bl 黑名单 -bl cloudflare.com
-blf 黑名单文件 -blf blacklist.txt
-include 包含域名 -include *.example.com
-exclude 排除域名 -exclude test.example.com

输出参数

参数 说明 示例
-o 输出文件 -o results.txt
-dir 输出目录 -dir ./output
-json JSON输出 -json results.json
-ip 显示IP地址 -ip
-src 显示数据源 -src
-v 详细输出 -v
-silent 静默模式 -silent

高级参数

参数 说明 示例
-r DNS解析器 -r 8.8.8.8,1.1.1.1
-rf 解析器文件 -rf resolvers.txt
-p 端口扫描 -p 80,443,8080
-nf 网络过滤 -nf 192.168.0.0/16
-timeout 超时时间 -timeout 5
-max-dns-queries DNS查询限制 -max-dns-queries 10000
-max-depth 递归深度 -max-depth 3
-alts 子域名变体 -alts
-min-for-recursive 递归触发阈值 -min-for-recursive 3

数据源控制

参数 说明 示例
-config 配置文件 -config config.yaml
-scripts 脚本目录 -scripts ./scripts
-norecursive 禁用递归 -norecursive
-noalts 禁用变体 -noalts

使用示例

# 基本枚举
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 [选项]

参数说明

参数 说明 示例
-d 域名 -d example.com
-d3 D3.js HTML文件 -d3
-dot Graphviz DOT文件 -dot
-gexf GEXF格式(Gephi) -gexf
-graphistry Graphistry JSON -graphistry
-maltego Maltego CSV -maltego
-o 输出文件 -o graph.html
-dir 数据库目录 -dir ./amass_db

使用示例

# 生成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 [选项]

参数说明

参数 说明 示例
-d 域名 -d example.com
-since 起始时间 -since "2024-01-01"
-o 输出文件 -o changes.txt
-dir 数据库目录 -dir ./amass_db

使用示例

# 跟踪变化
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 [选项]

参数说明

参数 说明 示例
-d 域名 -d example.com
-dir 数据库目录 -dir ./amass_db
-list 列出所有枚举 -list
-names 显示域名 -names
-show 显示枚举详情 -show
-import 导入数据 -import file.json
-since 时间过滤 -since "2024-01-01"

使用示例

# 列出所有枚举
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

最佳实践

✅ 推荐做法

  1. 配置API密钥
  2. 至少配置VirusTotal、GitHub、AlienVault
  3. 定期检查API配额

  4. 分阶段扫描

    # 第一阶段:被动快速扫描
    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
    

  5. 保存配置和数据

  6. 使用配置文件管理API
  7. 定期备份数据库
  8. 保存JSON格式便于分析

  9. 监控变化

    # 定期运行track命令
    amass track -d target.com
    

  10. 结合其他工具

  11. Amass负责发现
  12. httpx验证活跃性
  13. Nuclei检测漏洞

❌ 避免错误

  1. **不要**无配置直接使用
  2. 效果会大打折扣
  3. 配置API密钥很重要

  4. **不要**忽略被动模式

  5. 被动模式速度快
  6. 适合初步侦察

  7. **不要**过度依赖暴力破解

  8. 结合多种技术
  9. 暴力破解作为补充

  10. **不要**忽略数据库

  11. track功能很有用
  12. 历史数据有价值

🎯 效率技巧

  1. 使用别名

    alias amass-quick='amass enum -passive'
    alias amass-deep='amass enum -active -brute'
    

  2. 自动化脚本

  3. 编写wrapper脚本
  4. 集成到工作流

  5. 结果处理

    # 提取子域名
    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

速查表

常用命令

场景 命令
快速被动扫描 amass enum -passive -d target.com
深度主动扫描 amass enum -active -brute -d target.com
使用配置 amass enum -d target.com -config config.yaml
显示IP amass enum -d target.com -ip
JSON输出 amass enum -d target.com -json results.json
情报收集 amass intel -org "Company Name"
可视化 amass viz -d target.com -d3 -o graph.html
追踪变化 amass track -d target.com
查看数据库 amass db -d target.com -names

完整扫描模板

# 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