DNS污染(国内的服务器(非DNS))
通俗解释:
DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。
范例,facebook之类被墙的网站。。你懂的。
DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非 常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。
而DNS污染则是发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。
DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。现在不用这种方式了。
现行标准中 DNS 查询通常使用 UDP 协议并且没有任何验证机制,并且根据惯例查询者会接受第一个返回的结果而抛弃之后的。因此只需监控 53 端口(DNS 标准端口)的 UDP查询数据报并分析,一旦发现敏感查询,则抢先向查询者返回一个伪造的错误结果,从而实现 DNS 污染。
DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。
解决方法
对于DNS劫持,可以采用使用国外公认的DNS服务器解决。例如OpenDNS(208.67.222.222)或GoogleDNS(8.8.8.8)。
对于DNS污染,可以说,个人用户很难单单靠设置解决,通常可以使用VPN或者域名远程解析的方法解决,但这大多需要购买付费的VPN或SSH等,也可以通过修改Hosts的方法,手动设置域名正确的IP地址。
如果需要确认域名遭到了DNS污染而不是其他的故障,首先要了解,DNS劫持是由国内的域名服务器完成的,所以我们把域名服务器换成国外的就可以解 决问题;而DNS污染是由系统完成的,所以即使更换了域名服务器,系统仍旧可以发送伪造的域名解析结果替换正确的解析结果。所以我们可以通过使用一个不存 在的国外IP作为我们的域名服务器进行诊断究竟是DNS劫持还是DNS污染。我们仍旧通过使用nslookup进行网络诊断,选一个不能解析DNSIP为 202.102.152.4:
C:\>nslookup twitter.com 202.102.152.4
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 202.102.152.4: Timed out
Server: UnKnown
Address: 202.102.152.4
Name: twitter.com
Address: 93.46.8.89
我们看到,由于202.102.152.4不能解析DNS,理应没有任何返回。但我们却得到了一个错误的IP:93.46.8.89。我们再测试一下刚才被DNS劫持的IP的情况:
C:\>nslookup www.163.com 202.102.152.4
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 202.102.152.4: Timed out
Server: UnKnown
Address: 202.102.152.4
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Request to UnKnown timed-out
我们看到,www.163.com 没有返回结果,那么它没有被DNS污染。
如果要解决DNS污染,我们只能使用各种加密代理进行远程DNS解析、VPN或利用系统的漏洞了。
总结:国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。
posted on 2013-07-22 16:42 TrustNature 阅读(2927) 评论(0) 编辑 收藏 举报