DNS安全(一)DNS缓存投毒与防护

互联网的飞速发展,把人们带入了一个新的时代。一方面,人们享受着互联网带来的便捷多彩的生活,另一方面,个人信息安全也正面临者新的挑战。

如今的互联网,时时刻刻都在发生网络攻击、病毒传播。一边是攻,另一边是防,可以说这是一场没有硝烟的持久战。战争推动了环境变革,战争也推动了武器的升级。本文站在DNS安全角度,简单聊聊DNS缓存投毒的原理与防御机制。

【第一 DNS介绍】

DNS(域名系统 Domain Name System)是一个多层次的分布式数据库系统,它基本的功能是完成域名解析,即提供域名和IP 地址之间的映射关系,属于互联网(Internet)的基础设施,为互联网(Internet)上用户提供便利。

【第二 DNS的工作原理概述】
在分析DNS 缓存投毒攻击原理之前,先了解一下DNS 解析过程。

假设我们在客户端上要查询的域名为www.test.com,并且客户端和我们的本地缓存DNS满足如下条件:
(1)客户端是首次访问www.test.com,即客户端本地没有缓存记录。

(2)本地缓存DNS中没有www.test.com的缓存记录,当然,本地缓存DNS肯定不是www.test.com的权威DNS。
那么,客户端发起www.test.com查询请求后的过程如下图所示:

(1)客户端向本地缓存DNS发起递归查询www.test.com 的请求。
(2)本地缓存DNS检查本地资源记录,若存在则作授权回答;若不存在,则检查本地缓存,如存在则直接给客户端返回结果。若本地资源记录和缓存中都不存在,则向根DNS发起迭代查询。

本例中本地缓存DNS向根DNS发起www.test.com的迭代查询。

(3)根DNS返回com 域的权威名字服务器(即顶级域DNS)的NS记录和对应IP地址。

(4)本地缓存DNS继续向顶级域DNS发起www.test.com的迭代查询。

(5)顶级域名服务器返回test.com域的权威DNS的NS记录和IP地址。

(6)本地缓存DNS继续向test.com的权威DNS发起www.test.com的迭代查询。

(7)test.com的权威DNS应答www.test.com的查询请求。

(8)本地缓存DNS将应答结果保存在本地缓存,并将结果应答给客户端。

【第三 DNS缓存投毒攻击】

DNS缓存投毒攻击可以分为传统的缓存投毒攻击Kaminsky缓存投毒攻击。但无论传统的DNS缓存投毒还是后来出现的Kaminsky缓存投毒均出现在下图红色区域,即权威DNS应答本地缓存DNS发起的迭代请求的过程中。

【第四 传统的DNS缓存投毒攻击】

由于DNS 采用UDP 协议传输查询和应答数据包,属于简单信任机制。对接收到的应答数据包仅进行原查询包IP 地址、端口和随机查询ID 的确认,而不会对数据包的合法性做任何分析。如果若匹配,则接受其作为正确应答数据包,继续DNS 解析过程,并丢弃后续到达的所有应答数据包。这就使得攻击者可以仿冒权威名字服务器向缓存DNS 服务器发送伪造应答包,力争抢先完成应答以污染DNS 缓存。
        如果攻击者发送的伪造应答包在权威DNS发送的正确应答包之前到达缓存DNS 服务器,并与原查询包IP 地址、端口和随机查询ID 相匹配,就能够成功污染DNS 缓存。

例如,攻击者伪造上面的test.com权威应答内容,将www.test.com的A记录修改成一个非法的IP地址比如1.1.1.1,且伪造权威DNS的IP地址、端口号以及查询ID提前一步应答给本地缓存DNS,那么本地缓存DNS就会将此内容视为合法,并缓存到本地然后应答给客户端。即使后来真正的应答到了本地缓存DNS,那也没办法再改变。

【第五 传统的DNS缓存投毒的缺陷】

根据DNS的工作原理可知:被攻击的域名只有在本地缓存DNS中没有缓存,那么才有可能攻击成功。本地缓存DNS中已经存在该域名的缓存,那么攻击者只能等到该域名缓存的生存时间(TTL)过期后再组织下一次攻击。这样的攻击效率和命中率是比较低的。

【第六 Kaminsky缓存投毒攻击】

2008 年的夏天,Dan Kaminsky 发现了一种新型DNS 缓存投毒攻击,该攻击的方式一经公开立即引起了网络安全界的广泛关注。

Kaminsky缓存投毒攻击克服了传统DNS 缓存投毒攻击存在的攻击所需时间长、成功率很低的缺陷。其攻击原理如下:

(1)攻击者向被攻击的本地缓存DNS发送一个域名的DNS 查询请求,该查询请求中的域名主机使用随机序列和目标域名的组合。

例如www123456.test.com,其中ns2.test.com为目标域名,www123456是随机生成的。很显然,这个查询的域名主机记录在test.com的权威DNS中是不存在的。正常test.com的权威DNS要返回NXDOMIAN(代表域名不存在)。换句话说就是本地缓存DNS中肯定没有www123456.test.com的缓存记录,本地缓存DNS接收到这个域名查询请求后肯定是要出去迭代请求的。

(2)攻击者伪造test.com的权威DNS应答数据包中,应答资源记录部分与正确应答包中部分是与正常结果一样的,比如test.com的DNS的IP地址、UDP端口号、应答结果是NXDOMAIN。

但是,在应答报文中的授权资源记录部分,攻击者伪造一个test.com的NS记录为ns2.test.com且该记录对应的A记录IP是2.2.2.2(可能是一个钓鱼网站的IP)。那么该资源记录信息将也被写入本地缓存DNS的Cache 中,在Cache 保持时间内,对test.com名字服务器所管辖的所有域名的查询都将被发送到攻击者自己控制的IP(2.2.2.2)中

通过dig命令测试类似报文应答内容如下。

【第七 Kaminsky缓存投毒的优势】

传统DNS 缓存投毒攻击中,存在攻击所需时间长、攻击成功率低的问题,而Kaminsky 攻击克服了这一缺陷。因为Kaminsky 攻击中,每次查询都会在目标域名上添加随机序列,这使得在被攻击的本地缓存DNS的 Cache 中根本就不存在各个临时构造域名主机的记录,因此若攻击不成功,则立即更换随机序列连续不断地进行攻击,不存在有效攻击时间的问题进而提升了攻击成功率。
       传统DNS 缓存投毒攻击成功后,只是污染了该与权威区中的某个域名,而Kaminsky 攻击成功后,污染的是本地缓存DNS Cache中一个域名主机的NS记录(即该域名的权威主机记录),之后对该名字服务器管辖的所有域名主机的查询都将被发送到攻击者控制的IP 地址中,破坏力度远高于传统缓存投毒攻击。

【第八 缓存投毒攻击防护】

最后,我们来说说如何做好DNS的防护,降低DNS被缓存投毒的风险。简单总结大概有以下几点:

(1)作为权威域名的负责方,要尽量的部署多台权威DNS,比如一主多备。这样能有效的防止自己域名被投毒

例如,test.com区,本来只有一个DNS服务器,NS为dns.test.com,对应的IP为1.1.1.1。那么攻击者伪造源IP回包的时候只需要伪造这一个IP应答给本地缓存DNS就可以了,因为本地缓存DNS肯定是向1.1.1.1发起了迭代请求。但如果有多台权威DNS,那么这个攻击的成功率就会降低,攻击的时间就会变长。因为,本地缓存DNS可能是向5.5.5.5发了www123456.test.com的域名解析请求。攻击者回的包可能回的是3.3.3.3,就算是伪造5.5.5.5回的包,那么可能已经在真正应答之后了。

(2)在选择DNS软件时要尽量选择DNS ”源端口随机性”较好的软件或者版本。

例如,现在应用比较广泛的开源Bind软件,在比较早期的版本中,源端口的随机性并不是很好。微软windows serve中的DNS软件做“本地缓存DNS”更是不太合适,因为无论从源端口随机性、解析性能等等诸多方面都不健壮。但它也有自身的有点,例如与AD域的配合等方面。

(3)在现有的DNS基础上绑定新的安全机制,比如部署DNSSEC或者增加新的安全认证协议。

总之,DNS安全是一个大课题,需要各方共同推动才会达到比较理想的效果。在日常的工作中最重要的是提高自身安全意识,了解目前负责的系统是否存在DNS安全隐患,及时的做好软件升级、做好网络规划等工作。

时间: 2024-10-14 10:15:22

DNS安全(一)DNS缓存投毒与防护的相关文章

Kali Linux(二)渗透案例:DNS Kaminsky缓存投毒

在详细介绍Kali Linux系统之前我们先通过一个渗透案例了解Kali Linux. 本文使用Kali Linux对正在做"本地缓存DNS"的微软windows server2008进行Kaminsky缓存投毒,最终将www.google.com引导到一个预先定义好的web界面上. (1)介绍渗透手段是为了我们在工作中能更好的做好安全防护工作,只有了解攻击才能做好防守.所以,我首先强烈谴责那些使用渗透工具,进行恶意攻击的行为. (2)在做本文实验之前,建议先阅读之前发布的DNS安全-

常见的DNS攻击——偷(劫持)、骗(缓存投毒)、打(DDos)

常见的DNS攻击包括: 1) 域名劫持 通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容. 这显然是DNS服务提供商的责任,用户束手无策. 2) 缓存投毒 利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上.其实现方式有多种,比如可以通过利用网民ISP端的DNS缓存服务器的漏洞进行攻击或控制,从而改变该ISP内的

114DNS Public DNS+ 阿里DNS 百度DNS 360 DNS派 Google DNS公共DNS评测体验报告

114DNS.腾讯dnspod DNS.阿里DNS.百度DNS.360DNS.Google DNS公共DNS评测体验报告从ping及dig返回时间对比测试,国内DNS普遍很快,而阿里DNS最快,次之腾讯dnspod DNS,然后114DNS,百度及360DNS派中规中矩,而Google DNS还是很慢(由于众所周知的原因,你懂的)我们还是拥抱国产DNS吧,推荐腾讯DNSPOD DNS 119.29.29.29 阿里DNS 223.6.6.6和223.5.5.5 来看看各家DNS的介绍: 114

什么是DNS劫持和DNS污染?

什么是DNS劫持和DNS污染? http://blogread.cn/it/article/7758?f=weekly 说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ISP 的正常上网设置无法通过域名取得正确的 IP 地址.常用的手段有:DNS劫持 和 DNS污染. DNS劫持 和 DNS污染 在天朝是非常常见的现象.一般情况下输入一个错误或不存在的 URL 后,本应该出现404页面,而我们看到的却都是电信.联通等运营商的网址导航页面,正常访问网站时出现电信的

CentOS6.6搭建DNS及主从DNS服务搭建

DNS搭建及主从DNS构建 DNS工作原理 DNS解析的作用 我们访问网络时,通常采用浏览器访问web站点,一般通过http://www.baidu.com或baidu.com等域名方式访问,也可以通过http://百度IP:端口进行访问,以前者常用,那么域名方式访问时怎么实现的呢?这就需要通过DNS服务器来解析了: DNS解析方式 正向解析: 根据域名查找其对应的IP地址:目前最常用的方式: 反向解析: 根据IP地址解析其对应的域名:一般应用于安全防护等领域: DNS的分布结构 DNS分布结构

DNS系列- 1.dns基本概念介绍

DNS系列- 1.dns基本概念介绍     目录         前言         一.概述             1.名词解释             2.DNS域名结构         二.DNS域名解析             1.查询类型             2.解析类型             3.DNS服务器的类型             4.区域传输             5.解析过程             6.解析答案         三.资源记录        

dns 后续(dns集群,“花生壳”,“远程IP密码更改dns”)

dns集群(多台服务器同步一个主dns信息,缓解了主dns的压力) 配置辅助dnf服务器(使它能同步主dns,分担主dns的压力:)修改配置文件 /etc/named.rfc1912.zonezone "dd.com" IN {   type slave;   masters {172.25.254.131 ;};  //同步谁的dns信息   file "slaves /dd.com.zone";  //将主dns的信息同步到 /var/named/slaves目

DNS污染和DNS劫持的解决办法

DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址. DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址. DNS污染解决方法 1.使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网. 2.修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名

基于ARP缓存投毒获取教务处网站密码

本文章仅供交流学习使用,本文章实验用的主机也已经经由当事人授权,请勿用于其它用途,否则后果自负. (真不想罗嗦这一句):-) 第一次写技术性博客,肯定会有一些问题,大家将就着看吧>_< 周五晚上在图书馆讨论事情的的时候发现:教务处网站的网站使用http协议,post表单是明文传送的.截取表单后发现一个类似IPT_LOGINUSERNAME=×××××××××(×代表帐号)&IPT_LOGINPASSWORD=***********(我的密码)的字符串.于是想着如果能抓包此HTTP po