东南大学:UDP反射DDoS攻击原理和防范(转)

2013年以来,反射攻击的报道层出不穷。相对于传统的基于僵尸网络的ddos攻击,由于反射放大攻击不需要僵尸进程的帮助,因此实现和控制过程相对简单,因此成本较低,且具有放大效果显著、追溯困难的特点。这给传统的ddos攻击的防护带来新的挑战。本文将对反射攻击的原理进行分析,讨论主流攻击协议的主要漏洞,并给出相应的防范提建议。

反射DDoS攻击的原理

分布式拒绝服务(DDoS:DistributedDenial of Service) 攻击是指利用足够数量的傀儡计算机产生数量巨大的攻击数据包,对网络上的一台或多台目标实施DoS攻击,从而耗尽受害目标的资源,迫使目标失去提供正常服务的能力。

基于UDP 报文的反射DDoS攻击是这类攻击的一种实现形式。攻击者不是直接发起对攻击目标的攻击,而是利用互联网的某些服务开放的服务器,通过伪造被攻击者的地址、向该服务器发送基于UDP服务的特殊请求报文,数倍于请求报文的回复的数据被发送到被攻击IP,从而对后者间接形成DDoS攻击。图1是这类攻击的一个攻击场景。

东南大学:UDP反射DDoS攻击原理和防范(转)

简单来讲,这类攻击是基于无连接的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。 

反射攻击的防范措施

上述协议安装后由于有关服务默认处于开启状态,是其被利用的一个重要因素。因此,防范可以从配置主机服务选项和访问控制权限(ACL)入手。具体建议如下:

Chargen攻击防范配置方法

关闭Chargen服务,具体的操作方法:

1.Linux系统:在/etc/inetd.conf文件中注释掉‘chargen’服务,或者在/etc/xinetd.d/目录下将chargen服务对应的文件中的“disable” 属性改为 “yes”。

2. 在Window 系统下:Chargen服务属于Windows系统中的SimpTCP服务,一般情况下Windows系统缺省不会安装该服务,如已安装该服务,可以通过如下几种方式关闭服务:

(1)通过控制面板中的Service管理程序,关闭SimpTCP服务;

(2)通过修改注册表:通过注册表编辑器将以下两项表项的值设为0HKLM\System\CurrentControlSet\Services

\SimpTCP\Parameters\EnableTcpChargenHKLM\System\

CurrentControlSet\Services\SimpTCP\Parameters\EnableUdpChargen

(3)通过命令行执行net 程序:netstop simptcp;net start simptcp。

NTP攻击防范配置方法

1.升级版本Linux 系统中的ntpd 4.2.7p26及之后的版本关闭了monlist请求功能。升级到ntpd 4.2.7p26或更高版本可以避免针对该漏洞的攻击。

2. 禁用或限制状态查询

(1)在Linux系统下,如果monlist功能开放,可尝试通过修改ntp.conf配置文件解决问题,具体操作建议是在上述文件中增加下面的配置:

IPV4:restrict default kodnomodifynotrapnopeernoquery

IPv6:restrict-6 default kodnomodifynotrapnopeernoquery

另外,还可以配置限制访问命令,如:restrict default noquery。

(2)Windows Server系统的设置方法较为简单:在ntp.conf配置文件中增加(或修改)“disable monitor”选项,可以关闭现有NTP服务的monlist 功能。

修改并保存配置文件之后,请重启ntpd服务。

DNS攻击防范配置方法

1. 关闭递归查询

(1)在UNIX系统的DNS服务器下:在全局配置选项中加入如下限制以关闭递归查询:

options {allow-query-cache {none};recursion no;};

(2)在Windows系统的DNS 服务器下,采取如下步骤:a.打开DNS(“开始”-“程序”-“管理工具”-单击“DNS”);b. 在控制列表树中,单击“适用的DNS服务器”;c.在“操作”菜单上,单击“属性”;d.点击“高级”;e.在“服务器选项”中,选中“禁用递归”复选框,然后确定。

2. 授权特定用户进行递归查询

在特定组织或者ISP中部署的DNS服务器,域名解析应当配置成对授权的客户机提供递归查询。这些递归查询请求应当只来源于该组织内的客户机地址。建议所有的服务器管理员只允许内部客户机的递归查询请求。

在UNIX系统的DNS 服务器配置下,在全局配置选项中做如下设置:

acl corpnets{192.168.1.0/24;192.168.2.0/24;};options {allow-query {any;};

allow-recursion {corpnets;};};

SSDP攻击防范配置方法

1. 关闭系统服务

(1)在Windows下以管理员身份运行cmd.exe,并执行以下命令:scconfigSSDPSRV start=DISABLED;(2)在桌面上右击“计算机”,在“服务和应用程序”中点击“服务”,找到“SSDP Discovery”服务,双击后该服务后选择“禁用”选项。

2. 防火墙拦截

(1)在Windows 系统操作如下:在“开始”-“控制面板”-“Windows防火墙”-“高级设置”中,分别在“入站规则”和“出站规则”中加入一条新的规则,新建规则操作如下:点击“新建规则”,选择“端口”和“下一步”,选择“UDP”,并在“特定远程端口中”输入“1900”,点击“下一步”,选择“阻止连接”和“下一步”,选择“域”、“专业(P)”、“公用(U)”和“下一步”,在名称中输入“SSDPDiscovery”,并点击“完成”。

(2)在Linux系统操作如下:

a.打开/etc/sysconfig/iptables文件(操作以CENTOS 为例),在文件中加入如下规则:

-A INPUT -p udp -m udp –sport 1900 -j DROP

-A INPUT -p udp -m udp –dport 1900 -j DROP

-A OUTPUT -p udp -m udp –sport 1900 -j DROP

-A OUTPUT -p udp -m udp –dport 1900 -j DROP

b.最后重启防火墙:#service iptablesrestart

需要另外说明的,Chargen、NTP、DNS协议也可以在路由器或防火墙配置过滤条件,拦截目的或者源端口为相应服务端口(19 号、123 号、53 号端口等)的所有UDP报文,配置规则可参考上述1900端口的规则格式。

SNMP攻击防范配置方法

SNMP服务通常用于远程监控网络设备状态,例如路由器、交互机、网络打印机、以及其它联网的嵌入式设备,不同类似的设备SNMP服务配置方式存在差异,有些具备ACL功能,有些缺少相应的访问控制。因此通用的解决方法是在边界防火墙上拦截目的或者源端口为161的UDP报文,具体方式和SSDP等类似。

本文针对主机服务配置的防范讨论大致如上。限于篇幅,针对单个协议的防护技术(如应用于DNS 反射攻击防范的Anycast流清洗技术)等相关内容不再详细列出。

本文分析了反射DDoS攻击的原理、攻击特点和常见的攻击协议,包括Chargen、NTP、DNS、SNMP 和SSDP 协议,并对攻击相关协议的漏洞进行了详细描述。协议本身的设计缺陷以及配置不当是造成攻击的主要原因。文章最后从不同角度提出了应对该类攻击的防范措施。虽然不能从根本上杜绝攻击的发生,但是强化网络管理的意识和对设备的有效配置可以在一定程度上降低发生反射攻击的可能。

(作者单位为东南大学计算机科学与工程学院) 

原文链接:https://www.cnblogs.com/yangjy1992/p/7550275.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22198

(0)
上一篇 2023年9月15日
下一篇 2023年9月15日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml