信息收集之真实IP查询
2019-10-14
常见的渗透过程中,获取到目标的真实IP之后对于我们渗透会启到事半功倍的效果。
我们来认识下真实IP隐藏方法“内容分发网络(CDN)”。
CDN是Content Delivery Network或Content Distribution Network的缩写, CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

解析为单个IP 可能为真实IP 如下图:

2.多地PING
使用不同区域ping,查看ping的ip结果是否唯一。
网站有:ping www.baidu.com, ip结果不唯一,目标网站可能存在CDN
一般常用多地ping网站:
http://ping.chinaz.com/
http://ping.aizhan.com/

3.使用工具直接查询
工具大致原理通过查找网站IP查找他的域名,子域名,服务,定位是否为常见cdn服务商的服务器等,来判断是否为真实IP。可以参考以下网站
https://www.cloudflare.com
https://www.IPIP.net/IP.html

绕过CDN寻找真实IP
1.子域名
CDN 有些是收费的,且价格并不便宜,所以很多只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。
查询子域名的工具网站有subDomainsBrute、Sublist3r、Google hack,Dnsdb查询网站https://dnsdb.io/zh-cn/ 输入baidu.com type:A就能收集百度的子域名和IP了。SubDomainsBrute利用 Subdomainbrute.py qq.com --full即可收集百度的子域名
2.利用网站漏洞
如果目标站点存在漏洞,这无法避免了。例如phpinfo敏感信息泄露、Apache status和Jboss status敏感信息泄露、网页源代码泄露、svn信息泄露信、github这类代码管理站上信息泄露等。
若存在web漏洞,服务器主动与我们发起请求连接,我们也能获取目标站点真实ip。例如xss盲打、ssrf、命令执行反弹shell等。
利用社工或其他手段,获取真实IP地址。
3.历史记录
通过DNS缓存查询,查看IP与域名绑定的历史记录,可能会存在使用CDN之前的记录,从而得到IP。
查询网站有:
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
http://toolbar.netcraft.com/site_report?url=
http://viewdns.info/
http://www.17ce.com/
https://community.riskiq.com/
http://www.crimeflare.com/cfssl.html/
利用SecurityTrails平台(https://securitytrails.com/),攻击者就可以精准的找到真实原始IP,只需在搜索字段中输入网站域名,然后按Enter键即可,这时“历史数据”就可以在左侧的菜单中找到。
除了过去的DNS记录,即使是当前的记录也可能泄漏原始服务器IP。例如,MX记录是一种常见的查找IP的方式。如果网站在与web相同的服务器和IP上托管自己的邮件服务器,那么原始服务器IP将在MX记录中。
4.CDN本身
若从CDN本身入手,当你碰巧获得CDN管理员账号,或是通过社工或积累的字典,得到控制面板的账号密码,那真实ip就很轻易能获取到了。
5.Mx记录或邮件
很多站点都有发送邮件sendmail的功能,如RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实IP了。
6.国外请求
国内很多 CDN 厂商因为各种原因只做了国内的线路,而针对国外的线路可能几乎没有,此时我们使用国外的主机直接访问可能就能获取到真实IP。查询网站:https://asm.ca.com/en/ping.php(建议利用VPN登录)。
7.扫描探测
通过信息收集,缩小扫描范围,通过http指纹特征和keyword等做综合判断。可使用工具如下:
https://github.com/zmap/zgrab/
http://www.ipdeny.com/ipblocks/
zgrab 是基于zmap无状态扫描的应用层扫描器,可以自定义数据包,以及ip、domain之间的关联。可用于快速指纹识别爆破等场景。Zmap全网扫描,ZMap是一种“无状态”的工具,有些工具会向一台主机发出请求,随后等待接到请求的主机作出回应。ZMap不会保留未获回复请求的清单,而是在传出的数据包中对识别信息进行编码,这样一来该工具就能对回复进行鉴别。利用Zmap快速的特征,搜索全部host为目标域名的IP,利用筛选条件找到真实IP。
可参考这篇文章:利用Zgrab绕CDN找真实IP
首先从apnic网络信息中心获取ip段,然后使用Zmap的 banner-grab 对扫描出来 80 端口开放的主机进行banner抓取,最后在 http-req中的Host写我们需要寻找的域名,然后确认是否有相应的服务器响应。
我们使用www.wooyun.org 作为案例。
首先从www.wooyun.org 服务多次挂的页面可以看出, wooyun 使用了 baidu 的 cdn 服务, 从 wooyun 的漏洞案例上也可以知道 wooyun 使用了 ucloud 的服务, 我们可以大胆假设 wooyun 服务器的 ip 在中国内.
0x1. 获取 CN IP
从apnic获取亚洲区域所分配到的IP, 过滤出 CN 的 IP.
0x2. 端口扫描
使用 zmap 对全 CN 的 IP 的 80 端口进行扫描.
0x3. 获取 banner
使用 zmap 的 banner-grab 对扫描出来80 端口开放的主机进行 banner 抓取。
嗯, 在 http-req 中的 Host 写 www.wooyun.org, 并且使用 ulimit 将最大文件描述符数修改为一个较大的值。
直接开扫:
0x4. 数据处理
使用关键字 "80sec" 对获取的数据进行简单过滤
这 400+ 的服务器, 一般可以分为三种:
* baidu cdn server
* http proxy server
* www.wooyun.com server
可以对这 400+ 服务器再进行一次 banner 获取,不设置 Host, 过滤掉 baidu cdn 错误页面、空页面、超时等乱七八糟的页面,然后就可以得到结果了。
8.网络空间搜索引擎法
常见的有钟馗之眼,shodan(https://www.shodan.io/),fofa搜索(https://fofa.so/)。以fofa为例,只需输入:title:“网站的title关键字”或者body:“网站的body特征”就可以找出fofa。
网络空间搜索引擎就是将互联网上公开的网络资产收集和整理,以此方便人们进行查阅和利用。常见的有zoomeye、fofa、shodan通过这些公开的安全搜索引擎爬取得历史快照,收录的有这些关键字的ip域名,很多时候能获取网站的真实ip。主要得一些特征总结如下:
(1)特有的http头部(如server类型、版本、cookie等信息)、
(2)特定keyword(如title、css、js、url等)、
(3)特定的IP段搜索(如fofa支持C段搜索),
有些时候爬取的时候不一定含有上面那些特征,但是我们仍然需要仔细排查。
9.查询HTTPS证书
查询网站:https://censys.io/
这个网址会将互联网所有的ip进行扫面和连接,以及证书探测。若目标站点有https证书,并且默认虚拟主机配了https证书,我们就可以找所有目标站点是该https证书的站点。
当我们的域名假如是www.123.com 原始IP地址为132.295.202.2,我们将域名托管给cdn管理,cdn提供DDOS防御,内容发布cdn加速等服务,web服务器与cdn进行安全通信会支持https、ssl并具有证书,通信过程中可能会安全,但443端口连接地址时会暴露证书。利用Censys设置参数搜索:
443.https.tls.validation.browser_trusted: true parsed.names: www.baidu.com
逐个点开,在右上角有Explore可以挑选证书与ID,设置证书各类设置:
挑选证书与ID相同,筛选后点击Certificate查看OpenSSL:
10.LTM负载均衡解码获取真实IP
负载均衡就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
具体流程:F5修改cookie机制
F5 LTM做负载均衡时,有多种机制实现会话保持。其中用到很多的一种是通过修改cookie来实现的。F5在获取到客户端第一次请求时,会使用set cookie头,给客户端埋入一个特定的cookie。
比如:Set-Cookie: BIGipServerpool_8.29_8030=487098378.24095.0000
后续再接到客户端请求时,F5会查看cookie里面的字段,判断应该交给后续哪台服务器。F5当然不会直接把服务器IP address写入到cookie里面。而是很巧妙的把server的真实IP address做了两次编码,然后再插入cookie。所以,只要依据解码流畅,解开487098378.24095.0000的内容,就拿到了server的真实IP address。
解码思路:
首先,把第一小节的十进制数取出来,也即,487098378
第二,将其转为十六进制数1d08880a
第三,从后至前,以此取四位数出来,也即,0a;88;08;1d;
第四,依次把他们转为十进制数:10;136;8;29
最后,得到真实内网IP:10.136.8.29
对抗思路
保护服务器,删除敏感信息,不要轻易暴露真实IP,在使用CDN的同时先确认IP历史记录中,是否存在真实IP,记得更换IP后再开启CDN。若网站有订阅邮件或发邮件的需求,可选择独立的服务器发取。子域名的IP同时也记得隐匿,或者采取与主服务不同c段的服务器。甚至对全站开启CDN服务。
Reference
https://www.e-https://threathunter.org/topic/5940c85d9c58e020408a79fe
http://www.52bug.cn/hacktool/5225.html
https://zhuanlan.zhihu.com/p/33440472
备注:部分案例及截图来自于互联网,如有侵权,请联系告知。