简介
OWASP Amass 项目使用开源信息收集和主动侦察技术执行攻击面网络映射和外部资产发现。
此软件包包含一个工具,可帮助信息安全专业人员使用开源信息收集和主动侦察技术执行攻击面网络映射并执行外部资产发现。
使用的信息收集技术
技术 | 数据来源 |
APIs(应用程序接口) | 360PassiveDNS, Ahrefs, AnubisDB, BeVigil, BinaryEdge, BufferOver, BuiltWith, C99, Chaos, CIRCL, DNSDB, DNSRepo, Deepinfo, Detectify, FOFA, FullHunt, GitHub, GitLab, GrepApp, Greynoise, HackerTarget, Hunter, IntelX, LeakIX, Maltiverse, Mnemonic, Netlas, Pastebin, PassiveTotal, PentestTools, Pulsedive, Quake, SOCRadar, Searchcode, Shodan, Spamhaus, Sublist3rAPI, SubdomainCenter, ThreatBook, ThreatMiner, URLScan, VirusTotal, Yandex, ZETAlytics, ZoomEye |
Certificates(证书) | Active pulls (可选), Censys, CertCentral, CertSpotter, Crtsh, Digitorus, FacebookCT |
DNS(域名系统) | Brute forcing, Reverse DNS sweeping, NSEC zone walking, Zone transfers, FQDN alterations/permutations, FQDN Similarity-based Guessing |
Routing(路由) | ASNLookup, BGPTools, BGPView, BigDataCloud, IPdata, IPinfo, RADb, Robtex, ShadowServer, TeamCymru |
Scraping(爬取) | AbuseIPDB, Ask, Baidu, Bing, CSP Header, DNSDumpster, DNSHistory, DNSSpy, DuckDuckGo, Gists, Google, HackerOne, HyperStat, PKey, RapidDNS, Riddler, Searx, SiteDossier, Yahoo |
Web Archives(Web 档案库) | Arquivo, CommonCrawl, HAW, PublicWWW, UKWebArchive, Wayback |
WHOIS((读作“Who is”,而非缩写)是用来查询互联网中域名的IP以及所有者等信息的传输协议。) | AlienVault, AskDNS, DNSlytics, ONYPHE, SecurityTrails, SpyOnWeb, WhoisXMLAPI |
安装
二进制文件安装
通过以下命令来获取文件的压缩包。
wget https://github.com/owasp-amass/amass/releases/download/v4.1.0/amass_Linux_amd64.zip
通过 ls 命令可以看到已经下载成功了,出现了一个 zip 的文件,解压缩这个文件。解压完成后会出现一个文件夹。
ls
unzip unzip amass_Linux_amd64.zip
ls
进入目录并查看
cd amass_Linux_amd64/
ls
运行以下命令,如果出现这个界面,就说明安装成功了。
./amass -h
Docker安装
通过以下命令克隆项目源码,建议请先提前挂好代理。
git clone https://github.com/owasp-amass/amass.git
进入目录并查看
cd amass
ls
拉取 golang 镜像
sudo docker pull golang:1.19-alpine
拉取 alpine 镜像
sudo docker pull alpine
修改一下Dockerfile,添加上代理。建议加代理,不然可能会报错不成功。
#用 vim 工具去编辑文件。
vim Dockerfile#在代码
FROM golang:1.19-alpine as build
#后面添加上ARG HTTP_PROXY
ARG HTTPS_PROXYENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}
ENV http_proxy=${HTTP_PROXY}
ENV https_proxy=${HTTPS_PROXY}
构建 Docker 镜像
sudo docker build --build-arg HTTP_PROXY=http://ip地址:端口 --build-arg HTTPS_PROXY=http://ip地址:端口 -t amass .
输入以下命令,如果出现这个界面的话,就说明安装成功了。
sudo docker run -it amass -h
源码安装
确保您已正确配置 Go 1.14 及以上版本的环境。如果还未安装的话,可以通过以下命令来进行安装
sudo apt install golang -y
验证版本
go version
克隆项目源码并进入目录
git clone https://github.com/owasp-amass/amass.git
cd amass
ls
为 go 配置国内代理
go env -w GOPROXY=https://goproxy.cn
go env
安装
go install ./...
安装完成后,生成的可执行文件在 go/bin 文件夹里面。
cd go/bin/
ls
运行以下命令,如果出现这个界面就说明安装成功了。
./amass -h
APT 包管理器安装
Kali Linux 默认已经安装好 amass 工具了。如果还未安装的话,也可以通过以下命令来进行安装
sudo apt install amass
使用
1. -h
显示程序使用信息
amass -h
2. -help
显示程序使用信息
amass -help
3. -version
打印此 Amass 二进制文件的版本号
amass -version
注意:amass的字典文件位于
amass/examples/wordlists
子命令
amass 包含 5 个子命令,换句话说,就是功能:
- amass intel——发现枚举目标
- amass enum——执行枚举和网络映射
- amass viz——可视化枚举结果
- amass track——跟踪枚举之间的差异
- amass db——操作 Amass 图形数据库
在某些情况下,Amass 的子命令可以结合使用,这允许您创建执行多个 Amass 操作的脚本。
作为其子域名发现和信息收集技术的一部分,它支持 55 个来源,例如 API 和网站。
它采用各种信息收集技术进行 DNS 枚举
- 使用域名词表和修改词表对子域名进行暴力破解
- 通过读取 SSL/TLS 证书、执行 DNS 区域传输或检查证书透明度日志来识别子域名
- 在已识别的域名上进行递归子域名发现
- 使用 Hashcat 风格的掩码对子域名进行暴力破解(如果您拥有关于命名约定等的内部信息,这将非常有用)
可以使用配置文件进行配置,这使得它易于维护、使用或与脚本集成
Amass Intel
Amass intel 子命令(或者说模块)可以帮助收集有关该组织的开源情报,并允许你查找与该组织相关的更多根域名。要查看此子命令的可用选项,只需在终端中输入:
amass intel
此时或许值得一提的是,Amass 的另一个重要优势是所有子命令都会尝试保持参数的一致性。
此子命令默认会使用多种信息收集技术和数据源,例如 WHOIS 和 IPv4Info,以获取组织拥有的情报和父域名,除非在 Amass 的配置文件中明确禁用这些功能。
1. -h
显示程序使用信息
amass intel -h
2. -help
显示程序使用信息
amass intel -help
3. -active
尝试获取证书名称
amass intel -active -whois -d kali.org
4. -addr value
IP 地址和地址范围 (192.168.1.1-254),以逗号分隔
5. -asn value
ASN 以逗号分隔(可多次使用)
6. -cidr value
CIDR 以逗号分隔(可多次使用)
amass intel -active -whois -d owasp.org -addr 104.22.26.77 -asn 14993 -cidr 104.22.26.0/24
7. -config string
YAML 配置文件的路径。以下为更多详细信息
amass intel -config examples/config.yaml -whois -d kali.org
8. -d value
域名以逗号分隔(可多次使用)
amass intel -whois -d owasp.org,kali.org
9. -demo
审查输出以使其适合演示
amass intel -demo -whois -d owasp.org,kali.org
10. -df value
提供根域名的文件路径
amass intel -whois -df domains.txt
11. -dir string
包含输出文件的目录路径
amass intel -whois -d kali.org -dir output
12. -ef string
提供要排除的数据源的文件路径
amass intel -whois -d kali.org -ef exclude.txt
13. -exclude value
要排除的数据源名称以逗号分隔
amass intel -whois -d kali.org -exclude Shodan
14. -if string
提供要包含的数据源的文件路径
amass intel -whois -d kali.org -if include.txt
15. -include value
要包含的数据源名称以逗号分隔
amass intel -whois -d kali.org -include Shodan
16. -ip
显示已发现名称的 IP 地址
amass intel -whois -d kali.org -ip
17. -ipv4
显示已发现名称的 IPv4 地址
amass intel -whois -d kali.org -ipv4
18. -ipv6
显示已发现名称的 IPv6 地址
amass intel -whois -d kali.org -ipv6
19. -list
打印附加信息
amass intel -list
20. -log string
将写入错误的日志文件路径
amass intel -whois -d kali.org -log errors.log
21. -max-dns-queries int
最大并发 DNS 查询数
amass intel -whois -d kali.org -max-dns-queries 10
22. -o string
包含终端 stdout/stderr 的文本文件路径
amass intel -whois -d kali.org -o result.txt
23. -org string
针对 AS 描述信息提供的搜索字符串
amass intel -org "Bing"
24. -p value
端口号(以逗号分隔)(默认值:80, 443)
amass intel -active -whois -d kali.org -p 80,443
25. -r value
首选 DNS 解析器的 IP 地址(可多次使用)
amass intel -whois -d kali.org -r 114.114.114.114
26. -rf value
提供首选 DNS 解析器的文件路径
amass intel -whois -d kali.org -rf resolvers.txt
27. -timeout int
退出前允许枚举运行的分钟数
amass intel -whois -d kali.org -timeout 3
28. -v
输出状态/调试/故障排除信息
29. -whois
所有提供的域名均通过反向 whois 查询
amass intel -v -whois -d kali.org
Amass Enum
Amass 的大部分强大功能都集中于此。Amass 枚举允许您执行目标的 DNS 枚举和映射,以确定组织暴露的攻击面。枚举结果存储在图形数据库中,该数据库将位于 Amass 的默认输出文件夹中,或使用“-dir”标志指定的输出目录中。其他 Amass 子命令也是如此。
Amass 枚举可以在被动或主动配置模式下执行。被动模式速度更快,但 Amass 不会验证 DNS 信息,例如通过解析子域名。您可以使用“-passive”标志被动运行它,但您将无法启用许多技术或配置,例如 DNS 解析和验证。有时选择被动模式而不是主动模式有几个原因,例如:
- 您需要了解所有已使用且将来可能重复使用的子域名,这可能是因为您需要持续监控目标的攻击面以发现变化,或者因为您正在进行网络钓鱼攻击并寻找子域名。
- 您的周边安全测试流程会在后期验证 DNS 信息,并且需要快速获得 Amass 的结果。
- 由于安全活动的限制或要求,您只能执行被动信息收集。
1. -h
显示程序使用情况消息
2. -help
显示程序使用情况消息
amass enum -h
3. -active
尝试区域传输和证书名称抓取
4. -addr value
IP 地址和地址范围 (192.168.1.1-254),以逗号分隔
amass enum -d owasp.org -addr 192.168.174.1-255
5. -alts
启用更改名称生成
amass enum -d owasp.org -alts
6. -asn value
ASN 以逗号分隔(可多次使用)
amass enum -d owasp.org -asn 23333
7. -aw value
用于更改名称的不同词表文件的路径
amass enum -d owasp.org -aw /usr/share/amass/wordlists/subdomains.lst
8. -awm value
用于名称更改的“hashcat 风格”词表掩码
amass enum -d owasp.org -awm '?1?l?l?l?l'
9. -bl value
不予调查的子域名黑名单
amass enum -d owasp.org -bl admin,kali.org
10. -blf string
提供黑名单子域名的文件路径
amass enum -d owasp.org -blf blacklisted.txt
11. -brute
搜索后执行暴力破解
amass enum -d owasp.org -brute
12. -cidr value
CIDR 以逗号分隔(可多次使用)
amass enum -d owasp.org -cidr 104.22.27.0/24
13. -config string
YAML 配置文件的路径。更多详细信息如下
amass enum -d owasp.org -config 桌面/amass/examples/config.yaml
14. -d value
域名以逗号分隔(可多次使用)
amass enum -d owasp.org,kali.org
15. -demo
审查输出以使其适合演示
amass enum -d kali.org -demo
16. -df value
提供根域名的文件路径
amass enum -df domains.txt
17. -dir string
包含输出文件的目录路径
amass enum -d kali.org -dir output
18. -dns-qps int
所有解析器每秒的最大 DNS 查询数
amass enum -d kali.org -dns-qps 5
19. -ef string
提供要排除的数据源的文件路径
amass enum -d kali.org -ef exclude.txt
20. -exclude value
要排除的数据源名称以逗号分隔
amass enum -d kali.org -exclude Yahoo
21. -if string
提供要包含的数据源的文件路径
amass enum -d kali.org -if include.txt
22. -iface string
提供用于发送流量的网络接口
amass enum -d kali.org -iface eth0
23. -include value
要包含的数据源名称以逗号分隔
amass enum -d kali.org -include Yahoo,Shodan
24. -list
打印所有可用数据源的名称
amass enum -list
25. -log string
将写入错误的日志文件的路径
amass enum -d kali.org -log error.log
26. -max-depth int
最大数量用于暴力破解的子域名标签数量
amass enum -d kali.org -max-depth 5
27. -max-dns-queries int
已弃用标志,将在 4.0 版中由 dns-qps 取代
amass enum -d kali.org -max-dns-queries 5
28. -min-for-recursive int
递归暴力破解前检测到的子域名标签(默认值:1)(默认 1)
amass enum -d kali.org -min-for-recursive 1
29. -nf value
提供已知子域名(来自其他工具/来源)的文件路径
amass enum -d kali.org -nf known-subdomains.txt
30. -nocolor
禁用彩色输出
amass enum -d kali.org -nocolor
31. -norecursive
关闭递归暴力破解
amass enum -d kali.org -norecursive
32. -o string
包含终端 stdout/stderr 的文本文件的路径
amass enum -d kali.org -o result.txt
33. -oA string
用于命名所有输出文件的路径前缀
amass enum -d kali.org -oA kali
34. -p value
端口号以逗号分隔(默认值:80, 443)
amass enum -d kali.org -active -p 80,443
35. -passive
已弃用,因为默认设置是 passive
amass enum -d kali.org -passive
36. -r value
不受信任 DNS 解析器的 IP 地址(可多次使用)
amass enum -d kali.org -r 114.114.114.114
37. -rf value
提供不受信任 DNS 解析器的文件路径
amass enum -d kali.org -rf resolvers.txt
38. -rqps int
每个不受信任解析器每秒的最大 DNS 查询数
amass enum -d kali.org -rqps 8
39. -scripts string
包含 ADS 脚本的目录路径
amass enum -d kali.org -scripts alterations.ads
40. -silent
执行期间禁用所有输出
amass enum -d kali.org -silent
41. -timeout int
退出前允许枚举运行的分钟数
amass enum -d kali.org -timeout 3
42. -tr value
受信任 DNS 解析器的 IP 地址(可多次使用)
amass enum -d kali.org -tr 8.8.8.8
43. -trf value
路径提供可信 DNS 解析器的文件
amass enum -d kali.org -trf trusted.txt
44. -trqps int
每个可信解析器每秒的最大 DNS 查询次数
amass enum -d kali.org -trqps 3
45. -v
输出状态/调试/故障排除信息
amass enum -d kali.org -v
46. -w value
用于暴力破解的不同字典文件的路径
amass enum -d kali.org -w /usr/share/amass/wordlists/subdomains.lst
47. -wm value
用于 DNS 暴力破解的“hashcat 风格”字典掩码
amass enum -d kali.org -wm 'zzz-?l?l?l'
Amass Viz
注意:此子命令在新版本已被移出,老版本才有这个功能。我演示的时候用的是3.19.2的版本。
Amass viz 子命令允许您以多种方式可视化所有收集到的目标信息(存储在 Amass 图形数据库中)。结果还可以导入 Maltego 进行进一步的 OSINT(开源情报)分析。
1. -h
显示程序使用信息
amass viz -h
2. -help
显示程序使用信息
amass viz -help
3. -config string
INI 配置文件的路径。更多详细信息请见下文
4. -d value
域名以逗号分隔(可多次使用)
5. -d3
生成 D3 v4 强制模拟 HTML 文件
amass viz -d3 -d kali.org -config examples/config.ini
6. -df string
提供根域名的文件路径
amass viz -d3 -df domains.txt
7. -dir string
包含图形数据库的目录路径
amass viz -d3 -d kali.org -config examples/config.ini -dir ./examples/
8. -dot
生成 DOT 输出文件
amass viz -dot -d kali.org
9. -enum int
通过列表中的索引识别枚举
amass viz -dot -enum 3
10. -gexf
生成 Gephi 图形交换 XML 格式 (GEXF) 文件
amass viz -gexf -d kali.org
11. -graphistry
生成 Graphistry JSON 文件
amass viz -graphistry -d kali.org
12. -i string
Amass 数据操作 JSON 文件
amass viz -gexf -d kali.org -i examples/indexes.bolt
13. -maltego
生成 Maltego csv 文件
amass viz -maltego -d kali.org
14. -nocolor
禁用彩色输出
amass viz -maltego -d kali.org -nocolor
15. -o string
生成输出文件的目录路径
amass viz -maltego -d kali.org -o output
16. -oA string
用于命名所有输出文件的路径前缀
amass viz -maltego -d kali.org -oA kali
17. -silent
执行期间禁用所有输出
amass viz -maltego -d kali.org -silent
Amass Track
注意:此子命令在新版本已被移出,老版本才有这个功能。我演示的时候用的是3.19.2的版本。
Amass track 是第二有用的子命令。它有助于比较针对同一目标和域名执行的枚举结果。
1. -h
显示程序使用信息
amass track -h
2. -help
显示程序使用信息
amass track -help
3. -config string
INI 配置文件的路径。更多详细信息见下文
amass track -d kali.org -config examples/config.ini
4. -d value
域名以逗号分隔(可多次使用)
amass track -d kali.org,owasp.org
5. -df string
提供根域名的文件路径
amass track -df domains.txt
6. -dir string
包含图形数据库的目录路径
amass track -d kali.org -dir /home/ubuntu/.config/amass/
7. -history
显示所有枚举对之间的差异
amass track -d kali.org -history
8. -last int
要包含在跟踪中的最近枚举的数量
amass track -d kali.org -last 2
9. -nocolor
禁用彩色输出
amass track -d kali.org -nocolor
10. -silent
执行期间禁用所有输出
amass track -d kali.org -silent
11. -since string
排除之前的所有枚举(格式:01/02 15:04:05 2006 MST)
amass track -d kali.org -since "05/08 00:00:00 2025 UTC"
Amass DB
注意:此子命令在新版本已被移出,老版本才有这个功能。我演示的时候用的是3.19.2的版本。
您可以使用此子命令与 Amass 图形数据库进行交互,无论是默认数据库还是使用“-dir”标志指定的数据库。
1. -h
显示程序使用信息
amass db -h
2. -help
显示程序使用信息
amass db -help
3. -config string
INI 配置文件的路径。更多详细信息如下
amass db -config examples/config.ini -list
4. -d value
域名以逗号分隔(可多次使用)
amass db -d kali.org -names
5. -demo
审查输出以使其适合演示
amass db -d kali.org -names -demo
6. -df string
提供根域名的文件路径
amass db -df domains.txt -names
7. -dir string
包含图形数据库的目录路径
amass db -d kali.org -names -dir /home/ubuntu/.config/amass
8. -enum int
通过列表中的索引识别枚举
amass db -d kali.org -names -enum 1
9. -ip
显示已发现名称的 IP 地址
amass db -d kali.org -names -ip
10. -ipv4
显示已发现名称的 IPv4 地址
amass db -d kali.org -names -ipv4
11. -ipv6
显示已发现名称的 IPv6 地址
amass db -d kali.org -names -ipv6
12. -json string
JSON 输出文件的路径
amass db -d kali.org -names -json output.json
13. -list
根据提供的域名过滤的枚举编号列表
amass db -list
14. -names
打印刚发现的名称
amass db -d kali.org -names
15. -nocolor
禁用彩色输出
amass db -d kali.org -names -nocolor
16. -o string
包含终端 stdout/stderr 的文本文件的路径
amass db -d kali.org -names -o output.txt
17. -show
打印结果枚举索引 + 提供的域名
amass db -d kali.org -names -show
18. -silent
执行期间禁用所有输出
amass db -d kali.org -names -silent
19. -src
打印已发现名称的数据源
amass db -d kali.org -names -src
20. -summary
仅打印 ASN 表摘要
amass db -d kali.org -summary
总结
Amass 是一款功能强大的子域名枚举和信息收集工具,适用于渗透测试和资产管理等多个安全场景。通过对 Amass 的使用与分析,我们不仅可以深入了解其模块化设计和丰富的数据源,还能有效提升在实际工作中对目标域的掌控能力。总的来说,Amass 是信息收集阶段不可或缺的重要利器。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。