2018年,网络安全事件频发,我司通过对各安全事件的研究分析,发现很多攻击手段都是通过脆弱的旁站和C段实现的,DDoS亦是如此,它可以导致服务器被占用资源甚至当机。这些攻击得以实施都是由于用户web服务器的真实ip暴露出去了。
一、什么是CDN
首先,我们来认识下最寻常的真实ip隐藏的方法“CDN”。
内容分发网络(content delivery network或content distribution network,缩写作CDN)指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
CDN节点会在多个地点,不同的网络上摆放。这些节点之间会动态的互相传输内容,对用户的下载行为最优化,并借此减少内容供应者所需要的带宽成本,改善用户的下载速度,提高系统的稳定性。国内常见的CDN有ChinanNet Center(网宿科技)、ChinaCache(阿里云)等,国外常见的有Akamai(阿卡迈)、Limelight Networks(简称LLNW)等;如下图,国内外主流的CDN市场格局:
图1
如图:用户先经由CDN节点,然后再访问web服务器。
图2
二、如何判断ip是否是网站真实ip
1.Nslookup法
一般nslookup想要查的域名,若是有多个ip就是用了cdn,多半为假ip;如图:
图3
2.多地ping域名法
也可以从多个地点ping他们想要确认的域名,若返回的是不同的ip,那么服务器确定使用了cdn,返回的ip也不是服务器的真实ip;
常用的网址有以下:
图4
图5
3.“常识”判断法
为什么叫“常识”判断法呢?
①在反查网站ip时,如果此网站有1000多个不同域名,那么这个ip多半不是真实ip。常用的ip反查工具有站长工具、微步在线等等。微步在线支持同服域名查询、子域名查询、服务查询、whois反查等,要注意的是,查询部分信息有次数限制,需先注册账号。
②如果一个asp或者asp.net网站返回的头字段的server不是IIS、而是Nginx,那么多半是用了nginx反向代理,而不是真实ip。
③如果ip定位是在常见cdn服务商的服务器上,那么是真实ip的可能性就微乎其微了。
三、如何寻找真实ip
1.子域名查找法
因为cdn和反向代理是需要成本的,有的网站只在比较常用的域名使用cdn或反向代理,有的时候一些测试子域名和新的子域名都没来得及加入cdn和反向代理,所以有时候是通过查找子域名来查找网站的真实IP。下面介绍些常用的子域名查找的方法和工具:
①微步在线
上文提到的微步在线功能强大,只需输入要查找的域名(如baidu.com),点击子域名选项就可以查找它的子域名了,但是免费用户每月只有5次免费查询机会。如图:
图6
②Dnsdb查询法
只需输入baidu.com type:A就能收集百度的子域名和ip了。如图:
图7
③Google 搜索
Google site:baidu.com -www就能查看除www外的子域名,如图:
图8
④各种子域名扫描器
这里,主要为大家推荐子域名挖掘机和lijiejie的
图9
子域名挖掘机仅需输入域名即可基于字典挖掘它的子域名,如图:
图10
Subdomainbrute以windows为例,仅需打开cmd进入它所在的目录输入Python subdomainbrute.py baidu.com --full即可收集百度的子域名,如图:
图11
总结:收集子域名后尝试以解析ip不在CDN上的ip解析主站,真实ip成功被获取到。
2.ip历史记录解析查询法
有的网站是后来才加入CDN的,所以只需查询它的解析历史即可获取真实ip,这里我们就简单介绍几个网站:微步在线等等。
图12
3.网站漏洞查找法
通过网站的信息泄露如phpinfo泄露,github信息泄露,命令执行等漏洞获取真实ip。
4.网站订阅邮件法
可以通过网站订阅邮件的功能,让网站给自己发邮件,查看邮件的源代码即可获取网站真实ip。
5.理想zmap法
首先从 apnic 网络信息中心获取ip段,然后使用Zmap的 banner-grab 对扫描出来 80 端口开放的主机进行banner抓取,最后在 http-req中的Host写我们需要寻找的域名,然后确认是否有相应的服务器响应。
6.网络空间引擎搜索法
常见的有以前的钟馗之眼,shodan,fofa搜索。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。
图13
7.F5 LTM解码法
当服务器使用F5 LTM做负载均衡时,通过对set-cookie关键字的解码真实ip也可被获取,例如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000,先把第一小节的十进制数即487098378取出来,然后将其转为十六进制数1d08880a,接着从后至前,以此取四位数出来,也就是0a.88.08.1d,最后依次把他们转为十进制数10.136.8.29,也就是最后的真实ip。
通过以上的方法,被获取到的ip可能是真实的ip、亦可能是真实ip的同c段ip,还需要要对其进行相关测试,如与域名的绑定测试等,最后才能确认它是不是最终ip。
所以,为了保护我们服务器,我们不好轻易暴露我们的真实ip,可以使用CDN、WAF等,在使用CDN的同时先确认ip历史记录中,是否存在你的真实ip,记得更换ip后再开启CDN。若网站有订阅邮件或发邮件的需求,可选择独立的服务器发取。子域名的ip记得隐匿,或者采取与主服务不同c段的服务器。