黑客控制僵尸网络向DNS服务器发送大量不存在的域名的解析请求,最终导致服务器因大量DNS请求而超载。
1.TC源认证
①客户端发送的DNS请求报文长度超过告警阈值,启动源认证机制。
②拦截DNS请求,将TC标志位置为1并进行回应,要求客户端以TCP方式重新发起DNS查询。
③如果这个源是虚假源,则不会正常响应这个DNS回应报文,更不会重新通过TCP方式重新进行DNS查询。
④如果是真实客户端,则会重新发送SYN报文,请求建立三次握手。
⑤系统对客户端源进行TCP层面的认证。源认证通过,客户端源IP加入白名单。
⑥客户端重新请求建立三次握手,系统将客户端第二次发送的三次握手请求直接放行,送给服务器。
⑦客户端与服务器之间建立三次握手成功,并通过TCP方式完成本次DNS查询。
适用于客户端是浏览器的认证方式。有些客户端不支持通过TCP方式进行DNS查询。
2.被动防御
系统利用DNS协议的重传机制,不对DNS查询报文进行反弹,而是直接不处置,直接丢弃,然后看客户端是否重传。
①Anti-DDoS系统在第一次收到DNS请求后,就会记录DNS请求的域名、源IP等基本信息,并HASH成一个值,记录到系统一张表里。
②后续一定时间戳内,如果再收到这个HASH值相同的DNS请求,就认定为重传包,放行。时间戳会随着收到的每一个相同HASH值的DNS请求包而不断的刷新。
适用于攻击源不断变化的DNS请求攻击
3.CNAME模式
DNS协议中,允许将多个域名映射到同一个IP地址,此时可以将一个域名做A记录指向服务器IP,然后将其他域名作为别名,指向之前做A记录的域名上。这样类型的存在是为了解决IP地址变更时,不必一个一个域名做更改指向。只需要更改A记录的那个域名到新IP上,其他别名将自动更改到新IP地址上。
①流量达到阈值,系统启动源认证,对请求报文进行重定向。
②如果是真实源,会正常响应源认证报文。
③认证通过的源,系统对此源记录进白名单,后续这个源发送的请求将被直接通过。
④如果是虚假源,不会正常响应源认证报文,发送的请求也不会到达授权服务器。
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是否是真实源。
一般可使用源认证方式进行防御。源认证的方法就是构造一个DNS request报文,看客户端是否能正常回应。
①Anti-DDoS系统部署在防护目标前,并对到达防护目标的DNS reply报文进行统计。当到达防护目标的DNS reply报文超过告警阈值时,Anti-DDoS系统启动防御。
②Anti-DDoS系统收到某个源IP地址发来的DNS reply报文后,会重新构造一个新的DNS request报文,然后记录构造查询报文的Query ID和源端口号。
③如果是虚假源,则不会对这个DNS request报文进行回应,认证不通过。
④如果是真实DNS授权服务器,则会重新回应DNS reply报文。
⑤Anti-DDoS系统收到DNS reply报文后,会与之前记录的Query ID和源端口号进行匹配。如果完全一致,则判定此DNS reply报文就是反弹DNS request报文的回应,源认证成功,加入白名单。
⑥后续这个源再发送的DNS reply报文,直接通过,直到白名单老化。
DNS反射攻击
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反射攻击就不适用了。
推荐阅读: