DNS污染【备忘】

DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或域名服务器缓存投毒(DNS cache poisoning)

是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。一般来说,外间在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。

域名服务器缓存污染可能是通过域名服务器软件上的设计错误而产生,但亦可能由别有用心者通过研究开放架构的域名服务器系统来利用当中的漏洞。

缓存污染攻击

一般来说,一部连上了互联网的电脑都会使用互联网服务提供商提供的域名服务器。这个服务器一般只会为供应商的客户来服务,通常都会储蓄起部分客户曾经请求过的域名的缓存。缓存污染攻击就是针对这一种服务器,以影响服务器的用户或下游服务。

防火长城的缓存污染攻击

在中国大陆,对于所有经过防火长城的在UDP的53端口上的域名查询进行IDS入侵检测,一经发现与黑名单关键词相匹配的域名查询请求,其会马上伪装成目标域名的解析服务器给查询者返回虚假结果。由于通常的域名查询没有任何认证机制,而且域名查询通常基于的UDP协议是无连接不可靠的协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。[2]

  • 对于不了解相关知识的网民来说也就是,由于系统默认使用的ISP提供的域名查询服务器查询国外的权威服务器时即被防火长城被污染,使其缓存受到污染,因而默认情况下查询ISP的服务器就会获得虚假IP地址;而用户直接查询境外域名查询服务器(比如Google Public DNS)有可能会被防火长城污染,从而在没有任何防范机制的情况下仍然不能获得目标网站正确的IP地址。[2]
  • 防火长城暂时未对TCP协议下的域名查询进行污染,故现在能通过强制使用TCP协议查询真实的IP地址:Windows下打开命令提示符,输入nslookup -vc 要查询的域名 境外DNS服务器的IP地址(必须支持TCP协议查询,否则不会返回查询结果),回车后能返回正确的目标服务器IP地址。而现实的情况是,防火长城对于真实的IP地址也可能会采取其它的手段进行封锁,故能否真正访问可能还需要其它翻墙的手段。

验证DNS污染的办法

我们在命令行下通过这样一条命令 nslookup 域名 144.223.234.234,即可判断该域名是否被污染,由于144.223.234.234不存在,理应没有任何返回。但我们却得到了一个错误的IP(不确定)。即可证明这个域名已经被DNS污染了。


解决DNS污染方案
 
1、修改hosts文件,操作系统中Hosts文件的优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
 
2、如果你是Firefox only用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入about:config找到network.proxy.socks_remote_dns一项改成true。
 
3、使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网。
 
4、通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。


来源:http://zh.wikipedia.org/wiki/DNS%E6%B1%A1%E6%9F%93



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值