编辑推荐: |
重点聊聊另一种常见的DNS攻击DNS reply flood。首先DNS reply
flood是什么,接着讲解DNS反射攻击。
本文来自于华为企业互动社区,由火龙果软件Anna编辑、推荐。
|
|
0x01 DNS Reply Flood
DNS协议的基础知识我们本篇就不重复介绍了,大家可以看上一篇的介绍。今天我们直接从DNS reply
flood的攻击原理入手。前面我们也讲过,DNS查询过程通常都是基于UDP协议的,UDP协议是无连接状态的。所以这一弱点很容易被黑客所利用,DNS服务器收到DNS
reply报文时,不管自己有没有发出去过解析请求,都会对这些DNS reply报文进行处理。DNS
reply flood就是黑客发送大量的DNS reply报文到DNS缓存服务器,导致缓存服务器因为处理这些DNS
reply报文而资源耗尽,影响正常业务。
DNS reply flood大多都是虚假源攻击,黑客控制僵尸主机发出的DNS reply报文的源IP地址通常都是伪造的,是不存在的。所以在防御的时候,就可以从回应源IP地址的真假性入手,判定这个源IP是否是真实源。
针对这种攻击行为,Anti-DDoS系统一般可使用源认证方式进行防御。源认证的方法就是构造一个DNS
request报文,看客户端是否能正常回应。
1、Anti-DDoS系统部署在防护目标前,并对到达防护目标的DNS reply报文进行统计。当到达防护目标的DNS
reply报文超过告警阈值时,Anti-DDoS系统启动防御。
2、Anti-DDoS系统收到某个源IP地址发来的DNS reply报文后,会重新构造一个新的DNS
request报文,然后记录构造查询报文的Query ID和源端口号。
3、如果是虚假源,则不会对这个DNS request报文进行回应,认证不通过。
4、如果是真实DNS授权服务器,则会重新回应DNS reply报文。
5、Anti-DDoS系统收到DNS reply报文后,会与之前记录的Query ID和源端口号进行匹配。如果完全一致,则判定此DNS
reply报文就是反弹DNS request报文的回应,源认证成功,加入白名单。
6、后续这个源再发送的DNS reply报文,直接通过,直到白名单老化。
近几年,还有一种升级版的DNS reply flood攻击,因为杀伤力巨大,而备受安全界的关注,那就是DNS反射攻击。
0x02 DNS反射攻击
DNS反射攻击是DNS reply flood的一种变异,是一种更高级的DNS reply flood。
DNS服务器是互联网最基础的设施之一,网络中有很多开放的免费DNS服务器。DNS反射攻击正是利用这些开放的DNS服务器制造的攻击。这种DNS反射攻击通常比普通的DNS
reply flood攻击性更强,追踪溯源困难,更善于伪装。
从图中我们可以看到,黑客将自己的源IP地址伪造成被攻击目标的IP地址,然后向一系列网络中开放的DNS服务器发送大量的查询请求。通过伪造DNS请求报文的源IP地址,控制DNS回应报文的流向,这些DNS回应报文就会都被引导到被攻击目标,导致被攻击目标的网络拥塞,拒绝服务。而开放式的DNS服务器在全球有超过几千万台,这些服务器接入带宽往往都比较高,而且,DNS
reply报文大小通常也是DNS request报文的几倍甚至几十倍,还可达到放大攻击的效果。对于控制成千上万台僵尸主机的黑客来说,制造几G乃至数十G的DNS攻击流量并不太困难。
DNS反射攻击和前面介绍的传统DNS reply flood有两点本质的不同:
1、传统DNS reply flood一般攻击目标是DNS缓存服务器;而DNS反射攻击一般攻击目标是客户端。
2、传统DNS reply flood大多是虚假源攻击,而DNS反射攻击中,DNS请求是真实的,所以DNS回应报文也都是真实的,是由网络中真实的DNS服务器发出的,属于真实源攻击。这种情况下,再使用前面刚讲过的源认证方式,对于DNS反射攻击就不适用了。
那是不是就没有办法防御了呢?
当然不是,魔高一尺,道高一丈。我们看看Anti-DDoS系统是怎么处理这种攻击的。
Anti-DDoS系统借鉴防火墙的会话表机制,利用DNS交互交互过程中,DNS request报文首包建会话的机制,防御DNS反射放大攻击。
Anti-DDoS系统对DNS反射攻击采用的防御手段就是会话检查。会话表五元组信息包含:源IP地址、目的IP地址、源端口、目的端口和协议。当DNS
request报文经过Anti-DDoS系统时,Anti-DDoS系统会创建一张会话表,记录DNS请求报文的这五元组信息。当Anti-DDoS系统再收到DNS
reply报文时,就会查会话表:
如果匹配会话表,就判定是真实的DNS reply报文,允许通过。
如果没有匹配会话表,则判定这个DNS reply报文为攻击报文,禁止通过。
除了源认证和会话检查以外,对于DNS flood攻击还可以通过限速的方式进行防御。DNS限速有两种,针对DNS
request和DNS reply报文都生效。
域名限速
如果某个域名的DNS请求或回应报文速率过高,可以针对这个域名进行限速。通常某个域名在攻击前访问量并不算高,突然有一天访问量是平时的好多倍,那这个域名可能就是受攻击了。这就好比超市卖东西,平时一天超市可能卖200包食盐,突然有一天,来了好多人买盐,超市仓库都卖空了,那这就不正常了。域名限速就是指资源有限的情况下,每天就定量提供这么多的资源,
先到先得。域名限速可以有针对性的对某个特定域名进行限制,而不影响其他域名的正常请求。
源IP地址限速
源IP地址限速和域名限速相比,属于另一个维度的限制。如果某个源IP地址域名解析的速率过大,就可以有针对性的对这个源IP地址进行限制,这样也不会对其他源有影响。
现在,这种利用网络基础架构发动的攻击越来越多,比如之前的暴风影音、本节的DNS反射攻击,还有后续我们即将要介绍的DNS缓存投毒攻击、HTTP攻击。作为互联网的基础设施,DNS服务器和其他各种服务器的安全稳定运行也至关重要,也是网络工程师在部署网络设备时需要重点考虑的问题。
通过这两篇帖子,大家对DNS request flood和DNS reply flood攻击的防御都有了全新的了解吧,但是DNS攻击可不止这些,除了这些传统攻击手段外,黑客利用篡改域名和IP地址映射关系的手段制造的攻击,在近几年频频发生。下一节,我们就为大家继续介绍DNS缓存投毒攻击。
|