泛域名扫描子域名是网络安全领域中一项基础且重要的技术手段,它能够帮助安全研究人员、运维人员或企业全面掌握自身资产暴露面,及时发现潜在的安全风险,泛域名(*.example.com
)允许其下的所有子域名(如 test.example.com
、api.example.com
)共享同一个通配符证书,而扫描泛域名下的子域名,本质上就是发现这些可能存在的、未被明确记录的资产。
泛域名扫描的核心价值
在进行具体扫描方法探讨前,理解其核心价值至关重要,资产梳理是基础,许多企业因业务扩张或管理疏忽,可能存在未备案、未管理的“影子子域名”,这些子域名可能运行着旧版本系统、测试环境,甚至存在未修复的漏洞,成为攻击者的突破口,攻击面发现是关键,每一个子域名都可能对应一个独立的Web服务、API接口或内部系统,扫描能够清晰勾勒出所有可能的攻击路径,应急响应支持,当发生安全事件时,全面的子域名列表有助于快速定位受影响范围,缩小排查范围。
泛域名扫描的主要方法
泛域名扫描并非单一技术,而是多种方法的组合运用,每种方法都有其优缺点和适用场景。
主动扫描:主动发现潜在子域名
主动扫描是通过技术手段主动探测和发现子域名的方式,主要包括以下几种技术路径:
-
字典爆破/穷举:这是最经典也是最直接的方法,它使用一个包含大量常见子域名词汇的“字典”(如
www
、mail
、ftp
、test
、dev
、api
、blog
等),结合泛域名前缀进行组合,然后通过DNS查询(如A记录、AAAA记录、CNAME记录)来判断该子域名是否存在,针对*.example.com
,字典中包含admin
,就会查询admin.example.com
。- 优点:简单易行,成本低,能够发现一些非常规或配置错误的子域名。
- 缺点:严重依赖字典质量,对于复杂或自定义的子域名命中率低;可能因请求频率过高触发DNS服务器的限流或防护机制。
- 常用工具:
Sublist3r
、Dirsearch
、Gobuster
、Amass
等。
-
爬虫与蜘蛛抓取:通过搜索引擎或已知网站的爬虫程序,在抓取网页内容的过程中,发现并提取页面中链接到的其他子域名,在
blog.example.com
的页面中发现指向store.example.com
的链接。- 优点:发现的是真实业务中存在的、被链接的子域名,准确率高。
- 缺点:依赖于爬虫的起始点和抓取深度,难以发现孤立、无外部链接的子域名。
- 常用工具:
Scrapy
、Nutch
、搜索引擎的site:
指令(如site:example.com
)。
-
端口扫描与服务识别:通过扫描目标域名的IP地址开放端口,结合常见的Web服务端口(如80、443、8080、8443等),反向推断可能存在的子域名,发现IP
2.3.4
同时开放了80和443端口,通过虚拟主机(Host头)探测,可能发现site1.example.com
和site2.example.com
都指向该IP。- 优点:可以发现与IP绑定的、未通过DNS公开的子域名。
- 缺点:技术复杂度较高,需要配合端口扫描工具(如
Nmap
)和虚拟主机探测工具(如Httpenum
、Gobuster
的VHOST模式)。 - 常用工具:
Nmap
+Masscan
+Httpx
。
被动收集:利用公开信息源
被动收集是指通过查询和分析互联网上已公开的信息,间接收集子域名信息,这种方法隐蔽性好,且不易对目标造成干扰。
-
证书透明度日志(Certificate Transparency Logs, CT Logs):当网站启用HTTPS时,其SSL/TLS证书的签发信息会被记录到公开的CT日志中,通过查询这些日志,可以获取大量曾经申请或正在使用的子域名。
- 优点:信息量大、更新及时,能发现新注册或短暂存在的子域名。
- 缺点:需要依赖第三方CT日志查询服务或工具。
- 常用工具/服务:
crt.sh
、Censys
、Shodan
、Amass
(内置被动查询功能)。
-
公开数据源:包括搜索引擎缓存、公共DNS服务器记录(如Google Public DNS、OpenDNS)、DNS聚合服务(如VirusTotal、DNSdumpster)、GitHub代码泄露(通过搜索API密钥、域名等)、网络空间搜索引擎(如
Shodan
、Fofa
、ZoomEye
)等。- 优点:信息来源广泛,覆盖面广。
- 缺点:信息可能存在滞后性,需要多源交叉验证。
- 常用工具:
Amass
、Subfinder
(它们集成了大量被动数据源)。
混合扫描策略
实际应用中,单一方法往往难以获得全面的结果,因此推荐采用混合扫描策略,将主动与被动方法相结合,首先使用被动收集工具(如Subfinder
、Amass
)从公开数据源中尽可能多地收集子域名,然后对收集到的结果进行去重和初步验证,再使用字典爆破等主动方法进行补充,最后通过端口扫描和服务识别进行深度挖掘。
扫描流程与注意事项
一个完整的泛域名扫描流程通常包括以下几个阶段:
- 明确范围与目标:确定要扫描的泛域名(如
*.example.com
),并明确扫描的目的(资产盘点、漏洞挖掘等)。 - 选择工具与方法:根据目标环境和资源,选择合适的工具组合。
- 信息收集:执行被动和主动扫描,获取初步的子域名列表。
- 去重与验证:对收集到的子域名进行去重,并通过DNS查询、HTTP请求等方式验证其真实性和可达性。
- 资产整理与风险评估:将验证后的子域名进行分类整理,并尝试识别其对应的服务和应用,进行初步的风险评估。
注意事项:
- 法律与合规性:扫描行为必须获得目标所有者的明确授权,严禁未授权扫描。
- 扫描频率与速率控制:避免对目标DNS服务器或Web服务器造成过大压力,遵守
robots.txt
协议,必要时使用代理或降低请求频率。 - 结果管理:扫描结果应及时整理、归档,并持续跟踪,建立资产清单。
- 工具更新:定期更新扫描工具的字典和数据源,以提高扫描效率和准确性。
常用工具对比
为了更直观地选择合适的工具,以下对部分常用工具进行简单对比:
工具名称 | 主要类型 | 优点 | 缺点 |
---|---|---|---|
Subfinder | 被动/主动 | 轻量级,速度快,集成多个被动数据源 | 主动爆破能力相对较弱 |
Amass | 被动/主动/主动 | 功能强大,数据源丰富,可进行多阶段关联分析 | 配置相对复杂,资源消耗较大 |
Sublist3r | 字典爆破 | 简单易用,专注于字典爆破 | 字典依赖性强,被动能力弱 |
crt.sh | 证书透明度日志 | 无需安装,在线查询,信息更新及时 | 需要手动整理结果,缺乏自动化功能 |
Nmap | 端口扫描 | 端口扫描功能强大,服务识别准确 | 单纯用于子域名发现效率不高,需配合其他工具 |
泛域名扫描子域名是一项系统性工作,需要综合运用多种技术和工具,并严格遵守法律法规和道德规范,通过科学、规范的扫描流程,能够有效提升资产安全可见性,为后续的安全防护工作奠定坚实基础。