通过Censys引擎,教你绕过 CDN 精准找到源站IP

发布时间: 访问量:78

前言

大家好,我是VoltCary当我们谈论绕过CDN查找真实IP的时候,不得不提到SSL证书,它确实是我们寻找真实IP的一大利器,至于为什么SSL证书会导致源站IP泄露?很多人或许没有深入了解这个问题。目前好像还没有几篇文章详解过,只是将其作为绕过CDN查找源站IP文章中一部分。

为了安全考虑,或者为了访问速度考虑,重要的域名应该都会加上CDN,也能保护一下源站ip不被泄露,再加上一层SSL证书,表面上,SSL证书看起来安全无比,包含的只是加密通信所需的公钥、域名信息以及证书颁发机构的相关信息,与服务器真实IP毫无关系。
然而,事实真的是这样吗?本文将深入剖析SSL证书如何成为泄露源站IP的关键,并借助Censys工具来揭示其中的秘密。

什么是censys?

提到证书查询IP的情况,不得不提到知名的网络搜索引擎Censys,它通过持续扫描全球的IP地址,收集并分析网络设备的信息。其核心能力在于对证书和网络服务的深度解析。

censys工作原理

全网扫描 扫描范围:Censys会定期扫描整个公共IPv4地址空间,覆盖数十亿个IP地址。端口选择:扫描数千个常用端口(超过3500个),以发现不同的网络服务和协议。协议检测:通过自动协议检测,Censys能够识别每个开放端口上运行的服务类型。服务识别:在扫描过程中,Censys会与目标端口建立连接,获取服务的Banner信息(即服务的标识信息),以确定运行的具体服务和版本。 证书收集

对于加密服务(如HTTPS),Censys会在握手过程中收集SSL/TLS证书信息,包括证书的公钥、域名信息(如Common Name和Subject Alternative Name)以及颁发者信息等。

SSL证书如何导致源站IP泄露?

综上所述,Censys扫描全球在线IP,包括端口、证书、元数据,此时censys数据库中已经存储了大量相关数据。攻击者先获取CDN的域名,查询域名的相关SSL证书信息,结合Censys语法进行查询,censys数据库中存储了大量源站IP的证书信息,利用这些信息与攻击者输入的证书信息匹配,存在相关性,那么就把这些IP作为域名的源站IP。
因此,证书是网络中非常可靠的“身份标识”,可以跨域名和IP进行关联。

场景分析

当源站IP证书与域名证书存在如下场景,CDN很有可能被绕过:

1. 域名证书与源站ip证书完全一致

每个SSL证书都有唯一的指纹(SHA256哈希值)、序列号和序列号有效期,用于标识此证书的唯一性。场景1就是源站IP和域名都共同使用了这个证书。
censys比对证书的公钥和指纹:证书中的公钥用于加密和解密数据,其指纹是公钥的哈希值。Censys通过比对证书的公钥和指纹,可确定证书的唯一性和真实性,若两个证书的公钥或指纹相同,可认定它们存在关联。

2. 域名证书与源站IP证书存在相关性

每个SSL证书都有主题和颁发者信息:包含了域名、组织名称、国家等主题信息,以及颁发者的相关信息。
场景2就是源站与域名证书的这些信息存在相关性的情况。
Censys通过比对这些信息,可直接判断证书之间的关联,如两个证书的主题或颁发者相同或相似,可能存在关联。

3. 通过证书链识别

•验证证书的合法性与完盩性:证书链由终端实体证书、中间证书和根证书组成,Censys会检查证书链中的每个证书是否有效且完整,通过验证证书链上每个证书的签名,确保其未被篡改,从而确认证书的可信度以及与根证书的关联关系。

•追溯证书的颁发路径:Censvs 通过分析证书链中各证书的颁发者和主体信息,明确证书的颁发路径,若多个域名的证书链最终指向同一个根证书或中间证书,可推断这些域名的证书存在关联。

•发现潜在的信任关系:证书链中的根证书通常由权威的证书颁发机构颁发,被广泛信任。如果不同域名的证书链共享同一根证书或中间证书,意味着这些域名在信任层面上存在一定关联,可能属于同一组织或存在业务合作关系。

4. 分析协议行为

利用Censys分析目标CDN域名使用的应用层协议行为,通过查找协议中的特定字段、请求头、响应头、服务器标识等信息,结合已知的源站特征或常见的服务器配置,尝试识别与源站IP的关联,使用类似“protocols.http.headers.server: “Server Name””的语法进行搜索。

实战操作

censys支持过滤输出Hosts、证书,并根据用户输入的关键字,这些关键字如果匹配Hosts、证书中的任意内容,例如Certificate、Fingerprint、Details等内容,就会输出相应的Hosts、证书。

1.查询域名可信任证书
(multipattern.com) and labels=trusted
返回了6个有效可信任的证书

2.查询使用此证书的Hosts
找到IP:66.155.40.24

结果分析:
可以确定的是IP:66.155.40.24是CDN
与前面域名使用的是同一个证书,但是还不能盲目确定它们都是同一家企业的资产。毕竟它们有可能使用的是CDN厂商提供的共享证书,CDN厂商的共享证书,会被多个不同
的用户使用。
下一步查看证书相关信息,如果证书SAN中只包含这一个域名,可以推测该IP与域名存在相关性,有可能是真实IP。

总结

SSL证书并非天衣无缝,它可以在无意间暴露源站IP。借助Censys这样的工具,攻击者能够轻松地从证书信息中获取线索,进而定位源站IP。

安全团队需要更加警惕,通过合理的配置和持续的监控,避免这种隐患的发生。

以下是一些防止 Censys 通过证书链识别出源站 IP 和 CDN 域名关联的方法:

1.配置访问限制:
配置防火墙,禁止公开源站ip 
屏蔽 Censys 的 IP 段 

Censys 的 IP 段在其官网有。我的机子使用的是 Ubuntu 系统,带有 UFW 防火墙,按照下面的命令建立规则即可。

Censys IP段 :https://support.censys.io/hc/en-us/articles/360043177092-Opt-Out-of-Data-Collection

屏蔽 Censys 的 UA:在 CDN 的配置中,设置规则屏蔽 Censys 扫描使用的用户代理(UA),如在 Cloudflare CDN 的 “安全性 - WAF - 自定义规则” 中,将 “用户代理” 字段设置为等于 “Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)” 进行屏蔽。

2.利用服务器特性:
Nginx 特性:如果使用 Nginx 服务器且版本在 1.19.4 及以上,可在配置文件中添加 “ssl_reject_handshake on;” 指令,当通过 IP 访问时会终止 TLS 握手,避免暴露域名。
使用反向代理:在源站和 CDN 之间设置反向代理服务器,对源站 IP 进行隐藏,使 Censys 难以直接获取源站与 CDN 域名的关联。

3.设置虚假站点
生成假证书和假站点:创建一个虚假的网站,生成自签的空白 SSL 证书并应用到该假站点上,将假站点设置为默认站点。
设置返回代码:在假站点的配置文件中,添加返回特定状态码的指令,如 “return 444;”,使通过 IP 访问时返回无法访问的页面,隐藏真实源站。

更多文章