近来,网络上出现互联网漏洞——DNS缓存漏洞,此漏洞直指我们应用中互联网脆弱的安全系统,而安全性差的根源在于设计缺陷。利用该漏洞轻则可以让用户无法打开网页,重则是网络钓鱼和金融诈骗,给受害者造成巨大损失。
DNS缓存中毒也称为DNS欺骗,是一种攻击,旨在查找并利用DNS或域名系统中存在的漏洞,以便将有机流量从合法服务器吸引到虚假服务器上。这种攻击往往被归类为域欺骗攻击(pharming attack),由此它会导致出现很多严重问题。首先,用户往往会以为登陆的是自己熟悉的网站,而它们却并不是。与钓鱼攻击采用非法URL不同的是,这种攻击使用的是合法的URL地址。

DNS缓存中毒如何工作?

当一个DNS缓存服务器从用户处获得域名请求时,服务器会在缓存中寻找是否有这个地址。如果没有,它就会上级DNS服务器发出请求。
在出现这种漏洞之前,攻击者很难攻击DNS服务器:他们必须通过发送伪造查询响应、获得正确的查询参数以进入缓存服务器,进而控制合法DNS服务器。这个过程通常持续不到一秒钟,因此黑客攻击很难获得成功。
但是,现在有安全人员找到该漏洞,使得这一过程朝向有利于攻击者转变。这是因为攻击者获悉,对缓存服务器进行持续不断的查询请求,服务器不能给与回应。比如,一个黑客可能会发出类似请求:1q2w3e.google.com,而且他也知道缓存服务器中不可能有这个域名。这就会引起缓存服务器发出更多查询请求,并且会出现很多欺骗应答的机会。
当然,这并不是说攻击者拥有很多机会来猜测查询参数的正确值。事实上,是这种开放源DNS服务器漏洞的公布,会让它在10秒钟内受到危险攻击。
要知道,即使1q2w3e.google.com受到缓存DNS中毒攻击危害也不大,因为没有人会发出这样的域名请求,但是,这正是攻击者发挥威力的地方所在。通过欺骗应答,黑客也可以给缓存服务器指向一个非法的服务器域名地址,该地址一般为黑客所控制。而且通常来说,这两方面的信息缓存服务器都会存储。
由于攻击者现在可以控制域名服务器,每个查询请求都会被重定向到黑客指定的服务器上。这也就意味着,黑客可以控制所有域名下的子域网址:www.bigbank.com,mail.bigbank.com,ftp.bigbank.com等等。这非常强大,任何涉及到子域网址的查询,都可以引导至由黑客指定的任何服务器上。

DNS缓存中毒有何风险?

DNS缓存中毒的主要风险是窃取数据。DNS缓存中毒攻击的最喜欢的目标是医院,金融机构网站和在线零售商。这些目标容易被欺骗,这意味着任何密码,信用卡或其他个人信息都可能受到损害。此外,在用户设备上安装密钥记录器的风险,可能会导致用户访问其他站点时暴露其用户名和密码。
另一个重大风险是,如果互联网安全提供商的网站被欺骗,那么用户的计算机可能会受到其他威胁(如:病毒或特洛伊木马)的影响,因为一旦被攻击用户则不会执行合法的安全更新。
据称,DNS攻击的年平均成本为223.6万美元,其中23%的攻击来自DNS缓存中毒。

如何防止DNS缓存中毒

那么,企业究竟该如何防止DNS缓存中毒攻击?要从以下几点出发:
第一,DNS服务器应该配置为尽可能少地依赖与其他DNS服务器的信任关系。以这种方式配置将使攻击者更难以使用他们自己的DNS服务器来破坏目标服务器。
第二,企业应该设置DNS服务器,只允许所需的服务运行。因为在DNS服务器上运行不需要的其他服务,只会增加攻击向量大小。
第三,安全人员还应确保使用最新版本的DNS。较新版本的BIND具有加密安全事务ID和端口随机化等功能,可以帮助防止缓存中毒攻击。
第四,用户的安全教育对于防止这些攻击也非常重要。用户应接受有关识别可疑网站的培训,用户要学会只访问HTTPS网站,这有助于防止人们成为中毒攻击的受害者,因为他们会确保不将他们的个人信息输入黑客的网站。如果他们在连接到网站之前收到SSL警告,则不会单击“忽略”按钮。 这样就不会受到DNS缓存中毒攻击。

结论

HTTPS是现行架构下最安全的解决方案,SSL证书可以很直观的辨别出钓鱼网站,避免网站受到DNS缓存中毒攻击,保护信息安全。部署SSL证书一定要选择一个具有公信力的CA机构,选择CA机构最好是通过国际Webtrust标准的认证,具备了国际电子认证服务能力的CA机构,通过国际Webtrust标准的认证意味着CA机构的运营管理和服务水平符合国际标准,并且有能力、有资质提供全球化认证服务,是可靠电子认证服务的有效证明。

DNS缓存中毒是怎么回事?的更多相关文章

  1. DNS缓存中毒的知识

    网络上出现互联网漏洞——DNS缓存漏洞,此漏洞直指我们应用中互联网脆弱的安全系统,而安全性差的根源在于设计缺陷.利用该漏洞轻则可以让用户无法打开网页,重则是网络钓鱼和金融诈骗,给受害者造成巨大损失. ...

  2. DNS 缓存中毒--Kaminsky 攻击复现

    0x00 搭建实验环境 使用3台Ubuntu 16.04虚拟机,可到下面的参考链接下载 攻击的服务是BIND9,由于条件限制,这里使用本地的一台虚拟机当作远程DNS解析器,关闭了DNSSEC服务,其中 ...

  3. DNS 缓存投毒

    原文:[DNS Cache Poisoning]( https://medium.com/iocscan/dns-cache-poisoning-bea939b5afaf) 译者:neal1991 w ...

  4. 修改Hosts为何不生效,是DNS缓存?

    Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. ...

  5. 刷新DNS命令 如何刷新DNS缓存(flushdns)

    运行:ipconfig /displaydns这个命令,查看一下本机已经缓存了那些的dns信息的,然后输入下面的命令 ipconfig /flushdns               这时本机的dns ...

  6. 刷新本地的DNS缓存数据

    ipconfig /flushdns”执行,刷新本地的DNS缓存数据. ipconfig /displaydns      查看本地DNS缓存记录的命令为:ipconfig /displaydns.你 ...

  7. DNS缓存

    有DNS的地方,就有缓存. 浏览器.操作系统.Local DNS.根域名服务器,它们都会对DNS结果做一定程度的缓存.本文总结一些常见的浏览器和操作系统的DNS缓存时间. Table of Conte ...

  8. 如何刷新DNS缓存

    经常换空间的朋友一定知道,域名解析到新空间后,要一段时间才会生效到新空间,这是由于本地的DNS生效不及时导致的.这里青互联教大家一个即时更新本地DNS的方法. 在不同的系统中刷新DNS缓存的方法如下. ...

  9. Chrome清除dns缓存

    Chrome清除dns缓存 为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度.你在谷歌Chrome浏览器的地址栏中输入about: ...

随机推荐

  1. navicat连接sqlserver数据库提示:未发现数据源名称并且未指定默认驱动程序

    原因是navicat没有安装sqlserver驱动,就在navicat安装目录下,找到双击安装即可: 

  2. LeetCode(49): 字母异位词分组

    Medium! 题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  3. JVM内存管理概述

    1.概述 java不在需要开发人员显示的分配内存和回收内存,而是由JVM自动管理内存的分配和回收(又称为垃圾回收-GC),这简化了编程难度,但同时可能使得程序员在不知不觉中浪费了很多内存,导致JVM花 ...

  4. Codeforces 999F Cards and Joy(二维DP)

    题目链接:http://codeforces.com/problemset/problem/999/F 题目大意:有n个人,n*k张卡牌,每个人会发到k张卡牌,每个人都有一种喜欢的卡牌f[i],当一个 ...

  5. hdu 1542 线段树+扫描线 学习

    学习扫描线ing... 玄学的东西... 扫描线其实就是用一条假想的线去扫描一堆矩形,借以求出他们的面积或周长(这一篇是面积,下一篇是周长) 扫描线求面积的主要思想就是对一个二维的矩形的某一维上建立一 ...

  6. 线上Slave报1062的案例

    最近经常线上的Slave老报1062的错误,蛋碎一地,幸好Slave暂时没有用到业务上,也就是说没有做读写分离,所以Slave有问题,影响也不大,但每隔一阵子就报1062主键冲突的错误,让我好纠结,如 ...

  7. Ext.js入门(二)

        ExtJs OOP基础 一:ExtJs中的面向对象 1.ExtJs中命名空间的定义        Ext中的命名空间类似于C#中的namespace和java中的包,用来对工程中的类进行更好的 ...

  8. Java 和 C++ 的部分区别

    1. Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码.对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了. 2. ...

  9. AngularJS+Node.js+socket.io 开发在线聊天室

    所有文章搬运自我的个人主页:sheilasun.me 不得不说,上手AngularJS比我想象得难多了,把官网提供的PhoneCat例子看完,又跑到慕课网把大漠穷秋的AngularJS实战系列看了一遍 ...

  10. 关于MIS 系统所需技术和含义

    操作系统的作用在于 1资源管理 2人机交互.它提供各个应用软件的运行平台,也为用户提供交互界面.所需技术:一.b/s架构B/S结构即浏览器和服务器结构,在这种结构下,用户工作界面是通过WWW浏览器来实 ...