什么是DNS放大攻击
放大攻击(也称为杠杆攻击,英文名字DNS Amplification Attack),利用回复包比请求包大的特点(放大流量),伪造请求包的源IP地址,将应答包引向被攻击的目标。对于DNS服务器来说,只需要抛弃不是自己发出去的请求包的应答包即可。从测试角度来说,向被测试服务器,发送大量的回复包,看是否被丢弃,同时观察此时的CPU利用率是否有急剧的上升即可。
当前许多DNS服务器支持EDNS。EDNS是DNS的一套扩大机制,RFC 2671对此有介绍。一些选择能够让DNS回复超过512字节并且仍然使用UDP,如果要求者指出它能够处理这样大的DNS查询的话。攻击者已经利用这种方法产生了大量的通讯。通过发送一个60个字节的查询来获取一个大约4000个字节的记录,攻击者能够把通讯量放大66倍。一些这种性质的攻击已经产生了 每秒钟许多GB的通讯量,对于某些目标的攻击甚至超过了每秒钟10GB的通讯量。
要实现这种攻击,攻击者首先要找到几台代表互联网上 的某个人实施循环查询工作的第三方DNS服务器(大多数DNS服务器都有这种设置)。由于支持循环查询,攻击者可以向一台DNS服务器发送一个查询,这台 DNS服务器随后把这个查询(以循环的方式)发送给攻击者选择的一台DNS服务器。接下来,攻击者向这些服务器发送一个DNS记录查询,这个记录是攻击者 在自己的DNS服务器上控制的。由于这些服务器被设置为循环查询,这些第三方服务器就向攻击者发回这些请求。攻击者在DNS服务器上存储了一个4000个 字节的文本用于进行这种DNS放大攻击。
由于攻击者已经向第三方DNS服务器的缓存中加入了大量的记录,攻击者接下来向这些服务器发 送DNS查询信息(带有启用大量回复的EDNS选项),并采取欺骗手段让那些DNS服务器认为这个查询信息是从攻击者希望攻击的那个IP地址发出来的。这 些第三方DNS服务器于是就用这个4000个字节的文本记录进行回复,用大量的UDP数据包淹没受害者。攻击者向第三方DNS服务器发出数百万小的和欺骗 性的查询信息,这些DNS服务器将用大量的DNS回复数据包淹没那个受害者。