OWASP Amass 使用手册

简介

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

核心特性

  • 🔍 多源情报收集 - 整合100+数据源(DNS、证书、搜索引擎、API等)

  • 🌐 主动+被动枚举 - 结合主动探测和被动信息收集

  • 📊 深度分析 - ASN、IP、CIDR、关系映射

  • 🗺️ 网络拓扑 - 自动绘制目标网络基础设施

  • 💾 数据持久化 - 内置图数据库存储

  • 🎯 精准控制 - 黑白名单、速率限制、递归深度

  • 📈 可视化 - 支持导出为Maltego、GraphViz等格式

与其他工具对比

工具

速度

数据源

主动探测

可视化

推荐场景

Amass

⭐⭐⭐

⭐⭐⭐⭐⭐

深度侦察、Bug Bounty

Subfinder

⭐⭐⭐⭐⭐

⭐⭐⭐⭐

快速枚举

DNSRecon

⭐⭐⭐⭐

⭐⭐

DNS审计

Gobuster

⭐⭐⭐⭐⭐

暴力破解

工作原理

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

  1. 被动信息收集

    • 证书透明度日志 (crt.sh)

    • 搜索引擎 (Google, Bing, Baidu)

    • 威胁情报平台 (VirusTotal, AlienVault)

    • DNS数据库 (SecurityTrails, DNSDumpster)

    • Web档案 (Wayback Machine, CommonCrawl)

  2. 主动DNS枚举

    • 暴力破解子域名

    • 区域传送测试

    • DNS记录查询

    • 反向DNS查询

  3. 网络映射

    • 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 使用子命令架构,每个子命令专注特定功能:

子命令

功能

用途

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密钥

    • 至少配置VirusTotal、GitHub、AlienVault

    • 定期检查API配额

  2. 分阶段扫描

    # 第一阶段:被动快速扫描
    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
    
  3. 保存配置和数据

    • 使用配置文件管理API

    • 定期备份数据库

    • 保存JSON格式便于分析

  4. 监控变化

    # 定期运行track命令
    amass track -d target.com
    
  5. 结合其他工具

    • Amass负责发现

    • httpx验证活跃性

    • Nuclei检测漏洞

❌ 避免错误

  1. 不要无配置直接使用

    • 效果会大打折扣

    • 配置API密钥很重要

  2. 不要忽略被动模式

    • 被动模式速度快

    • 适合初步侦察

  3. 不要过度依赖暴力破解

    • 结合多种技术

    • 暴力破解作为补充

  4. 不要忽略数据库

    • track功能很有用

    • 历史数据有价值

🎯 效率技巧

  1. 使用别名

    alias amass-quick='amass enum -passive'
    alias amass-deep='amass enum -active -brute'
    
  2. 自动化脚本

    • 编写wrapper脚本

    • 集成到工作流

  3. 结果处理

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