二级域名扫描的核心价值在于快速发现目标域名下所有可访问的子域名,它是安全评估、资产梳理和攻击面管理的第一步。 很多站长以为自己的网站只有一个入口,但实际暴露在互联网上的二级域名可能多达数十个,这些被遗忘的角落往往成为安全短板,本文从原理、工具、实操和防护四个维度,完整拆解二级域名扫描这件事。
二级域名扫描原理是什么?理解它才能用好它
二级域名指形如 blog.example.com、api.example.com 这类挂在主域名下的子域名,扫描的本质是枚举和验证:先通过各种方式收集可能的子域名名字,再向DNS服务器发起查询,确认哪些名字真实存在并解析到IP。
三种主流数据获取方式
- 字典枚举:将常见子域名词条(如
admin、mail、test、dev)逐个拼接在主域名前,然后发起DNS解析请求,这种方式依赖字典质量,对未知的随机子域名容易漏报。 - 搜索引擎与公共数据集:从搜索引擎缓存、证书透明度日志(CT日志)、DNS历史记录、网页爬虫结果中提取已公开的子域名,比如利用
crt.sh查询SSL证书签发记录,能一次性拿到大量历史子域名。 - 被动监听与爬虫:通过分析目标网站页面里的JS文件、
robots.txt、sitemap.xml中的链接,或利用第三方情报平台(如VirusTotal、Censys)的公开数据,间接发现子域名。
行业共识认为,完整的扫描应该同时使用以上多种方式,单靠一种方法很难覆盖全部资产,实际执行时,多数工具会先跑一遍字典爆破,再交叉比对公共数据源,最后对解析成功的域名做HTTP探活,筛掉不可访问的僵尸域名。
解析与验证阶段的关键细节
扫描器收到DNS响应后,需要区分“域名存在但无记录”和“域名不存在”两种情况,一般通过NXDomain错误码判断,但有些DNS服务器会通配解析任意不存在的子域名都返回同一个IP,这时需要用条件验证:生成一个随机字符串域名,对比它与目标域名的解析结果,如果两者返回相同IP,说明存在泛解析,常规枚举结果不可信,必须更换扫描策略。
二级域名扫描工具哪个好?横向对比与选择建议
市面上的工具五花八门,从命令行玩具到企业级平台都有,选工具前先明确你的场景:是等保自查、渗透测试,还是日常运维监控?不同场景对速度、准确率和隐蔽性要求完全不同。

开源工具与商业工具的取舍
| 工具名称 | 核心特点 | 适用场景 | 需要留意的地方 |
|---|---|---|---|
| Subfinder | 纯被动收集,不主动发包 | 红队侦察、避免触发告警 | 依赖API密钥,免费配额有限 |
| Amass | 主动+被动结合,数据源覆盖广 | 大规模资产测绘 | 配置复杂,内存占用较高 |
| OneForAll | 集成接口多,无需编译 | 中小型企业日常巡检 | 部分云接口需要付费 |
| 在线平台(如FOFA) | 直接查索引库,秒级返回 | 快速了解资产暴露面 | 对数据新鲜度有要求 |
对于刚接触二级域名扫描的新手,我建议先试 Subfinder 加 httpx 的组合,前者负责收集域名列表,后者负责验证哪些域名能正常响应HTTP请求,这类工具在GitHub上都有现成release包,下载后解压就能用,没有语言环境依赖。
实操步骤:用Subfinder和httpx完成一次完整扫描
- 安装工具:将
subfinder和httpx的可执行文件放到系统PATH目录下,或者直接用go install命令编译。 - 配置API密钥:修改Subfinder的配置文件(默认位于
~/.config/subfinder/provider-config.yaml),填入你需要的数据源密钥,至少要有virustotal和crt.sh的API Key。 - 执行被动收集:运行
subfinder -d example.com -all -o subdomains.txt,等待扫描结束。-all会启用全部可用数据源,收集结果存在文本文件中。 - 验证存活:运行
cat subdomains.txt | httpx -title -status-code -o live.txt,输出每个二级域名的返回状态码和页面标题。 - 整理报告:查看
live.txt,你会看到哪些子域名真的在用,哪些已经解析但无法访问。
这套流程在普通云服务器上跑一个大中型网站的完整扫描,通常需要10到20分钟,如果你只是想快速看一个结果,也可以直接使用 crt.sh 的Web界面,输入域名后它会把所有证书签发过的子域名列出来,虽然不够全面,但胜在零成本。
二级域名扫描和子域名爆破的区别是什么?别再混淆
很多文档把这两个词混着用,实际上它们有明确边界。

子域名爆破是二级域名扫描里的一种具体手段,特指用字典暴力猜测域名前缀;而二级域名扫描是更宽泛的概念,涵盖了爆破、被动收集、DNS历史解析等所有能发现子域名的操作。
形象点说,爆破是“猜密码”,拿着字典一个个试;扫描是“做背景调查”,翻公开记录、查证书日志、看历史DNS变更,把所有可能的名字汇总筛选。成熟的安全团队会把爆破作为兜底方案,放在被动收集之后执行,因为纯爆破容易产生大量无效DNS查询,可能引起目标网站防火墙的注意。
如何搭建自己的二级域名扫描体系?从临时任务到常态化监控
一次性的扫描只能暴露当下的资产,但二级域名是动态变化的,新服务上线、旧业务下线、DNS记录变更每天都在发生,想把扫描变成持续能力,需要一套轻量化的流程。
设计一个简单的每日自动扫描任务
用Cron配合脚本,能把扫描变成无人值守的流水线,以Linux服务器为例:
- 建立项目目录
/opt/assetscan,存放脚本和结果。 - 编写
scan.sh脚本,核心内容就是上面Subfinder和httpx的命令,加上date +%F生成日期文件名的逻辑。 - 设置定时任务:执行
crontab -e,添加一行0 2 bash /opt/assetscan/scan.sh,意思是每天凌晨2点跑一次。 - 产出结果后,用
diff对比上一次的存活列表,发现新增的二级域名就把记录发到企业微信群或钉钉群,这类通知通过Webhook就能实现,不需要额外开发。
这样坚持一个月,你对自己网站的资产变化会有非常直观的感受,有些域名可能已经闲置半年,但DNS记录依然指向一台托管着老旧应用的服务器这种就是最典型的攻击突破点,据网络安全行业的公开数据,相当一部分入侵事件是从未被监控的旧子域名入手的。
扫描频率和时段怎么定?
- 对于对外提供服务的生产系统,每天扫描一次足够,时间建议选在业务低峰期(凌晨2点到5点)。
- 对于大型机构或经常上线新业务的企业,可以增加到每6小时一次,但要控制并发数,避免影响DNS权威服务器的正常解析。
- 不要对第三方域名随意扫描,除非你有书面授权,未经授权的扫描可能被判定为恶意行为,这个边界要守住。
二级域名扫描发现风险后怎么办?完成闭环修复

扫描不是目的,降低风险才是,拿到存活子域名列表后,按重要程度分类处理是高效的做法。
按风险等级给子域名排优先级
建议把二级域名分成三个梯队:
- 高优先级:登录后台、API接口、文件上传服务、测试站,这类域名只要存在就意味着敏感数据暴露面,重点关注是否开放了高危端口,是否使用了默认证书。
- 中优先级:静态资源站、旧版本应用、博客论坛,它们通常不存核心数据,但可能泄露内部目录结构或框架版本号。
- 低优先级:邮件解析记录、CDN节点、跳转域名,这些域名往往没有Web服务,但可能被利用做钓鱼钓鱼跳转。
对高优先级的子域名,逐一检查以下项:TLS证书是否过期、HTTP响应头缺失安全字段、是否存在 /.git 目录泄露、登录接口是否有防暴力破解机制,多数情况下,你会在这些“边角料”子域名上找到比主站脆弱得多的系统。
处理已废弃的子域名
如果某个二级域名确认不再使用,最干净的做法是删除DNS解析记录,并到域名注册商处确认该子域名没有配置特殊的CNAME记录,如果它已经指向一个失效的IP,可能的反弹地址,谁也无法预知。
对于必须保留但暂时不用的二级域名,建议一律关闭对应服务器的对外服务,或者在防火墙上设置白名单,仅允许运维IP访问,不要因为“以后可能用到”而把它留在公网,这等于在门口挂了一把没锁的锁。
二级域名扫描,常见问题与解答
问:二级域名扫描会扫出主域名本身吗?
扫描器通常会同时枚举主域名的所有可能前缀,但主域名本身(即 example.com)不一定包含在结果中,许多工具默认只返回二级域名,主域名需要手动添加或通过单独查询A记录确认,如果你希望把主域名也纳入监控,可以在扫描后加上一条 dig example.com A 的记录。
问:免费工具和商业工具在扫描结果上差距有多大?
免费工具在数据源数量和去重能力上稍弱,但对于常规资产梳理完全够用,商业工具的价值更多在于持续监控和可视化报表,比如自动发现新增子域名、关联漏洞扫描结果,如果你的资产规模在几十个主域以内,免费组合方案与商业工具的实际发现数量差别不大,差别主要体现在自动化调度和告警体验上。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/762823.html

