证书透明度基本原理
SSL证书颁发机构(CA)根据行业规范,需要将所有颁发的证书信息提交到公共日志系统,形成证书透明度(CT)数据库。这些记录包含证书绑定的完整域名信息,包括主域名及其所有关联子域名。
通过解析CT日志中的Subject Alternative Name扩展字段,可获取证书申请者提交的全部域名列表。该字段通常包含显式子域名和通配符域名(如*.example.com),为发现隐藏子域名提供关键数据源。
在线工具快速查询
以下工具可直接查询证书关联域名:
- crt.sh:支持通配符查询,如输入”%.example.com”获取所有子域名记录
- SSLmate Certificate Search:提供可视化时间线展示证书颁发记录
- VirusTotal:在Relations模块查看域名关联信息
域名 | 首次发现时间 |
---|---|
dev.example.com | 2025-01-15 |
api.example.com | 2025-02-03 |
API自动化获取
通过Python调用CT日志接口实现批量采集:
- 使用requests库请求crt.sh的JSON接口:
https://crt.sh/?q=%.example.com&output=json - 解析响应中的name_value字段提取子域名
- 使用并发处理提升查询效率
数据筛选与验证
获取原始数据后需执行:
- 去重处理:剔除重复记录和通配符条目
- DNS验证:通过nslookup确认域名解析有效性
- 端口扫描:检测80/443端口服务状态
通过整合证书透明度数据与自动化验证流程,可在数分钟内发现传统扫描难以探测的隐藏子域名。该方法已成功应用于多个攻防演练场景,平均每个主域名可发现12.7个未公开子域名。