浅谈DNS劫持相关概念及原理

目录

 

一、前言

二、什么是DNS?

三、DNS原理

1.DNS工作原理

2.DNS服务器

3.本地DNS

4.域名的层级

5.根域名服务器

四、DNS劫持

1.什么是DNS劫持

2.DNS劫持的方法

五、历史著名DNS劫持案例

   参考文献:


一、前言

DNS(Domain Name Server 或 Domain Name System):域名解析服务器;

IP地址(Internet Protocol Address):互联网协议地址,例如:221.194.147.226(今日头条IP地址);

域名(Domain Name):是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置),例如:https://www.toutiao.com/ .

二、什么是DNS?

在网络中,机器之间只认识IP地址,机器之间最终都要通过IP来互相访问。但是为了方便记忆,可以为IP地址设置一个对应的域名,通过访问域名,就可以找到对应IP地址的网站。

比如,我们访问今日头条官网的时候,在浏览器地址栏输入头条地址:

https://www.toutiao.com/

看似我们访问的是域名,而实际上是通过IP地址访问的今日头条官网。

在终端命令窗口ping 今日头条官网域名,就可以看到该域名对应的IP地址:

浅谈DNS劫持相关概念及原理_第1张图片

从 www.toutiao.com 到 221.194.147.226 的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。

(注:直接使用 221.194.147.226 是无法访问今日头条官网的,这是因为今日头条的服务器做了设置,限制IP访问。)

一般的网站会选择放在虚拟主机,且在主机上放置了很多个网站,而每个网站绑定1个或以上域名、虚拟主机上。例如Apache主机的配置会将对应的ip解析到对应的网站目录的,实现一台服务器上配置多个站点;一般用户在访问的时候,会产生一个http请求报文,上面的host信息可以提供给服务器,告诉服务器要访问的域名,从而实现一台主机绑定一个IP,即使有多个网站,也不会相互干扰。但使用IP访问,主机不知道用户访问的具体目录,请求便会出现错误。

简单来说,DNS 就像是一个电话本,其作用就是根据域名查出 IP 地址。

三、DNS原理

DNS 查询时,会先在本地缓存中尝试查找,如果不存在或是记录过期,就继续向 DNS 服务器发起递归查询,这里的 DNS 服务器一般就是运营商的 DNS 服务器。

1.DNS工作原理

浅谈DNS劫持相关概念及原理_第2张图片

第一步:

客户机提出域名解析请求,并将该请求发送给本地的域名服务器。

第二步:

当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果(域名对应的IP地址)返回。

第三步:

如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址。

第四步:

本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。

第五步:

重复第四步,直到找到正确的纪录。

第六步:

本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

2.DNS服务器

以今日头条为例,本机访问域名 https://www.toutiao.com/ 想要得到其 IP地址 ,首先,本机一定要知道DNS服务器的IP地址,否则上不了网。通过DNS服务器,才能知道某个域名的IP地址到底是什么。

浅谈DNS劫持相关概念及原理_第3张图片

DNS服务器的IP地址,有可能是动态的,每次上网时由网关分配,这叫做DHCP机制;也有可能是事先指定的固定地址。Linux系统里面,DNS服务器的IP地址保存在/etc/resolv.conf文件。

上例的DNS服务器是192.168.1.253,这是一个内网地址。有一些公网的DNS服务器,也可以使用,其中最有名的就是Google的8.8.8.8和Level 3的4.2.2.2。本机只向自己的DNS服务器(本地DNS)查询。

3.本地DNS

本地DNS一般是指你电脑上网时IPv4或者IPv6设置中填写的那个 DNS(如上图)。这个有可能是手工指定的或者是DHCP 自动分配的。如果你的电脑是直连运营商网络,一般默认设置情况下 DNS 为 DHCP 分配到的运营商的服务器地址。如果你的电脑和运营商之间还加了无线或者有线路由,那极有可能路由器本身还内置了一个 DNS 转发器,它的作用是将发往他所有的 DNS 请求转发到上层 DNS。此时由于路由器本身也接管了下挂电脑的 DHCP 服务,所以它分配给下面电脑的 DNS 地址就是它自身,所以你能看到电脑的 DNS 分配到的可能是192.168.1.1,实际上就是路由器自身,而路由器的 DNS 转发器将请求转发到上层 ISP 的 DNS。所以这里说 DNS 是局域网或者是运营商的都可以(因为最终都是转发到运营商,小细节不用纠结)。

权威服务器是特殊的DNS服务器,所谓的权威是针对特定域名来说的。所以一般会说某某域名的权威DNS是谁,不能单纯的抛离域名问权威DNS是谁。是域名商在管理,负责解析在他这里购买的域名的权威解析(当然也存在此处购买域名挂靠别处权威的情况)。

4.域名的层级

DNS服务器怎么会知道每个域名的IP地址呢?答案是分级查询。

(待补充......)

5.根域名服务器

参考链接:DNS根服务器、根服务器、全球13台根域名服务器、详细介绍

四、DNS劫持

1.什么是DNS劫持

DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。

DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。

再说简单点,当你输入google.com这个网址的时候,你看到的网站却是百度的首页。

2.DNS劫持的方法

浅谈DNS劫持相关概念及原理_第4张图片

1、利用DNS服务器进行DDOS攻击

正常的DNS服务器递归查询过程可能被利用成DDOS攻击。假设攻击者已知被攻击机器的IP地址,然后攻击者使用该地址作为发送解析命令的源地址。这样当使用DNS服务器递归查询后,DNS服务器响应给最初用户,而这个用户正是被攻击者。那么如果攻击者控制了足够多的肉鸡,反复的进行如上操作,那么被攻击者就会受到来自于DNS服务器的响应信息DDOS攻击。

如果攻击者拥有着足够多的肉鸡群,那么就可以使被攻击者的网络被拖垮至发生中断。利用DNS服务器攻击的重要挑战是,攻击者由于没有直接与被攻击主机进行通讯,隐匿了自己行踪,让受害者难以追查原始的攻击来。

2、DNS缓存感染

攻击者使用DNS请求,将数据放入一个具有漏洞的的DNS服务器的缓存当中。这些缓存信息会在客户进行DNS访问时返回给用户,从而把用户客户对正常域名的访问引导到入侵者所设置挂马、钓鱼等页面上,或者通过伪造的邮件和其他的server服务获取用户口令信息,导致客户遭遇进一步的侵害。

3、DNS信息劫持

TCP/IP体系通过序列号等多种方式避免仿冒数据的插入,但入侵者如果通过监听客户端和DNS服务器的对话,就可以猜测服务器响应给客户端的DNS查询ID。每个DNS报文包括一个相关联的16位ID号,DNS服务器根据这个ID号获取请求源位置。攻击者在DNS服务器之前将虚假的响应交给用户,从而欺骗客户端去访问恶意的网站。假设当提交给某个域名服务器的域名解析请求的DNS报文包数据被截获,然后按截获者的意图将一个虚假的IP地址作为应答信息返回给请求者。原始请求者就会把这个虚假的IP地址作为它所要请求的域名而进行访问,这样他就被欺骗到了别处而无法连接想要访问的那个域名。

4、DNS重定向

攻击者将DNS名称查询重定向到恶意DNS服务器上,被劫持域名的解析就完全在攻击者的控制之下。

5、ARP欺骗

ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒,则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。

ARP欺骗通常是在用户局域网中,造成用户访问域名的错误指向。如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况。

6、本机劫持

本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。如访问挂马或者钓鱼站点、无法访问等情况。本机DNS劫持方式包括hosts文件篡改、本机DNS劫持、SPI链注入、BHO插件等方式。

五、历史著名DNS劫持案例

  • 2009年巴西最大银行遭遇DNS攻击,1%用户被钓鱼。 2009年巴西一家最大银行Bandesco巴西银行,曾遭受DNS缓存病毒攻击,成为震惊全球的““银行劫持案”。受到影响的用户会被重定向至一个假冒的银行网站,该假冒网站试图窃取用户密码并安装恶意软件。DNS缓存病毒攻击是利用互联网域名系统中的漏洞进行的,没有及时打补丁的ISP很容易受到攻击。合法的IP会被某个网站给取代,即使终端用户输入正确的网址也会被重定向至那些恶意网站。有近1%的银行客户受到了攻击,如果这些客户注意到了银行SSL证书在被重定向时出现的错误提示,就不会上当受骗。
  • 2010年1月12日 上午7时40分 “百度域名被劫持”事件。 当时有网民发现百度首页登陆发生异常情况。上午8时后,在中国内地大部分地区和美国、欧洲等地都无法以任何方式正常登陆百度网站,而百度域名的WHOIS传输协议被无故更改,网站的域名被更换至雅虎属下的两个域名服务器,部分网民更发现网站页面被篡改成黑色背景以及伊朗国旗,同时显示“This site has been hacked by Iranian Cyber Army”(该网站已被伊朗网军入侵)字样以及一段阿拉伯文字,然后跳转至英文雅虎主页,这就是“百度域名被劫持”事件。
  • 2012年10月25日 日本邮储银行、三井住友银行和三菱东京日联银行各自提供的网上银行服务都被钓鱼网站劫持。 据日本《日经电脑》报道,日本邮储银行、三井住友银行和三菱东京日联银行于2012年10月25日和10月26日分别发布公告提醒用户,三家银行各自提供的网上银行服务都被钓鱼网站劫持,出现要求用户输入信息的虚假页面,在登录官方网站后,会弹出要求用户输入密码等的窗口画面,本次虚假弹出式窗口页面的目的在于盗取用户网上银行服务的密码。这种弹出式窗口页面上还显示有银行的标志等,乍看上去像真的一样。
  • 2013年5月6日 史上最大规模DNS钓鱼攻击预估已致800万用户感染。
  • 2014年1月21日 北京2014年1月21日,全国大范围出现DNS故障,下午15时20分左右,中国顶级域名根服务器出现故障,大部分网站受影响,此次故障未对国家顶级域名.CN造成影响,所有运行服务正常。

   参考文献:

1.黑客技术?没你想象的那么难!——dns劫持篇

2.DNS根服务器、根服务器、全球13台根域名服务器、详细介绍

3.再次确认!中国将从零实现全球第二:设立自己的域名根服务器

你可能感兴趣的:(网络安全)