分类
未分类

浅谈DNS-DNS污染与劫持

什么是DNS
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以
IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:DNS
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。
虽然因特网上的节点都可以用IP地址惟一标识,并且可以通过IP地址被访问,但即使是将32位的二进制IP地址写成4个0~255的十位数形式,也依然太长、太难记。因此,人们发明了域名(Domain Name),域名可将一个IP地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是www.microsoft.com,不管用户在浏览器中输入的是207.46.230.229还是www.microsoft.com,都可以访问其Web网站。
一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,类似的还有:IBM公司的域名是www.ibm.com、Oracle公司的域名是www.oracle.com、Cisco公司的域名是www.cisco.com等。当人们要访问一个公司的Web网站,又不知道其确切域名的时候,也总会首先输入其公司名称作为试探。但是,由一个公司的名称或简称构成的域名,也有可能会被其他公司或个人抢注。甚至还有一些公司或个人恶意抢注了大量由知名公司的名称构成的域名,然后再高价转卖给这些公司,以此牟利。已经有一些域名注册纠纷的仲裁措施,但要从源头上控制这类现象,还需要有一套完整的限制机制,这个还没有。所以,尽早注册由自己名称构成的域名应当是任何一个公司或机构,特别是那些著名企业必须重视的事情。有的公司已经对由自己著名品牌构成的域名进行了保护性注册。
2.DNS劫持与污染:
什么是DNS劫持
DNS劫持:就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。
  DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。
  举个例子易于理解:说到劫持,我们可能联想到一个坏蛋劫持了DNS服务器,拿着刀架在脖子上。这时候你问DNS服务器,up主帅吗?(发出请求)。DNS服务器听到了,他心里的答案是,好帅哦(返回正确ip地址)。由于坏蛋控制了他,并且对他做了修改。所以DNS只好不情愿的说,你真丑(错误的ip地址)。这个过程中,你和DNS服务器之间,一来一回,流程上没有任何问题,唯一的问题就是,DNS服务器告诉了你错误的ip地址。DNS也不想啊,但是有人控制了他的权限,或者修改了他的记录值等等。我们称为DNS劫持。类似我们使用网络的时候,明明访问的是普通网站,却突然跳到什么电信什么宣传页面一样。
什么是DNS污染
  DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。 DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。它是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。DNS污染是发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。
  DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。
  还是举个例子易于理解:这招是GFW(中国防火墙)常用的。你访问google.com 因为人家服务器在国外,你的DNS过去解析,肯定要走国际带宽的出口,然后就被GFW逮住了。因为DNS 走的是UDP协议,且UDP又没有什么校验机制,只管发送。所以这时候,GFW就假装成DNS服务器回应你了,而此时真正的请求可能正在被真正的DNS服务器处理,假的已经返回给你了,浏览器就选择了最快返回的那个地址去解析了。当然是一个不可用的地址啦。
  因为DNS 走的UDP协议,并且是53端口,所以这有多好发现也就不言而喻了。如果你强行让DNS走TCP协议,GFW 有办法让你连接重置,虽然污染不了你的DNS,但是你还是无法获得ip。
  也就是为什么有一种FQ方式就叫修改host 文件或代理(VPN),修改后,域名不需要去DNS服务器请求了,直接在你的操作系统里就已经解析出了ip 地址。但是,GFW还是会定期封杀这些网站的ip地址,你的host就没用了。
DNS劫持与污染的区别_小结
  DNS劫持——就是指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。
  你去解析一个不存在的域名的时候,DNS 本来应该告诉我们这个域名不存在,但是被劫持后 DNS 就会给我们解析出一个 IP。常见的情况就是电信 114 搜索。解决方法就是换成 Google DNS 就可以了解决了。
  DNS污染——指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。

发表评论