Skip to content

dns-attack-summary

复制本地路径 | 在线编辑

title: DNS 学习一:域名劫持和域名污染简单介绍及例子

名词: 域名劫持 ,域名污染 = 域名缓存投毒 = 域名欺骗。

基本是从网上一篇文章上学来的,也算是转载吧,贴一下转载说明。

版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:https://program-think.blogspot.com/2014/01/dns.html

域名劫持

域名服务器上都会保存一大堆的域名记录(每条记录包含“域名”和“IP地址”)。当收到域名查询的时候,域名服务器会从这堆记录中找到对方想要的,然后回应给对方。
如果域名服务器上的某条记录被人为修改了(改成错的),那么一旦要查询这条记录,得到的就是错误的结果。这种情况称之为“域名劫持”。

谁有“域名劫持”的企图?

“域名劫持”通常是电信运营商(ISP)干的好事儿。很多宽带用户用的域名服务器就是 ISP 提供给你的。
举例:
  前几年曾经出现过:某个 ISP 跟百度勾结,把谷歌的流量重定向到百度。具体搞法是:该 ISP 篡改自己的域名服务器的记录,把里面跟 google.com 相关的域名记录的 IP 地址修改为百度服务器的 IP 地址。如此一来,假设你用的是这个 ISP 的域名服务器,当你在浏览器输入 www.google.com 的时候,你的电脑查询到的 IP 地址其实是百度的 IP 地址,所以浏览器打开的是“百度”的主页。

域名污染

域名污染 = 域名缓存投毒 = 域名欺骗

当你的电脑向域名服务器发送了“域名查询”的请求,然后域名服务器把回应发送给你的电脑,这之间是有一个时间差的。如果某个攻击者能够在域名服务器的“DNS 应答”还没有到达你的电脑之前,先伪造一个错误的“DNS 应答”发给你电脑。那么你的电脑收到的就是错误的信息,并得到一个错误的 IP 地址。

GFW 的两种“域名污染”

分为两种污染,普通的骇客顶多只能做到“直接污染”,GFW 还可以做到做到“大范围的间接污染”。

GFW 怎么做到污染?

互联网只有少数几个国际出口(例如北京出口、上海出口)。如果访问外网,必定会经过某个“国际出口”。而每一个国际出口都部署了 GFW 的设备。而如果访问国内的网站,就不会走国际出口。你可以简化想象:国际出口就是我们这个超大局域网的边界路由器。

GFW 的直接污染

访问外网,使用外网的 DNS 服务器,“DNS请求”必定会经过国际出口;同样,DNS服务器的“DNS应答”必定也会经过国际出口才能到你的电脑。GFW 因此可以在这一来一回进行直接污染。

GFW 的间接污染

如果你用的是国内的DNS 服务器?就会被“间接污染”。过程如下:
1. 比方说你用的是电信的 DNS 服务器,然后你想要访问外网。
2. 外网的上级域名的“权威域名服务器”在国外。“电信的DNS服务器” 就会去找这个外网对应的“权威域名服务器”去进行“域名查询”。
3. 因为是从国外进行域名查询,相关的数据流必定要经过国际出口。一旦经过国际出口,就会被 GFW 污染。
4. 如此一来,“电信的域名服务器”拿到的是已经被污染的域名记录(里面的IP是错的)。而且“电信的域名服务器”会把这条错误的记录保存在自己的域名缓存中。
5. 下次如果有另一个网友也访问该外网,也会查到错误的结果。

上述过程不断重复,最终会导致:全国所有的域名服务器,它们的缓存中只要是包含了该外网的记录,记录中的 IP 地址必定是错的。
现在来理解投毒,“投毒”一词真的非常形象 -- 就好象在某条河流的源头下毒,从而把整条河流的水都污染。

Comments