2013年以来,反射攻击的报道层出不穷。相对于传统的基于僵尸网络的DDoS攻击,由于反射放大攻击不需要僵尸进程的帮助,因此实现和控制过程相对简单,因此成本较低,且具有放大效果显著、追溯困难的特点。这给传统的DDoS攻击的防护带来新的挑战。本文将对反射攻击的原理进行分析,讨论主流攻击协议的主要漏洞,并给出相应的防范提建议。
反射DDoS攻击的原理
分布式拒绝服务(DDoS:DistributedDenial of Service) 攻击是指利用足够数量的傀儡计算机产生数量巨大的攻击数据包,对网络上的一台或多台目标实施DoS攻击,从而耗尽受害目标的资源,迫使目标失去提供正常服务的能力。
基于UDP 报文的反射DDoS攻击是这类攻击的一种实现形式。攻击者不是直接发起对攻击目标的攻击,而是利用互联网的某些服务开放的服务器,通过伪造被攻击者的地址、向该服务器发送基于UDP服务的特殊请求报文,数倍于请求报文的回复的数据被发送到被攻击IP,从而对后者间接形成DDoS攻击。图1是这类攻击的一个攻击场景。
简单来讲,这类攻击是基于无连接的UDP协议设计的网络服务的设计“缺陷”和目前IP网不做真实原地址检查这个条件设计的。攻击者通过扫描,确认服务的开放和漏洞的存在后,即可对这些服务器发送请求,通过伪造源地址的方式对特定目标发动反射攻击。
反射攻击的协议漏洞分析
2014年德国波鸿大学的一篇研究报告对14种UDP协议进行了系统的实验性研究,认为这些协议存在实施反射攻击的可能,并提出了协议的“带宽放大因子(BAF,Bandwidth Amplification Factor)”的概念,即回复报文的总字节数与请求报文字节数的比值。显然,服务协议的BAF、攻击脚本实现的便捷性是攻击者选择协议进行攻击是的主要考虑因素。
来自Arbor、AT&T等设备厂商的近期报道中,上述14中协议中的5种在当前的网络环境中是可见的,分别是Chargen、SNMP、DNS、NTP 和SSDP。
由于不同版本的实现机制各不相同,加上对请求数据支持的多样性,同一服务的BAF值也会存有一定的差异。我们根据文献构造请求报文,利用试验室环境和CERNET中有反射攻击行为的主机进行了实验,得到了“实验BAF”。相关文献也给出了作者自己的试验结果,以下称为“标准平均BAF”。协议漏洞、实验BAF和标准平均BAF的具体情况是:
Chargen(字符发生器协议)
Chargen协议的设计中规定每当服务器收到一个UDP数据包后向客户端返回一个数据包,其中包含长度为0-512字节之间随机值的任意字符。这个协议在Linux系统和Windows系统中的实现有所不同,实验BAF约为15-50。标准平均BAF:358.8。
NTP(Network Time Protocol,网络时间协议)
NTP早期版本中的monlist请求功能支持客户端使用一次请求最多可获取600个与服务器同步的客户IP地址,这些地址信息还被分到多个数据包中进行回复。试验BAF为200左右,标准平均BAF是556.9。
DNS(Domain Name System,域名系统)
产生的原因是开放DNS服务器对dig查询的支持,将OPTRR字段中的UDP报文大小设置较大的数值(如4096),一般60字节的查询可以获得3000字节的返回数据包,实验BAF值为50。标准平均BAF:28.7-54.6。
SSDP(Simple Sever DiscoveryProtocol,简单服务发现协议)
设置SSDP报头的ST 字段为“all”,即所有设备和服务。在实验环境下,一个135字节的请求报文获得了10个350 字节报文的回复,即试验BAF为25。标准平均BAF:30.8。
SNMP(Simple Network Management Protocol,简单网络管理协议)
SNMPv2版中引入的snmpbulkget功能支持用单个请求报文获得管理数据,试验中一个1350字节的请求报文获得了20个1500字节的回复,实验BAF为20。标准平均BAF:6.3。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。