在新型涉网案件中,我们在搜集到目标主站之后常常需要获取对方网站的真实IP去进一步的信息搜集,但是现在网站大多都部署了CDN,将资源部署分发到边缘服务器,实现均衡负载,降低网络堵塞,让用户能够更快地访问自己的网站。
CDN的全称是Content Delivery Network,即内容发布网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。(百度百科)
CDN给用户带来便捷的同时也给取证人员带来了更大的挑战,如果网站存在CDN,那么你拿到的IP也是一个分发的虚拟节点,在这个节点所搜集的信息基本是无用功。所以,我们必须绕过CDN去找到网站的真实IP。
常见 CDN 服务商
一、国内 CDN 服务商
-
阿里云 CDN
-
百度云 CDN
-
七牛云 CDN
-
又拍云 CDN
-
腾讯云 CDN
-
Ucloud
-
360 CDN
-
网宿科技
-
ChinaCache
-
帝联科技
二、国外 CDN 服务商
-
CloudFlare
-
StackPath
-
Fastly
-
Akamai
-
CloudFront
-
Edgecast
-
CDNetworks
-
Google Cloud CDN
-
CacheFly
-
Keycdn
-
Udomain
-
CDN77
2
判断CDN的存在
那么我们要如何判断一个网站是否存在一个CDN呢?
方法1:
很简单,使用各种多地 ping 的服务,查看对应 IP 地址是否唯一,如果不唯一多半是使用了CDN, 多地 Ping 网站有:
http://ping.chinaz.com/
http://ping.aizhan.com/
http://ce.cloud.360.cn/
方法2:
使用 nslookup 进行检测,原理同上,如果返回域名解析对应多个 IP 地址多半是使用了 CDN。
有 CDN 的示例:
无CDN 的示例:
3
绕过CDN寻找真实IP
方法1: 查询历史DNS记录
查看 IP 与 域名绑定的历史记录,可能会存在使用 CDN 前的记录,相关查询网站有:
https://dnsdb.io/zh-cn/ ###DNS查询
https://x.threatbook.cn/ ###微步在线
http://toolbar.netcraft.com/site_report?url= ###在线域名信息查询
http://viewdns.info/ ###DNS、IP等查询
https://tools.ipip.net/cdn.php ###CDN查询IP
方法2: 子域名查询
由于目标服务可能在主站上做好了相应的CDN,但是由于种种原因例如部署费用过高,或者对二级域名不上心等,所以导致二级域名没有部署到CDN,这时我们可以从这个方面入手进行查询。利用子域名搜集工具等搜集到足够的子域名后,便可以对通过子域名进行真实IP的搜集。
下面介绍些常用的子域名查找的方法和工具:
1)微步在线(https://x.threatbook.cn/)
微步在线功能强大,只需输入要查找的域名(如baidu.com),点击子域名选项就可以查找它的子域名了,但是免费用户查询次数有限。如图:
2)Dnsdb查询法。(https://dnsdb.io/zh-cn/)
只需输入baidu.com type:A就能收集百度的子域名和ip了。如图:
3)各种子域名扫描器
这里,主要为大家推荐子域名挖掘机,仅需输入域名即可基于字典挖掘它的子域名,如图:
在开发网站的时候,开发者可能会将一时疏忽忘记将可能泄露信息的 php探针等处理掉,让我们有机可乘
通过谷歌语法去搜集
inurl:phpinfo.php inurl:xxxxxx
方法3: 网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
方法4: 国外主机解析域名
大部分 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的DNS查询,很可能获取到真实IP。
国外多PING测试工具:
https://asm.ca.com/zh_cn/ping.php http://host-tracker.com/ http://www.webpagetest.org/ https://dnscheck.pingdom.com/
方法5: 网站邮件头信息
比如说,邮箱注册,邮箱找回密码、RSS邮件订阅等功能场景,通过网站给自己发送邮件,从而让目标主动暴露他们的真实的IP,查看邮件头信息,获取到网站的真实IP。
方法6: 通过 SSL 证书
-
证书颁发机构 (CA) 必须将他们发布的每个 SSL/TLS 证书发布到公共日志中,SSL/TLS 证书通常包含域名、子域名和电子邮件地址。因此可以利用 SSL/TLS 证书来发现目标站点的真实 IP 地址。
-
CDN 运营商在给服务器提供保护的同时,也会与其服务器进行加密通信(ssl),这时当服务器的 443 端口接入域名时也会在 443 端口暴露其证书,我们通过证书比对便可发现网站的真实 IP 地址。
-
SSL证书搜索引擎:
https://censys.io/ipv4?q=github.com
方法7: 网站漏洞查找
1)目标敏感文件泄露,例如:phpinfo之类的探针、GitHub信息泄露等。
2)XSS盲打,命令执行反弹shell,SSRF等。
3)无论是用社工还是其他手段,拿到了目标网站管理员在CDN的账号,从而在从CDN的配置中找到网站的真实IP。
方法8: 扫描全网
通过Zmap、masscan等工具对整个互联网发起扫描,针对扫描结果进行关键字查找,获取网站真实IP。
https://github.com/zmap/zmap
https://github.com/robertdavidgraham/masscan
方法9: 通过 F5 LTM 解码
-
LTM 是将所有的应用请求分配到多个节点服务器上。提高业务的处理能力,也就是负载均衡。
-
当服务器使用 F5 LTM 做负载均衡时,通过对 set-cookie 关键字的解码,可以获取服务器真实 ip 地址。
例如:
Set-Cookie: BIGipServerpool_9.29_5229=605532106.22012.0000
-
先把第一小节的十进制数,即 605532106 取出来
-
将其转为十六进制数 2417afca
-
接着从后至前,取四个字节出来:CA AF 17 24
-
最后依次转为十进制数 202.175.23.36,即是服务器的真实 ip 地址。
方法10: 利用HTTP标头寻找真实原始IP
例如,Censys上用于匹配服务器标头的搜索参数是80.http.get.headers.server :,查找由CloudFlare提供服务的网站的参数如下:
80.http.get.headers.server:cloudflare
4
总结
CDN原本的目的是为了改善互联网的服务质量,提高访问网站速度,然而有些违法网站用了此技术,对我们的取证侦破带来不少麻烦,通过以上介绍一些简单的方法,可以有一定概率查找出CDN背后的真实服务器IP。在办案过程中,如果确认了是国内的CDN厂商的话,也可以尝试去调证。