您现在正在浏览:首页 > 职教文章 > 职教论文 > DNS欺骗分析与防范

DNS欺骗分析与防范

日期: 2019/8/18 浏览: 2 来源: 学海网收集整理 作者: 学海网

1. DNS工作原理
   DNS的全称是Domain Name Server,即域名服务器。当一台主机发送一个请求,要求解析某个域名时,他会首先把解析请求发到自己的DNS服务器上。
   假设现在有一台主机heike.angel.com,他的DNS是cn.angel.com机器,现在它拿到了某个域www.xxx.com,但不知道其IP地址,这时它就要通过DNS查询来获得这个域名的IP地址。
   现在我们看看域名解析的整个过程。
   首先,heike.angel.com会将解析请求发往它的DNS服务器,
   请求解析www.xxx.com
   heike.angel.com___________cn.angel.com
   这个名字请求是从heike.angel.com的某个随机选择的端口发送cn.angel.com的53端口,这是DNS服务器的绑定端口。
   cn.angel.com收到这个解析请求后,就开始解析工作了。这时如www.xxx.com的IP地址cn.angel.com的缓存之中,那么询问别的DNS服务器。
   它首先询cn.angel.com会把查询的结果返回cn.angel.com
   请问com的权威服务器
   cn.angel.com_________cn.internic.com
   com域名权威服务器IP是22.1.2.3
   cn.angel.com___________cn.internic.com
   这cn.internic.com回答cn.angel.com,COM域的权威DNS是IP22.1.2.3,然cn.angel.com就会向22.1.2.3查询xxx.com子域的DNS服务器的地址。
   请问xxx.com子域的DNS cn.angel.com______________cn.internic.com
   xxx.com子域的DNS是200.1.1.1 cn.angel.com_____________cn.inrernic.com
   现在cn,angel.com知道了xxx.com子域的权威服务器的IP地址了。这时它就可以询www.xxx.com的IP地址了。
   请www.xxx.com的IP地址 cn.angel.com___________________200.1.1.1
   www.xxx.com的IP地址是200.1.1.1 cn.angel.com_________________200.1.1.1
   现cn.angel.com就得到www.xxx.com的IP地址了,它再将这个IP地址反还给请求解析的heike.angel.com
   www.xxx.com的IP地址是200.1.1.1 heike.angel.com____________cn.angel.com
   heike.angel.com知道www.xxx.com的IP地址后就可以和它进行连接,整个域名解析过程就结束了!
   2. 什么是DNS欺骗?
   DNS欺骗是一种非常复杂的攻击手段。但是它使用起来比IP欺骗要简单一些,所以也比较常见。一个利用DNS欺骗进行攻击的典型案列,是全球著名网络安全销售商RSA Security的网站所遭到的攻击。其实RSA Security网站的主机并没有被入侵,而是RSA的域名被黑客劫持,当用户连上RSA Security时,发现主页被改成了其他的内容。
   DNS欺骗是一门改变DNS原始指向IP的艺术。为了更好的理解,让我们先来看一个例子。如果你想用浏览器去google搜索一些信息,毫无疑问的你会在地址栏里输入www.google.com的网址然后回车。
   那么在这背后又有什么事情正在进行着呢?一般而言,你的浏览器将会向DNS服务器发送一个请求,从而要求得到与www.google.com相匹配的IP地址,DNS服务器则会告诉你的浏览器google的IP地址,接着你的浏览器会连接并显示主页内容。哦,等一下,你打开的网页说google因无钱支付网站费用而转让给CSite的消息。你可能会非常吃惊,并打电话告诉你的好朋友。当然你的朋友一定会笑你疯掉了,因为你的朋友是可以登陆google并进行搜索的。还确信正在和你通信的IP地址是友好的吗?说不定你已成圈中之羊。当你在浏览器地址里输入http:// 66.249.89.99并回车时,你又会发现,其实www.google.com还健在。
   其实刚刚就是DNS劫持攻击时目击者可能看到的情形。
   3. DNS欺骗的原理
   主机域名与IP 地址的映射关系是由域名系统DNS来实现的,现在Internet上主要使用Bind 域名服务器程序。DNS 协议具有以下特点:
   (1) DNS 报文只使用一个序列号来进行有效性鉴别,序列号由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配,这就引入了序列号攻击的危险;
   (2) 在DNS 应答报文中可以附加信息,该信息可以和所请求的信息没有直接关系,这样,攻击者就可以在应答中随意添加某些信息,指示某域的权威域名服务器的域名及IP,导致在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而对网络的完整性构成威胁;
   (3) DNS的高速缓存机制,当一个域名服务器收到有关域名和IP的映射信息时,它会将该信息存放在高速缓存中,当再次遇到对此域名的查询请求时就直接使用缓存中的结果而无需重新查询。
   针对DNS协议存在的安全缺陷,目前可采用DNS 欺骗技术有:
   (1)内应攻击。攻击者在非法或合法地控制一台DNS 服务器后,可以直接操作域名数据库,修改指定域名所对应的IP 为自己所控制的主机IP。于是,当客户发出对指定域名的查询请求后,将得到伪造的IP 地址。
   (2) 序列号攻击。DNS协议格式中定义了序列号ID是用来匹配请求数据包和响应数据报,客户端首先以特定的ID向 DNS服务器发送域名查询数据包,在DNS服务器查询之后以相同的ID号给客户端发送域名响应数据包。这时客户端会将收到的DNS响应数据包的ID和自己发送的查询数据包ID相比较,如果匹配则表明接收到的正是自己等待的数据报,如果不匹配则丢弃之。利用序列号进行DNS欺骗的关键是伪装DNS服务器向客户端发送DNS 响应数据包,并在DNS服务器发送的真实DNS响应数据报之前到达客户端,从而使客户端DNS缓存中查询域名所对应的IP就是攻击者伪造的IP,因此将客户端带到攻击者所希望的网站。其欺骗的前提条件是攻击者发送的DNS响应数据包ID必须匹配客户的DNS查询数据包ID。
   在实际欺骗攻击中,利用序列号进行DNS欺骗可分两种情况:第一,当攻击者与DNS服务器、本地主机与客户端主机均不在同一个局域网内时,攻击者可以向客户端主机随机发送大量DNS响应数据报,其中序列号是任意给定的,因此序列号和客户端查询报文序列号匹配的概率很低; 第二,当攻击者至少与DNS服务器或客户端主机中的某一个处在同一个局域网内时,对于共享式以太网攻击者可以通过嗅探得到DNS查询报文的序列号,对于交换式以太网攻击者就需要通过ARP欺骗获取DNS查询报文序列号。
   4. DSN欺骗的实现
   为了能在Windows下发送原始数据包,本文利用了WinPcap来开发实验程序。WinPcap是一个Win32平台下进行数据包捕获和网络分析的开源程序库,它具有内核级的包过滤器,提供了捕获原始数据包,按照一定规则过滤数据包,以及发送原始数据包功能。
   4.1 实验设计
   实验程序的假设应用环境是攻击者和被攻击客户端(也可以是域名服务器)处于同一个交换式以太网中。首先,打开本地攻击者主机的路由功能,设置Windows2000 Server注册表键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters \IPEnableRouter = 0x1,这样在实施欺骗攻击时被攻击客户端仍能访问互联网,达到隐蔽攻击者的目的。然后根据网关和被攻击客户端的IP发送ARP请求得到两者的MAC地址,为攻击做好准备。
   要突破交换式以太网数据监听的限制,成为“中间人”截获DNS报文,实验程序中创建了两个线程。一个线程进行实时的ARP欺骗,其具体负责间歇地向被攻击客户端和网关发送伪造的ARP响应报文,更新被攻击客户端和网关的ARP缓存,让攻击者成为双方通信的中继节点,即作为“中间人”插入被攻击客户端和网关的通信路径中,从而截获被攻击客户端和网关间的所有数据通信,为进行DNS欺骗奠定基础。
   另一个线程监听网关和被攻击客户端之间的数据包,若发现其中有客户发送的DNS域名服务查询数据包(目的端口为53),则提取客户DNS查询数据包中的ID序列号,伪造一个DNS响应报文发送给查询域名的客户,该响应报文中就带有攻击者希望客户去访问的IP地址。这样客户将先收到伪造的DNS响应报文并访问错误的或者被攻击者控制的网站。
   4.2 对进一步Web欺骗的分析
   通过DNS欺骗,客户将访问到错误的网站,若攻击者在让客户访问的虚假网站上克隆了客户欲访问的真实网站,则对于普通计算机用户来说是无法分辨网站的真实性的,因此攻击者可诱骗客户输入如账号和密码等信息然后再将客户端重定向到真实网站,而客户却对自己遭到欺骗攻击的事实毫无察觉。
   此外,对于Web 服务等有链接服务,客户每次访问获得的数据中常常包含许多链接,而客户端用户也常常根据客户端界面的引导而对这些链接指向的地址进行访问。由于攻击者作为“中间人”转发客户端和Internet间通信的数据流,所以攻击者可以不进行DNS欺骗,直接对服务器返回内容中的链接进行修改,将它们指向攻击者控制的机器上去。当然,攻击者还要保留原来链接的足够信息,以便在收到新的访问请求时攻击者能够代替客户去访问正确的地址,回送看似正确的内容。当然,细心的用户可以通过查看Web 浏览器中的状态行、地址行或网页源代码等发现自己已经进入假冒的页面,这时攻击者就需要进行更细致的欺骗,文献[4]中详细介绍了这些技术。
   5. DNS欺骗的防范
   防范DNS欺骗在你访问你的银行账户,在线购书网站甚至是网页电子邮件时尤为重要。
   而对于网站管理者来说,可行的防范措施有:
   (1)对高速缓存器加以限制,保证不保留额外的记录。
   (2)不要用或依赖DNS构架安全体系。
   (3)使用SSL之类的加密技术,即使被攻击,难度也会加大。
   那么如何挫败这种攻击呢?这也很简单,直接用IP访问重要的服务,这样至少可以避开DNS欺骗攻击。最根本的解决办法就是加密所有对外的数据流,对服务器来说就是尽量使用SSH之类的有加密支持的协议,对一般用户应该用PGP之类的软件加密所有发到网络上的数据。说起来容易,做起来难!
   (1)对于个人主机来说,只要及时更新补丁或者使用代理就可以防范到DNS攻击。
   (2)对高标准的服务器来说,应该做到以下几点:
   ①安装新版软件;
   ②关闭服务器的递归功能;
   ③限制城名服务器做出反应的地址;
   ④限制城名服务器做出递归相应的请求地址;
   ⑤限制发去请求的地址;
   ⑥手动修改本地hosts文件来解;
   ⑦用专用工具,比如AntiARP-DNS。

返回顶部