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污染的办法
来源:http://zh.wikipedia.org/wiki/DNS%E6%B1%A1%E6%9F%93