DNS的创造是网络大师的一大杰作,通过DNS广大网民可以通过域名来访问相应的网站。这样只需要记住域名就可以了,不需要记住繁琐的IP地址。如我们经常访问的www.vants.org,其DNS解析过程如下:
上图可以看到,DNS的解析非常轻巧,使用UDP 协议,一个DNS查询包,一个响应包,两个包搞定,简洁轻巧,效率高。但是在实际过程中经常会遇到一个问题:输入域名的时候如www.vants.org,一不小心多输入一个w变成wwww.vants.org,这样的话,可以正常解析吗?我做了一下实验,在浏览器输入wwww.vants.org,浏览器直接报错“无法访问此网站”
我们来看看DNS的解析流程,客户端进行了一次DNS查询,DNS服务器查询以后返回一个结果“NO such name A wwww.vants.org”,可以看到DNS服务器进行查询后,查找不到这样的结果。
为什么wwww.vants.org解析不到相应的IP?原因很简单,DNS没有相应的配置,但是在现实中,肯定经常存在用户输入错误域名前缀的情况,如果网站服务方考虑的足够人性化,完全可以配置一个DNS解析记录,配置一个默认解析结果。在DNS实现中,的确有这样一套机制,这个称作DNS泛解析。
既然有DNS泛解析这样一套机制,在实际生活中肯定会存在相应的应用。那么我们来亲测一下,首先拿google开刀,随机输入一个子域名看看能不能正常解析,解析不了;再测试一下度娘,也解析不了。
两大寡头都不支持泛解析,继续找下小站,公司渗透大牛很不屑的扔给我一批开了泛解析的域名,随便测试一个,可以解析到主站的IP上。
既然泛解析有这么人性化的应用,那么像google、度娘为什么不打开DNS泛解析?这肯定是考虑到安全与运维成本等方面。DNS泛解析还存在安全问题?的确存在!上图中的泛解析是解析到主站的IP,如果泛解析的IP被解析到其他的IP,或者是黑客的IP呢?
有这种情况?的确,在实际工作中多次遇到这种情况。前天发现一政府的门户网站通过度娘搜索子域名时,搜索到301000个站点,通过搜索的结果直接点击进入,发现有很多子域名都跳转到博彩网站。
通过ping测试,发现主站解析到61.191.*.*,而泛解析却被解析到23.105.65.113,这个IP是美国的IP。DNS的泛解析结果肯定被黑客恶意修改了。
既然被DNS被泛解析到恶意的IP,并且有这么多解析记录,那么用户为什么一直没有发现这个问题?这令我百思不得其解。直到有一次在浏览器中输入一个随机子域名访问时,竟然跳转到正常主站页面上去了。既然可以根据用户的访问条件(通过搜索或直接输入)在博彩与正常主站之间跳转,那么在23.105.65.113这个页面肯定存在一个判断的条件,触发这些条件时跳转到博彩网站,没有触发时跳转到正常页面。一般情况下,都是通过JS来做识别和跳转的,这样只要过滤相应的JS脚本即可,直接分析23.105.65.113页面源码,过滤src= 果然找到相应的JS脚本。
看一下这个js内容,判断条件很简单,http的包头referrer字段,只要referrer字段中有c或者n就跳转到win.an888.top,否则就跳转到www.*.gov.cn。这样的话就解释了直接打开随机子域名跳转到正常页面而通过百度搜索时跳转到博彩页面的疑问。如果通过直接访问随机子域名会跳转到主站页面,不容易被管理人员发现,但是通过搜索访问时会有referrer字段,只要字段中有c或者n就会跳转到博彩网站。
|