见缝插针:DNS泛解析是怎么被黑客玩坏的

网络创立之初,所有的访问都是通过IP地址来实现的,因web等协议与应用的兴起,有了域名,再通过IP去访问一方面不太容易记,另一方面因负载、CDN等方面的原因,单纯使用IP地址访问会带来一些问题。因此域名产生了,通过域名访问,中间设备只认识IP,因此最终还是解析到相应的IP地址去访问。 这个用来解析的协议称作DNS,主要功能为将域名解析到相应的IP地址。

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页面源码,过滤<script src= 果然找到相应的JS脚本。

看一下这个js内容,判断条件很简单,http的包头referrer字段,只要referrer字段中有c或者n就跳转到 win.an888.top,否则就跳转到www.*.gov.cn。这样的话就解释了直接打开随机子域名跳转到正常页面而通过百度搜索时跳转到博彩页面的疑问。如果通过直接访问随机子域名会跳转到主站页面,不容易被管理人员发现,但是通过搜索访问时会有referrer字段,只要字段中有c或者n就会跳转到博彩网站。

通过百度搜索访问时有referrer字段

直接访问无referrer字段

注:因截图时,相关网站的DNS泛解析已被关闭,所以截图测试的的是主站。但是原理是一样:通过搜索引擎搜索时都会带有referrer字段,直接访问时不会带有referrer字段。

另外,黑客为什么设置带有c或者n时作为判断跳转的条件,一般情况下都通过搜索查找相应子域名时,referrer都会带有.com或者.cn这样的字段,c和n比较容易触发跳转条件。

总结

初次碰到这种情况时,首先怀疑是的网站被黑,访问相关子域名时跳转到博彩网站,后来再仔细看了下,用户不可能注册这么多的子域名,后来才注意到DNS解析结果的变动。

可见,DNS泛解析是一把双刃剑,配置好的话可以提高用户体验,配置不好的话很容易被黑客利用。另外,经常遇到过运营商在DNS里做过手脚,当用户输入不存在的域名时都会跳转到他们设置好的游戏、搜索类网站。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程之旅

HTTP API 设计指南HTTP API 设计指南

这篇指南介绍描述了 HTTP+JSON API 的一种设计模式,最初摘录整理自 Heroku 平台的 API 设计指引 Heroku 平台 API 指引。

13320
来自专栏枕边书

用Lua定制Redis命令

前言 Redis作为一个非常成功的数据库,提供了非常丰富的数据类型和命令,使用这些,我们可以轻易而高效地完成很多缓存操作,可是总有一些比较特殊的问题或需求需要解...

53770
来自专栏程序员的知识天地

Linux 系统结构详解

内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。部分层次结构如图1-...

58620
来自专栏web前端

JavaWeb 入门1

一、相关基础知识 1、C/S(Client/Server)架构和B/S(Browser/Server)架构 首先说C/S架构,简单讲其实很常见,类似QQ等需要下...

214100
来自专栏用户2442861的专栏

2013年 腾讯笔试题:fork()

如果你对fork()的机制比较熟悉的话,这个题并不难,输出应该是6个“-”,但是,实际上这个程序会很tricky地输出8个“-”。

12910
来自专栏木头编程 - moTzxx

小程序 发送模板消息的功能实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

3.9K20
来自专栏IT可乐

zookeeper 集群搭建

  通过 VMware ,我们安装了三台虚拟机,用来搭建 zookeeper 集群,虚拟机网络地址如下:

13140
来自专栏信安之路

web应用渗透测试流程

对于web应用的渗透测试,一般分为三个阶段:信息收集、漏洞发现以及漏洞利用。下面我们就分别谈谈每个阶段需要做的事情。

17900
来自专栏数据之美

ssh 双机互信:免密码登录设置步骤及常见问题

在 linux 系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其...

451100
来自专栏计算机编程

Ionic2 坑の补充

<h5>写在前面的话:</h5> <b>最近把玩了微信小程序过后,由于对它专属的IDE使用不当,导致在退出关闭计算机的时候没有及时清理缓存,造成缓存碎片留藏在硬...

18020

扫码关注云+社区

领取腾讯云代金券