Amass使用教程#

软件介绍#

Amass是一款功能强大的子域名枚举工具,专注于自动化的攻击面映射和资产发现。它集成了多种子域名发现技术,包括主动和被动收集方法。

入门级使用#

基本子域名枚举#

功能说明:使用默认设置枚举目标域名的子域名

使用示例

# 基本子域名枚举
amass enum -d example.com

# 枚举多个域名
amass enum -d example.com -d test.com

# 从文件中读取域名
amass enum -df domains.txt

# 将结果输出到文件
amass enum -d example.com -o results.txt

参数说明

  • enum:执行子域名枚举
  • -d:指定目标域名
  • -df:从文件中读取域名列表
  • -o:指定输出文件

简单的被动收集#

功能说明:仅使用被动方法收集子域名,减少被检测的风险

使用示例

# 仅使用被动方法
amass enum -d example.com -passive

# 被动收集并输出到文件
amass enum -d example.com -passive -o passive_results.txt

# 被动收集多个域名
amass enum -d example.com -d test.com -passive

参数说明

  • -passive:仅使用被动收集方法

初级使用#

主动扫描#

功能说明:结合主动和被动方法进行更全面的子域名枚举

使用示例

# 启用主动扫描
amass enum -d example.com -active

# 主动扫描并指定DNS服务器
amass enum -d example.com -active -r 8.8.8.8,8.8.4.4

# 主动扫描并设置并发数
amass enum -d example.com -active -p 100

# 主动扫描并指定端口范围
amass enum -d example.com -active -p 80,443,8080

参数说明

  • -active:启用主动扫描
  • -r:指定DNS服务器
  • -p:设置并发数或指定端口范围

结果格式化#

功能说明:控制输出结果的格式

使用示例

# 以JSON格式输出
amass enum -d example.com -json output.json

# 以CSV格式输出
amass enum -d example.com -csv output.csv

# 以表格格式输出
amass enum -d example.com -table

# 仅输出子域名
amass enum -d example.com -no-resolve

# 输出详细信息
amass enum -d example.com -v

参数说明

  • -json:以JSON格式输出
  • -csv:以CSV格式输出
  • -table:以表格格式输出
  • -no-resolve:仅输出子域名,不进行DNS解析
  • -v:详细输出

中级使用#

高级枚举选项#

功能说明:使用高级选项进行更深入的子域名枚举

使用示例

# 设置枚举深度
amass enum -d example.com -max-dns-queries 10000

# 设置超时时间
amass enum -d example.com -timeout 10

# 设置DNS重试次数
amass enum -d example.com -retry 3

# 启用递归枚举
amass enum -d example.com -recursive

# 设置线程数
amass enum -d example.com -threads 10

参数说明

  • -max-dns-queries:设置最大DNS查询数
  • -timeout:设置超时时间(秒)
  • -retry:设置DNS重试次数
  • -recursive:启用递归枚举
  • -threads:设置线程数

数据源配置#

功能说明:配置和使用特定的数据源

使用示例

# 列出所有可用的数据源
amass enum -list

# 仅使用特定数据源
amass enum -d example.com -sources crtsh,alienvault

# 排除特定数据源
amass enum -d example.com -exclude-sources archiveis

# 使用API密钥启用更多数据源
# 需要在~/.config/amass/config.ini中配置API密钥
amass enum -d example.com -active

参数说明

  • -list:列出所有可用的数据源
  • -sources:仅使用指定的数据源
  • -exclude-sources:排除指定的数据源

中上级使用#

攻击面映射#

功能说明:使用Amass进行完整的攻击面映射

使用示例

# 执行完整的攻击面映射
amass enum -d example.com -active -brute -w wordlists/subdomains.txt

# 结合暴力破解
amass enum -d example.com -brute

# 使用自定义词表
amass enum -d example.com -brute -w custom_wordlist.txt

# 启用递归暴力破解
amass enum -d example.com -brute -recursive

参数说明

  • -brute:启用暴力破解
  • -w:指定自定义词表
  • -recursive:启用递归暴力破解

网络爬虫集成#

功能说明:使用内置爬虫发现更多子域名

使用示例

# 启用网络爬虫
amass enum -d example.com -active -crawl

# 设置爬虫深度
amass enum -d example.com -active -crawl -depth 2

# 设置爬虫并发数
amass enum -d example.com -active -crawl -p 5

# 禁用证书收集
amass enum -d example.com -active -crawl -no-cert

参数说明

  • -crawl:启用网络爬虫
  • -depth:设置爬虫深度
  • -p:设置爬虫并发数
  • -no-cert:禁用证书收集

高级使用#

大规模枚举#

功能说明:处理大规模的子域名枚举任务

使用示例

# 大规模域名枚举
amass enum -df large_domains.txt -o large_results.txt -threads 50

# 分布式枚举(使用多个实例)
# 实例1
amass enum -d example.com -o results1.txt -config config1.ini
# 实例2
amass enum -d example.com -o results2.txt -config config2.ini

# 合并结果
cat results1.txt results2.txt | sort -u > final_results.txt

# 增量枚举
amass enum -d example.com -o new_results.txt -df old_results.txt

参数说明

  • -df:从文件中读取域名列表
  • -threads:设置线程数
  • -config:使用自定义配置文件

结果分析#

功能说明:分析和处理枚举结果

使用示例

# 统计子域名数量
amass enum -d example.com | wc -l

# 按长度排序子域名
amass enum -d example.com | awk '{print length(0) " " 0}' | sort -n | cut -d' ' -f2-

# 过滤特定模式的子域名
amass enum -d example.com | grep -E "test|dev|staging"

# 与其他工具结合使用
amass enum -d example.com -o subdomains.txt
cat subdomains.txt | xargs -I {} nmap -sV {}

# 验证子域名是否可访问
amass enum -d example.com | xargs -I {} curl -I -m 2 {}

参数说明

  • 结合shell命令和其他工具进行结果分析

大师级使用#

自定义配置和模块#

功能说明:创建和使用自定义配置和模块

使用示例

# 使用自定义配置文件
amass enum -d example.com -config custom_config.ini

# 创建自定义数据源配置
# 编辑~/.config/amass/config.ini文件
# 添加API密钥和自定义数据源

# 使用脚本扩展Amass功能
# 示例:批量处理多个域名并生成报告
for domain in $(cat domains.txt); do
    amass enum -d $domain -o "$domain.txt"
    echo "Completed: $domain"
done

# 集成到CI/CD流程
# 在自动化安全测试中使用Amass

配置文件示例

[General]
api_key_rate_limit = 10

[AlienVault]
apikey = YOUR_API_KEY

[Shodan]
apikey = YOUR_API_KEY

[Censys]
apikey = YOUR_API_ID:YOUR_API_SECRET

高级攻击场景#

功能说明:在复杂的攻击场景中使用Amass

使用示例

# 结合DNS区域传输测试
amass enum -d example.com -active -axfr

# 结合证书透明性日志
amass enum -d example.com -active -cert

# 结合DNSSEC分析
amass enum -d example.com -active -dnssec

# 完整的攻击面评估
amass enum -d example.com -active -brute -w wordlists/subdomains.txt -crawl -depth 3 -o complete_results.txt

# 针对大型组织的多层次枚举
amass enum -d example.com -active -brute -w wordlists/subdomains.txt -recursive -max-dns-queries 100000 -o org_results.txt

参数说明

  • -axfr:尝试DNS区域传输
  • -cert:使用证书透明性日志
  • -dnssec:分析DNSSEC记录
  • -brute:启用暴力破解
  • -w:指定自定义词表
  • -recursive:启用递归暴力破解
  • -depth:设置爬虫深度

实战案例#

案例1:企业资产发现#

任务:发现企业的所有互联网资产

执行步骤

  1. 基本枚举

    amass enum -d company.com -o initial_results.txt
  2. 深度枚举

    amass enum -d company.com -active -brute -w wordlists/subdomains.txt -crawl -o deep_results.txt
  3. 验证结果

    cat deep_results.txt | sort -u > final_subdomains.txt
    wc -l final_subdomains.txt
  4. 资产分类

    # 按环境分类
    cat final_subdomains.txt | grep -E "prod|live" > production.txt
    cat final_subdomains.txt | grep -E "test|dev|staging" > non_production.txt

案例2:安全评估前的攻击面映射#

任务:在安全评估前映射目标的完整攻击面

执行步骤

  1. 多轮枚举

    # 第一轮:被动收集
    amass enum -d target.com -passive -o passive_results.txt
    
    # 第二轮:主动扫描
    amass enum -d target.com -active -o active_results.txt
    
    # 第三轮:暴力破解
    amass enum -d target.com -brute -w wordlists/subdomains.txt -o brute_results.txt
  2. 合并和去重

    cat passive_results.txt active_results.txt brute_results.txt | sort -u > all_subdomains.txt
  3. 服务发现

    cat all_subdomains.txt | xargs -I {} nmap -sV {} -oG nmap_results.txt
  4. 漏洞扫描

    # 使用漏洞扫描工具扫描发现的服务

总结#

Amass是一款功能强大的子域名枚举工具,专注于自动化的攻击面映射和资产发现。通过本教程的学习,您应该能够:

  1. 入门级:掌握基本的子域名枚举和简单的被动收集
  2. 初级:了解主动扫描和结果格式化
  3. 中级:使用高级枚举选项和数据源配置
  4. 中上级:掌握攻击面映射和网络爬虫集成
  5. 高级:进行大规模枚举和结果分析
  6. 大师级:创建自定义配置和模块,以及处理复杂的攻击场景

Amass的优势在于其集成了多种子域名发现技术,能够提供全面的资产发现能力。在实际使用中,Amass常常与其他安全工具结合使用,以实现更全面的安全评估。