用 SSL/TLS 证书发现子域名

所有 TLS 证书签发时都会被记入公开的 Certificate Transparency (CT) 日志,而每张证书的 SANs 字段列出了它覆盖的域名。搜索 CT 是最可靠的被动子域名枚举方式 —— 包括 staging 主机、内部面板、开发环境,这些 DNS 扫描完全看不到。

为什么 CT 日志能暴露子域名

CA 签发 TLS 证书时必须提交到多个 CT 日志(Chrome 和 Safari 拒绝信任未被记录的证书)。证书的 Subject Alternative Names (SANs) 扩展列出了它覆盖的每个 hostname。证书本体和 SANs 都永久成为公开日志的一部分。

结果是:只要有人为 staging.example.com、internal.example.com 或 admin-old-2019.example.com 申请过 TLS 证书,那个 hostname 就永久可被公开发现 —— 即使主机已下线、即使 DNS 不再解析、即使证书早已过期。

分步操作

1. 在浏览器试一下

在下方搜任意域名 —— CT Radar 会返回该域名及其子域名曾经签发的所有证书。

Try: ···

2. 用 CLI 拿可管道输出

# install
$ go install github.com/imfht/ct-radar@latest
$ export CT_RADAR_KEY=<your-key>

# enumerate
$ ct-radar example.com
api.example.com
admin.example.com
internal.example.com
staging.example.com
dev-old.example.com
... 847 unique subdomains

3. 管道传给 httpx 找活跃主机

$ ct-radar example.com | httpx -silent
https://api.example.com [200]
https://staging.example.com [403]
https://admin.example.com [401]
... 124 live hosts

4. 与主动枚举结合

# CT (passive) + subfinder (passive DNS) + amass (active brute force)
$ {
    ct-radar example.com;
    subfinder -d example.com -silent;
    amass enum -passive -d example.com;
  } | sort -u | httpx -silent
... 1,247 live hosts

提示与边界

先来一次搜索

免费档每天 100 次查询。搜索框不需要登录。

搜索证书 →