1. 为什么你需要关心子域名收集你可能觉得子域名收集听起来像是安全专家或者黑客才会干的事儿离自己很远。其实不然这事儿比你想象的有趣也实用得多。简单来说一个主域名比如baidu.com下面可以有很多个子域名比如tieba.baidu.com、map.baidu.com、pan.baidu.com。这些子域名就像是主公司大楼里的不同部门或秘密房间。把它们都找出来有什么用呢如果你是网站管理员或者安全运维定期收集自己公司的子域名能帮你发现那些被遗忘的、疏于管理的“影子资产”。这些资产可能因为开发人员随手搭建的测试环境、历史遗留的旧系统甚至是被攻击者悄悄创建的钓鱼站点它们往往安全防护薄弱是攻击者最喜欢下手的突破口。提前发现它们就等于堵上了潜在的安全漏洞。如果你是一名开发者或者技术爱好者这个过程本身就充满了探索的乐趣。它像是一场数字世界的寻宝游戏通过一些巧妙的工具和公开的网站你能窥见一个庞大互联网公司的技术架构脉络发现一些不为人知的内部服务或测试接口这对于理解大型系统的设计思路非常有帮助。当然这一切都必须在法律和道德允许的范围内进行只针对自己有权限测试的目标或明确允许公开测试的资产。我刚开始接触这块的时候纯粹是出于好奇。就想看看一个耳熟能详的大网站背后到底藏了多少“小房间”。结果一挖发现了很多有意思的东西比如一些早已停止更新但还能访问的旧版后台或者一些用于内部通信的API地址。这个过程不仅锻炼了技术也让我对网络空间的“表面积”有了更直观的认识——攻击面往往就隐藏在这些被遗忘的角落里。2. 从公开信息入手备案与Whois查询在动用任何自动化工具之前我强烈建议你先从公开的、合法的信息渠道开始。这不仅能帮你建立对目标的基本认识很多时候还能发现一些自动化工具容易遗漏的“旁路”信息。2.1 网站备案信息查询国内的网站上线通常需要进行ICP备案这些备案信息是公开可查的里面包含了主办单位、网站负责人等关键信息。虽然不直接列出子域名但能帮你确认目标主体的真实性有时还能发现关联的其他备案网站这些网站可能就是子域名挖掘的起点。工信部ICP/IP地址/域名信息备案管理系统这是最官方的渠道。你可以直接输入域名查询其备案号、主办单位名称。它的价值在于权威性但查询结果比较基础主要是主体信息。天眼查、企查查等商业平台这些平台聚合了企业的公开信息包括备案信息。它们的优势在于关联查询能力。比如你查到了A公司的备案平台可能会提示你“该公司还备案了以下域名B.com, C.cn”。这些关联域名很可能与你的目标存在业务或技术上的联系甚至可能就是其子域名或兄弟域名极大地拓宽了你的侦查范围。我个人的习惯是拿到一个主域名后先用天眼查过一遍看看这个公司名下到底有多少个备案域名形成一个初步的“资产地图”。这一步非常省力而且信息质量很高。2.2 Whois查询挖掘注册的蛛丝马迹Whois 是一个用来查询域名注册信息的协议你可以把它理解为域名的“身份证信息库”。里面通常包含注册商、注册人、注册邮箱、联系电话、DNS服务器地址以及注册和过期时间。在渗透测试或安全评估中Whois信息能提供不少线索注册邮箱攻击者可能会尝试用这个邮箱进行密码重置攻击撞库或者通过社工库查找该邮箱注册的其他账号。注册人/电话可用于社会工程学攻击或关联其他资产。DNS服务器如果目标使用自建或特定的DNS服务器如ns1.target.com那么这个DNS服务器本身就是一个有价值的子域名并且可能指向关键的基础设施。历史Whois信息有时候现在的注册信息被隐私保护服务隐藏了但历史Whois记录可能还保留着真实信息。好用的Whois查询网站非常多我挑几个我常用的说说who.is国外的老牌查询站信息全面响应快。对于国际域名查询效果很好。站长之家 / 爱站网国内站长必备查询国内域名信息很顺手界面友好还会提供一些额外的SEO信息。微步在线这其实是一个威胁情报平台它的Whois查询功能会结合自身的数据库给出一些威胁标签和关联分析比如这个域名是否曾与恶意软件、钓鱼网站有关联非常实用。腾讯云 / 阿里云万网各大云服务商提供的查询接口准确性和时效性有保障。我的经验是不用死磕一个网站。可以多用几个交叉查询因为不同平台的数据源和更新速度可能有差异。比如用who.is查一下再用微步在线验证一下是否有风险情报这样得到的信息更立体。3. 利用公开数据集和搜索引擎有些网站和平台本身并不主动扫描而是聚合了海量的DNS解析记录、证书透明度日志、搜索引擎爬虫历史等公开数据集。通过这些数据来反查子域名效率极高覆盖面广。3.1 基于DNS历史记录的查询互联网上有一些服务会持续地、大规模地扫描和记录全球的DNS解析记录形成庞大的数据库。我们可以直接去这些数据库里“捞”目标域名的所有历史解析记录。SecurityTrails这个平台的数据非常强大它提供了完整的DNS历史记录、子域名枚举、关联域名查询等功能。不过免费账户有次数限制。DNSDumpster一个完全免费的在线工具界面简洁直接输入域名就能返回它发现的子域名列表和相关的DNS记录A记录、MX记录等还会生成一个直观的域名地图对于快速侦查非常友好。HackerTarget提供了“Find DNS Host Records”功能其实就是基于其数据集进行子域名查询速度很快结果也还不错。Netcraft老牌的网络调查工具其“Search DNS”功能可以查询子域名并且会显示网站的服务器类型、操作系统等信息。使用这些网站时你经常会发现一些意想不到的子域名比如dev、staging、test、beta等这些往往是开发或测试环境安全防护级别较低是需要重点关注的区域。3.2 威胁情报平台的妙用威胁情报平台原本是用来追踪恶意软件、攻击团伙的但它们收集的海量数据如恶意样本通信的域名、钓鱼网站使用的域名也使其成为了一个绝佳的子域名来源。攻击者控制的“命令与控制服务器”C2有时会伪装成目标的子域名。VirusTotal你可能只知道它用来查文件病毒但它对域名的分析功能极其强大。在VT上搜索一个域名查看“Relations”标签页它会展示出该域名关联的子域名、被该域名解析的IP地址上的其他域名等数据来源非常丰富。AlienVault OTX一个开放的威胁情报社区用户可以提交和查询各种威胁指标。在OTX上搜索域名可以看到是否有任何安全事件、攻击活动与该域名或其子域名相关联并可能发现其他未知的子域名。微步在线国内的顶尖威胁情报平台除了Whois它的“域名查询”功能会聚合多种数据源给出子域名列表、IP解析历史、关联恶意家族等信息对于国内目标的适配性更好。实测下来用VT和微步作为互补效果非常棒。VT的全球数据更全而微步对国内特有的恶意软件和黑产活动捕捉更及时。3.3 证书透明度日志查询这是一个非常高级但极其有效的技巧。为了确保SSL/TLS证书的签发公开透明有一个叫“证书透明度”的机制所有公开信任的证书颁发机构签发的证书都会被记录到公开的日志中。这些日志里包含了证书申请的所有域名包括子域名。crt.sh这是查询证书透明度日志最著名的网站。你只需要输入%.target.com它就能找出所有包含target.com的证书从而暴露出大量的子域名包括那些可能没有公开解析但已经申请了证书的内部系统。搜索引擎语法在Google或百度中可以使用site:*.target.com这样的语法来搜索所有子域名下的页面。虽然不如专业工具全面但有时能发现一些独特的、被收录的页面。我印象最深的一次就是通过crt.sh为一个客户做资产梳理时发现了一个他们IT部门都完全不知道的vpn.internal.target.com的证书记录而这个子域名指向的正是他们一个老旧且存在漏洞的VPN设备入口。这种发现往往价值连城。4. 神器登场自动化子域名枚举工具手动查网站毕竟效率有限要想进行深入、全面的收集必须请出自动化工具。这些工具会集成上面提到的多种技术并发地进行查询是实战中的主力。4.1 OneForAll集大成者的瑞士军刀如果只能推荐一个工具那我绝对选OneForAll。它是国人开发者用Python写的几乎集成了所有已知的被动查询和主动爆破方法。所谓被动查询就是调用第三方的API像我们前面提到的那些网站来获取数据速度快且隐蔽。主动爆破则是尝试猜测常见的子域名前缀如www,mail,dev然后向目标的DNS服务器发起查询验证是否存在。它的强大之处在于数据源极其丰富内置了上百个被动查询接口和常用的字典。智能去重与验证自动对结果进行去重并验证子域名是否真实可解析存活。结果输出美观支持导出为txt、csv、json等多种格式并且会自动生成一个清晰的HTML报告。使用起来也不复杂。首先你需要一个Python3环境。安装好OneForAll后在它的目录下打开终端运行一条命令就能开始扫描python3 oneforall.py --target example.com run运行结束后结果默认保存在results文件夹下。打开对应的CSV或HTML文件所有发现的子域名、解析IP、所属CDN等信息一目了然。我刚开始用的时候对着它跑出来的几百上千条结果真的有种“挖到矿”的兴奋感。不过要注意大量、频繁地调用API可能会被某些数据源限制工具里通常有延迟配置来避免这个问题。4.2 Subfinder / AmassGo语言打造的利刃如果你觉得Python环境配置麻烦或者需要更高的执行效率那么用Go语言编写的工具是你的菜。Subfinder专注于被动子域名收集速度极快。它通过并发查询数十个公开的API和搜索引擎来收集信息。它的命令非常简单subfinder -d example.com -o results.txtAmass功能更为全面可以说是子域名枚举领域的“重炮”。它融合了被动收集、主动爆破、递归爆破、证书透明度查询、甚至爬虫技术。它的学习曲线稍陡但功能也最强大。一个基本的命令如下amass enum -passive -d example.com -o results.txt这里的-passive参数表示只进行被动收集如果想进行全面的主动枚举可以去掉这个参数但速度会慢很多对目标的影响也更大。Go语言工具的好处是编译成单个可执行文件分发和运行非常方便尤其在临时性的测试环境或者服务器上。我自己的工作流里通常会先用Subfinder快速过一遍拿到一个初步列表然后再用OneForAll进行更深度的、补充性的收集。4.3 子域名爆破字典的艺术当被动收集手段用尽后主动爆破就是最后也是最直接的方法。它的原理很简单用一个包含大量常见子域名前缀如admin,api,test,mail,webmail的字典文件依次拼接上你的主域名然后向DNS服务器发起查询看是否有响应。subDomainsBrute这是国内安全研究员lijiejie开发的一个经典爆破工具。它小巧高效自带一个不错的字典并且支持泛解析检测防止目标配置了泛解析导致所有猜测都返回有效结果。使用命令类似这样python3 subDomainsBrute.py example.com -o output.txt字典的选择与制作爆破的效果很大程度上取决于字典的质量。网上有像subdomains-top1million-5000.txt这样的公开大字典但往往体积庞大命中率低。更好的方法是结合目标特性使用定制化字典。比如如果目标是电商公司可以加入shop,cart,pay等前缀如果是IT公司可以加入jenkins,gitlab,nexus等开发运维组件的前缀。你可以把多次测试中收集到的有效子域名积累起来形成自己的专属字典这才是最有价值的资产。爆破是一把双刃剑它会产生大量的DNS查询流量对目标DNS服务器造成压力也容易被对方的监控系统发现。因此在授权测试中要控制好并发线程数-t参数并尽量选择在业务低峰期进行。我踩过的坑就是有一次线程开得太高直接把对方一个老旧DNS服务的查询响应拖慢了触发了告警。5. 进阶技巧与资产关联拓展当你收集到一大堆子域名和对应的IP地址后工作其实只完成了一半。如何从这些数据中提炼出更有价值的信息构建出清晰的资产拓扑图才是更见功力的地方。5.1 IP反查与C段扫描一个IP地址上可能托管了多个不同域名的网站这就是所谓的“虚拟主机”。通过IP反查你可以找到与你的目标网站部署在同一台服务器或同一个IP段上的其他网站。这些网站可能与你的目标属于同一家公司兄弟公司或不同业务线也可能是完全无关的邻居。但无论如何如果这个IP或服务器存在漏洞那么同在上面的所有网站都可能受到牵连。在线工具像ip-adress.com和yougetsignal.com都提供“Reverse IP Lookup”功能。你输入一个IP它会尝试列出共享这个IP的所有域名。工具集成像OneForAll和Amass在枚举子域名时通常也会收集IP信息。你可以把结果中的IP列表提取出来专门进行反查。对于整个C段即IP地址的前三段相同如192.168.1.*的扫描则需要用到像nmap这样的端口扫描工具先发现存活主机再对存活的IP进行反查。我曾经通过IP反查发现目标公司的一个官网和一个早已被遗忘的、运行着老旧CMS的子公司网站放在同一台服务器上。那个老旧CMS存在已知的严重漏洞从而成为了进入官网内网的跳板。5.2 端口扫描与服务识别找到子域名和IP之后下一步就是看看这些资产上开放了哪些端口运行了什么服务。一个开放的8080端口可能是管理后台22端口是SSH3306是MySQL数据库6379是Redis。这些信息能帮你快速定位高风险点。Masscan Nmap 组合Masscan是全网最快的端口扫描器号称几分钟就能扫遍整个互联网。你可以先用它快速扫描目标IP段的所有常见端口。然后针对Masscan发现的开放端口再用Nmap进行精细化的扫描识别服务版本、操作系统甚至尝试一些安全的漏洞检测脚本。# 使用Masscan快速扫描 masscan -p1-65535 192.168.1.0/24 --rate1000 -oJ masscan_output.json # 使用Nmap对发现的端口进行详细扫描 nmap -sV -sC -p 80,443,8080 192.168.1.10 -oA nmap_scan在线服务对于少量目标也可以使用shodan.io或fofa.so这样的网络空间搜索引擎。直接输入IP或域名它们就能告诉你开放了哪些端口和服务以及一些 banner 信息非常方便。5.3 信息整理与可视化收集到的数据是零散的你需要把它们整理起来形成一张“资产地图”。我习惯用电子表格第一列放子域名第二列放解析的IP第三列放开放的端口和服务第四列放备注如是否存活、是否为重点目标等。更进一步可以使用一些工具进行自动化整理和可视化。比如将OneForAll和Nmap的扫描结果JSON或XML格式导入到Maltego这样的图形化情报分析工具中。Maltego 可以自动将域名、IP、公司实体、邮箱等元素作为节点将它们之间的关系如“解析到”、“位于同一IP”、“Whois邮箱相同”作为连线自动生成一张非常直观的关系图谱。这张图能帮你一眼看清资产的全貌和内在联系对于大型企业的安全评估来说是必不可少的成果输出。整个子域名收集和资产梳理的过程就像玩一个大型的、数字版的拼图游戏。每一件工具、每一个技巧都是一块拼图碎片。从最基础的公开信息查询到利用庞大的网络数据集再到主动的自动化枚举和深入的关联分析每一步都充满了发现和验证的乐趣。最重要的是在这个过程中培养出的那种对网络空间结构的敏感度和系统性侦查的思路其价值远远超过学会使用某几个具体的工具。工具会更新换代但这种主动探索、关联思考的能力才是真正让你在技术道路上走得更远的东西。