
子域名挖掘前置基础 05Web 与网络层本篇定位前面四篇讲的都是 DNS 层——域名怎么解析、记录是什么、委派怎么运作。但子域名解析到 IP 之后背后跑的是 Web 和网络服务。本篇讲子域名背后的 Web 与网络层——CDN、负载均衡、网络架构图、HTTP/HTTPS 与 TLS 基础。这些知识决定了你拿到的 IP 是不是目标真实服务器。阅读建议本篇只讲基础概念和原理。CDN 绕过技巧、TLS 证书挖掘价值这些实战方法留到后续子域名搜集方法章节。一、CDN 介绍与 CDN 调度子域名挖掘里有一个高频问题——为什么你nslookup拿到的 IP往往不是目标的真实服务器答案就是 CDN。1.1 什么是 CDNCDNContent Delivery Network内容分发网络是通过全球分布的边缘节点缓存和加速内容交付的架构。要理解 CDN先理解没有 CDN 时的痛点用户访问www.example.comDNS 解析到源站 IP比如在美国的一台服务器全球用户都打到这台服务器——离得远的用户延迟高、服务器压力大、网络一旦中断所有人都访问不了。CDN 的解法是在源站和用户之间加一层缓存节点角色位置作用源站目标企业自己的服务器真正的内容来源CDN 的上游边缘节点CDN 服务商全球分布的节点缓存源站内容用户就近访问用户任意地理位置访问时被调度到最近的边缘节点工作流程是用户请求 → 被调度到最近的边缘节点 → 边缘节点缓存命中就直接返回、未命中就回源站取一份缓存起来再返回。这样源站 IP 被隐藏在 CDN 后面用户看到的是边缘节点的 IP。关键认知CDN 的本质是中间缓存层。源站 IP 被隐藏——这就是为什么子域名挖掘里拿到一个走 CDN 的子域名 IP不能直接当成目标真实 IP 去扫端口。1.2 CDN 的调度核心智能 DNSCDN 怎么知道用户在哪儿、该返回哪个节点 IP靠的是智能 DNS。普通 DNS 查询返回的是固定 IP不管你从哪查都一样。但 CDN 的 DNS 不一样——它返回哪个 IP取决于查询者的来源 IP。这就是智能二字的含义DNS 应答会根据查询者地理位置变化。DNS 解析api.example.com返回 1.2.3.4北京边缘节点HTTPS 请求SNI: api.example.com缓存命中缓存未命中回源请求返回内容缓存 返回DNS 解析返回 5.6.7.8纽约边缘节点HTTPS 请求用户北京CDN 的智能 DNS根据用户 IP 的地理位置返回最近的边缘节点 IP北京边缘节点IP: 1.2.3.4缓存层源站/回源地址Host: api.example.com可能是 LB 或真实服务器用户纽约纽约边缘节点IP: 5.6.7.8从挖掘者视角解读角色作用挖掘意义智能 DNS红根据用户地理位置返回最近的边缘节点 IP你拿到的 IP 取决于你从哪查——北京查和纽约查不同边缘节点橙缓存层用户看到的 IP直接扫端口没意义你扫的是 CDN 节点不是目标源站绿真实后端服务器找到源站 IP 是绕过 CDN 的核心目标1.3 CDN 调度对子域名挖掘的影响影响点说明地理位置差异在北京查和纽约查同一个子域名返回的 IP 不同多 IP 结果同一子域名在不同时间解析到不同 IP不能直接扫端口扫的是 CDN 节点不是目标必要时多地域验证用多个地理位置的 DNS 节点交叉查询关键认知识别 CDN 不是为了绕过这一步就搞定而是为了给每个子域打上是否走 CDN的标记。这个标记决定了后续每个子域的处理方式——走 CDN 的不能直接扫端口没走 CDN 的可以直接扫。1.4 CDN 检测的基础信号只讲概念如何判断一个子域名是否走了 CDN基础信号有信号类型说明CNAME 链含 CDN 关键词cloudflare、akamai、fastly、cloudfront、wangsu网宿多地域解析不同 IP在不同地理位置查同一域名返回不同 IPIP 归属是 CDN 服务商IP 归属查显示运营商是 CDN 而非目标企业响应头含 CDN 特征cf-rayCloudflare、x-akamai、x-amz-cf-idCDN 绕过的具体思路历史 DNS、邮件服务器、SSL 证书等留到后续主动探测章节展开。二、负载均衡CDN 是公网入口层的加速再往里就是负载均衡。负载均衡决定了一个域名背后可能挂了多少台服务器。2.1 什么是负载均衡负载均衡Load Balancing是把进入的流量分发到多台后端服务器的技术。目的是分摊压力、提高可用性、做横向扩展。要理解负载均衡先理解没有它时的痛点一台服务器扛不住高峰流量、一旦宕机服务就中断、没法动态扩容。负载均衡的解法是在服务器集群前面加一个分发器——所有请求先到分发器由它按一定策略转发给后端某一台服务器。用户看到的只是分发器的 IP后端服务器对用户不可见。2.2 两种负载均衡模式这两种模式的根本区别是工作在 OSI 模型的哪一层——四层只看网络层信息IP端口七层会拆开 HTTP 请求看内容。模式工作层级看什么做分发挖掘意义L4四层 LB传输层只根据 IP端口转发不解析 HTTP 内容同一 IP 上可能承载多种协议HTTP、MySQL、Redis 都可能L7七层 LB应用层解析 HTTP 请求根据 Host 头或 URL 路径分发同一 IP端口上可能托管多个子域名——IP 反查能发现更多子域简单记忆L4 只看信封IP端口L7 拆开信封看内容Host 头、URL。L7 能基于 Host 头分发是关键——这意味着一个 IP 可以托管多个子域名是 IP 反查发现新子域的原理基础。2.3 常见负载均衡实现类型说明典型实现特点硬件负载均衡专用硬件设备F5 BIG-IP性能强、贵、企业级软件负载均衡跑在通用服务器上LVS、Nginx、HAProxy灵活、成本低、最常见云负载均衡云厂商提供阿里云 SLB、AWS ELB/ALB弹性伸缩、按量付费2.4 负载均衡的调度算法基础分发器用什么策略选后端服务器常见的几种算法怎么选对挖掘的影响轮询按顺序一台一台轮多次请求可能打到不同后端最少连接选当前连接数最少的高负载时倾向打到空闲服务器IP Hash同一来源 IP 固定打到同一台同一 IP 的请求总到同一后端行为稳定加权按权重比例分发配置强的后端分得多挖掘关注负载均衡意味着同一域名背后有多台后端、同一域名多次请求可能返回不同内容。这是正常的不是异常——做 HTTP 探测时要意识到这一点。2.5 对子域名挖掘的意义影响点说明一个域名对应多个 IP负载均衡会让你拿到多个 IP都是 LB 的不是后端的一个 IP 承载多个子域L7 LB 下一个 IP 可能托管多个子域名——IP 反查能发现更多子域后端服务器不可见LB 后面的真实服务器 IP 从外部看不到是正常的关键认知负载均衡让你看到的 IP 是 LB 的公网 IP不是后端服务器的真实 IP。这和 CDN 一样——你拿到的是入口不是目标。三、网络架构图从用户到后端的全景把 CDN 和负载均衡串起来就是一个完整的网络架构。这一节用一张图展示从用户到后端的完整链路。3.1 整体网络架构图真实世界的 Web 系统不只有 CDN 和 LB中间还可能有 WAF、反向代理等层。下面是一张更完整的链路图1. DNS 解析api.example.com返回 IP2. HTTPS 请求SNI: api.example.com过滤后回源请求Host: api.example.com分发请求浏览器DNS 系统递归→根→TLD→权威WAF可选层拦截恶意请求CDN 节点可选层缓存 加速负载均衡器LB反向代理Nginx 等可选层后端服务器集群真实 IP 隐藏在这里3.2 每一层的角色层作用是否一定存在你能看到的DNS 系统域名→IP 翻译一定解析出的 IPWAF检测拦截恶意请求可选有时通过响应头能识别CDN 节点缓存、加速、隐藏源站可选你拿到的 IP 经常是这里的负载均衡器流量分发到后端大型站点常有LB 的公网 IP反向代理路由、限流、鉴权常与 LB 合一一般看不到后端服务器集群真正处理业务逻辑一定从外部看不到3.3 为什么你拿到的 IP 往往不是目标真实 IP关键认知你ping、nslookup看到的 IP 是 CDN 节点或负载均衡器的不是目标后端服务器的。这就是为什么 IP 归属分析如此重要——你必须先判断这个 IP 是 CDN 的还是目标的否则后续的端口扫描、漏洞扫描全打在 CDN/LB 上毫无意义。3.4 不是所有网站都走全套链路上面的架构图是完整链路但现实中不同规模的网站链路不同网站规模典型链路你拿到的 IP 性质小网站/个人站浏览器 → 后端服务器真实服务器 IP可直接扫端口中型企业站浏览器 → LB → 后端集群LB 的 IP不是后端真实 IP大型站点浏览器 → CDN → WAF → LB → 后端CDN 节点 IP需要绕过找源站云原生应用浏览器 → CDN → 云 LB → K8s → PodCDN 或云 LB 的 IP关键认知拿到一个子域的 IP 后第一件事不是扫端口而是判断这个 IP 处于链路的哪一层。不同层级的 IP后续处理方式完全不同。3.5 子域名挖掘里的真实 IP问题子域名挖掘能发现子域名和解析 IP但这些 IP 的性质各不相同IP 性质怎么判断后续处理CDN 节点CNAME 含 CDN 关键词、IP 归属是 CDN不扫端口要绕 CDN 找源站负载均衡器IP 归属是云厂商、响应特征可扫端口但打的是 LB真实服务器IP 归属是目标企业、非 CDN高价值直接扫端口共享主机一个 IP 上有多个域名IP 反查发现更多子域四、HTTP/HTTPS 与 TLS 证书基础子域名发现不只是 DNS 的事。一个子域名有 A 记录不代表它上面跑着 Web 服务——可能只是一个邮件服务器、一个 VPN 入口。你需要做 HTTP 探测来判断这个子域名上到底有没有服务、是什么服务。4.1 HTTP 与 HTTPS 的基本区别协议说明端口安全性HTTP超文本传输协议明文传输80内容可被中间人看到、篡改HTTPSHTTP TLS 加密443内容加密防窃听防篡改两者的本质区别是有没有 TLS 这层加密。HTTP 的请求行、请求头、请求体全是明文任何能抓到包的人都能看到你访问了什么、提交了什么。HTTPS 在 HTTP 下面加了一层 TLS先把数据加密再传中间人只能看到加密后的密文。挖掘关注子域名挖掘做 HTTP 探测时同一个子域名要同时试 80 和 443 端口——有些站点只在 80 提供 HTTP有些只在 443 提供 HTTPS还有些 80 会 301 跳转到 443。4.2 HTTPS 的大致流程本篇只讲大致流程不讲握手细节。TLS 握手涉及密钥交换、加密套件协商等这些对子域名挖掘不是核心。我们关心的是这个流程里有哪些信息可以收集。服务器浏览器服务器浏览器1. ClientHello含 SNI: 我要访问哪个域名2. ServerHello 证书含域名、SAN、颁发机构、有效期3. 密钥交换4. 加密的 HTTP 请求5. 加密的 HTTP 响应每一步发生了什么步骤做什么信息暴露1. ClientHello浏览器告诉服务器我要访问哪个域名SNI、支持哪些加密套件SNI 明文传输——中间人能看到你要访问的域名2. ServerHello 证书服务器返回选定的加密套件、服务器证书证书含域名、SAN、颁发机构、有效期——这些都能看到3. 密钥交换双方协商出对称密钥后续内容用这个密钥加密4. 加密请求浏览器发送加密后的 HTTP 请求中间人看不到内容5. 加密响应服务器返回加密后的 HTTP 响应中间人看不到内容关键认知HTTPS 加密的是步骤 4 和 5 的内容但步骤 1 的 SNI 和步骤 2 的证书是明文传输的。这就是为什么你能从网络流量里抓到 TLS 证书信息——证书本身不是秘密。4.3 TLS 流程里能收集的信息信息在哪挖掘价值SNIClientHello 里暴露客户端要访问的域名证书域名证书的 CN 字段这个 IP 上跑着哪个域名的服务SAN证书的 Subject Alternative Name一张证书可能覆盖多个子域名颁发机构证书的 Issuer 字段Let’s Encrypt 说明自动化部署自签名说明测试环境有效期证书的 Not Before / Not After刚签发说明活跃部署过期未续签说明被遗忘的服务4.4 SNI 是什么SNIServer Name Indication服务器名称指示是 TLS 握手时客户端告诉服务器我要访问哪个域名的扩展字段。要理解 SNI 解决什么问题先看没有它的情况一台服务器一个 IP上托管了a.com和b.com两个 HTTPS 站点每张证书不同。但 TLS 握手时服务器不知道你要访问哪个域名——它应该返回哪张证书没法决定。早期 TLS 没办法解决只能一个 IP 配一张证书。SNI 的解法客户端在 ClientHello 里带上我要访问a.com服务器据此返回a.com的证书。这样一个 IP 上就能托管多个 HTTPS 站点。挖掘意义SNI 让一个 IP 托管多域名成为可能。反过来你拿一个 IP 去查所有指向它的域名IP 反查可能翻出同一台服务器上托管的、目标企业其他业务线的子域。4.5 SAN 是什么SANSubject Alternative Name证书主体可选名称字段是证书里列出这张证书覆盖哪些域名的字段。要理解 SAN 解决什么问题先看没有它的情况一张证书只能绑定一个域名CN 字段写的那个。你有api.example.com、staging-api.example.com、admin-api.example.com三个子域要上 HTTPS就要签三张证书、配三次。SAN 的解法把多个域名都写进一张证书的 SAN 字段里一张证书覆盖多个子域。挖掘意义一张证书的 SAN 里可能藏着多个你不知道的子域名。你查一张api.example.com的证书SAN 里可能写着staging-api.example.com、admin-api.example.com——这些是你之前不知道的子域名。这就是证书透明度日志挖掘子域名的原理。4.6 HTTP 状态码的语义不是背状态码含义而是理解每个状态码对挖掘者意味着什么状态码通用含义对挖掘者的意义200正常响应服务存在可继续探测301/302重定向重定向链可能暴露新的子域名401未授权需要登录认证——往往是登录页或受限接口价值高403禁止访问有内容但你没权限——往往是管理后台、内部系统价值最高404不存在这个路径没有服务但也可能是 WAF 拦截的假信号502/503后端故障服务可能临时下线但域名仍在值得监控关键认知401/403 之所以价值高是因为它说明这里有东西只是不让你看——这和 404确实没有完全不同。401/403 往往指向管理后台或内部接口是后续重点突破目标。另外 301/302 重定向链可能暴露新的子域名比如app.example.com重定向到sso.example.com做登录——这个sso子域名可能不在你之前的列表里。五、本篇小结概念一句话CDN源站和用户之间的缓存层让你拿到的 IP 不是目标真实 IPCDN 调度智能 DNS 根据用户地理位置返回最近的边缘节点 IP负载均衡在服务器集群前加分发器你看到的是 LB 的 IPL4 vs L7L4 只看 IP端口L7 看 HTTP 内容含 Host 头网络架构浏览器 → DNS → WAF → CDN → LB → 反代 → 后端真实 IP 藏最里不同规模链路不同小站直连后端大站走全套链路IP 性质不同HTTP/HTTPSHTTP 明文、HTTPS 加密子域名要 HTTP 探测判断有没有服务TLS 证书SNI 和证书明文传输SAN 可能覆盖多个子域名SNI让一个 IP 托管多域名IP 反查能发现更多子域状态码401/403 价值最高“有但不让你看”301/302 可能暴露新子域下一篇我们讲云与基础设施——云架构、WAF、ASN。附本篇关键术语速查术语简明解释CDN内容分发网络源站和用户之间的缓存层源站CDN 背后的真实后端服务器边缘节点CDN 的缓存节点用户看到的 IP 是这里的回源CDN 缓存未命中时向源站发请求智能 DNSCDN 根据用户地理位置返回最近节点 IP 的 DNS负载均衡在服务器集群前加分发器分发流量到多台后端L4 负载均衡工作在传输层只看 IP端口转发L7 负载均衡工作在应用层看 HTTP 内容含 Host 头转发调度算法LB 选后端服务器的策略轮询、最少连接、IP Hash 等反向代理位于 LB 和后端之间的中间层做路由、限流、鉴权HTTP明文 Web 协议端口 80HTTPSHTTP TLS 加密端口 443TLS传输层安全协议HTTPS 的加密基础SNITLS 握手时客户端告诉服务器要访问哪个域名明文传输SAN证书覆盖的域名列表字段一张证书可覆盖多个子域证书透明度公开记录所有签发证书的日志系统状态码HTTP 响应码标识请求结果