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:企业资产发现#
任务:发现企业的所有互联网资产
执行步骤:
基本枚举
amass enum -d company.com -o initial_results.txt深度枚举
amass enum -d company.com -active -brute -w wordlists/subdomains.txt -crawl -o deep_results.txt验证结果
cat deep_results.txt | sort -u > final_subdomains.txt wc -l final_subdomains.txt资产分类
# 按环境分类 cat final_subdomains.txt | grep -E "prod|live" > production.txt cat final_subdomains.txt | grep -E "test|dev|staging" > non_production.txt
案例2:安全评估前的攻击面映射#
任务:在安全评估前映射目标的完整攻击面
执行步骤:
多轮枚举
# 第一轮:被动收集 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合并和去重
cat passive_results.txt active_results.txt brute_results.txt | sort -u > all_subdomains.txt服务发现
cat all_subdomains.txt | xargs -I {} nmap -sV {} -oG nmap_results.txt漏洞扫描
# 使用漏洞扫描工具扫描发现的服务
总结#
Amass是一款功能强大的子域名枚举工具,专注于自动化的攻击面映射和资产发现。通过本教程的学习,您应该能够:
- 入门级:掌握基本的子域名枚举和简单的被动收集
- 初级:了解主动扫描和结果格式化
- 中级:使用高级枚举选项和数据源配置
- 中上级:掌握攻击面映射和网络爬虫集成
- 高级:进行大规模枚举和结果分析
- 大师级:创建自定义配置和模块,以及处理复杂的攻击场景
Amass的优势在于其集成了多种子域名发现技术,能够提供全面的资产发现能力。在实际使用中,Amass常常与其他安全工具结合使用,以实现更全面的安全评估。