为什么你的子域名会在互联网上无处遁形?

广告也精彩

我之前一直以为,只要不在 DNS 中公开解析某个子域名、不在网页上挂链接,这个域名就等于隐藏起来了。

但现实是,只要我曾经为某个域名申请过 SSL/TLS 证书,它就几乎一定已经被公开记录,并且任何人都可以轻松查询出来。

其中最常用的查询工具之一,就是 crt.sh

今天我就从技术原理到实际应用,完整讲一讲:

为什么你的子域名会在互联网上无处遁形。

一、crt.sh 是什么?

crt.sh 是一个由 Sectigo(原 Comodo)运营的公开网站,用来查询互联网的 证书透明度(Certificate Transparency,简称 CT)日志

简单来说,它就是:互联网 SSL 证书的搜索引擎。

只要一个网站申请过合法的 HTTPS 证书,它的记录几乎都会被收录。

你可以在这里查询:

  • 某个域名申请过哪些证书
  • 历史证书记录
  • 证书签发机构
  • 有效期
  • SAN(备用域名)
  • 加密算法等详细信息

网址:

https://crt.sh

例如查询:

%.example.com

就可以看到 example.com 所有申请过证书的子域名

二、核心技术:证书透明度(CT)

要理解 crt.sh 的原理,必须先了解 证书透明度(Certificate Transparency)

这是 Google 发起的一项互联网安全机制。

在早期互联网中,证书颁发机构(CA)签发证书的过程是 不透明的

如果发生这种情况:

  • CA 被黑客攻击
  • CA 操作失误
  • CA 恶意签发证书

例如有人为 bank.com 私下签发证书。

银行甚至可能 完全不知道

这会导致严重的 HTTPS 安全问题。

为了解决这个问题,Google 推出了 证书透明度(CT)机制

它的核心规则是:

1 强制公开

所有公开 CA 在签发证书时:

必须将证书信息提交到 公开 CT 日志服务器

2 不可篡改

CT 日志采用类似 Merkle Tree(哈希树) 的结构。

特点是:

  • 只能增加
  • 不能删除
  • 不能修改

这保证了日志的可信度。

3 公开审计

任何人都可以:

  • 查询
  • 审计
  • 监控

这些证书记录。

三、crt.sh 在整个体系中的角色

CT 日志本身是:

  • 海量
  • 分布式
  • 不容易直接查询

于是出现了很多 CT 查询引擎

其中最著名的就是:

crt.sh

它做的事情是:

  1. 持续同步全球 CT 日志
  2. 建立索引数据库
  3. 提供简单的 Web 查询界面

最终变成:互联网证书档案库 + 搜索引擎

四、为什么子域名会泄露?

关键点就在 证书申请过程

假设你为:

dev-api.example.com

申请了一个 Let's Encrypt 证书。

整个流程是这样的:

第一步:申请证书

CA 机构生成证书。

证书中包含:

  • 域名
  • 公钥
  • 有效期
  • 备用域名(SAN)

第二步:写入 CT 日志

CA 必须把证书信息提交到 CT 日志。

第三步:日志公开

CT 日志对全世界开放。

第四步:crt.sh 收录

crt.sh 会自动抓取日志并入库。

最终结果就是:

即使 DNS 没有解析,即使服务器没有上线,域名仍然会出现在公开记录中,而且永久可查。

五、如何通过 crt.sh 发现子域名?

crt.sh 支持 SQL 风格通配符查询

例如:

查询语法作用
example.com查询主域名
%.example.com查询所有子域名
api%.example.com查询 API 相关域名

最常见的用法是:

%.target.com

六、为什么安全研究人员特别喜欢 crt.sh?

在 OSINT(开源情报) 收集阶段,它是非常强大的工具。

主要用途包括:

1 资产发现

发现企业的隐藏服务,例如:

  • dev.example.com
  • admin.example.com
  • staging.example.com

2 子域名枚举

传统方法:

  • DNS 暴力猜测
  • 字典爆破

成功率有限。

而 CT 查询属于被动收集

不会触发:

  • 防火墙
  • IDS
  • WAF

3 推测企业架构

通过证书记录可以推断:

api-v1.example.comapi-v2.example.com

说明:

企业可能有 API 版本管理。

4 发现影子 IT

很多员工会私自部署:

test-jenkins.example.comtemp-server.example.com

这些系统可能:

  • 没有安全审计
  • 没有更新
  • 容易成为攻击入口

七、企业如何利用 crt.sh 做安全防护?

不仅黑客会用,企业自己也应该用。

主要用途包括:

1 钓鱼网站监控

例如:

login-yourbank.com

如果有人申请证书,就可能是钓鱼站,企业可以第一时间发现。

2 证书资产管理

检查:

  • 是否有证书即将过期
  • 是否有未知证书

3 CA 合规审计

安全社区经常通过 crt.sh 调查:

某个 CA 是否违规签发证书。

很多浏览器的 CA 调查报告里都会引用 crt.sh 记录。

八、既然如此,如何避免泄露子域名?

虽然 CT 是强制机制,但仍然有一些方法可以减少暴露。

方法一:使用通配符证书

例如申请:

*.example.com

CT 日志只会记录:

*.example.com

不会出现:

dev.example.comadmin.example.com

这是最常见的解决方案。

方法二:避免敏感命名

不要使用:

secret-feature-2026.example.com

这种暴露业务信息的域名。

方法三:内网使用私有 CA

对于纯内网服务:

建议使用:

  • 私有 PKI
  • 自建 CA

而不是公开 CA。

这样就不会进入 CT 日志。

九、crt.sh 的局限性

需要注意的是:crt.sh 不是万能的

它只能发现:申请过证书的域名。

如果某个子域名:

  • 从未申请证书
  • 只使用 HTTP
  • 只存在内网

那么 crt.sh 也查不到。

十、总结

crt.sh 的出现,本质上是互联网安全透明化的结果。

它让 HTTPS 证书体系变得:

  • 可审计
  • 可监控
  • 可追溯

但同时也意味着:

在 HTTPS 时代你的每一次证书申请,都会留下公开记录。

对于开发者和运维人员来说,这其实是一个提醒:

不要把子域名当作安全边界。

真正的安全,应该来自:

  • 身份认证
  • 访问控制
  • 网络隔离
  • 安全审计

而不是希望别人找不到。

本文来自网络,不代表王道测评立场,如有争议请发邮件:enofun@foxmail.com

AD:【本站QQ交流群】114135944

广告也精彩
众归云
  • 本文来自网络,不代表王道测评立场,转载请注明出处
  • 转载请务必保留本文链接:http://www.20115.net/876.html