针对UDP协议的攻击与防御

news/2024/10/20 0:46:38/

一、UDP协议概述

UDP(User Datagram Protocol,用户数据报协议)是TCP/IP协议栈中的一种无连接的传输协议,能够提供面向事务的简单不可靠数据传输服务。

1.UDP的报文格式

UDP的报文格式如图1所示。

图1 UDP报文格式

UDP报文中各字段的含义如下:

(1)源端口(16位):发送方的端口号。

(2)目的端口(16位):接收方的端口号。

(3)报文长度(16位):表示UDP报文总长度,包括首部和数据部分。

(4)校验和(16位):对整个UDP数据段进行校验,防止报文首部出错。

由此可见,UDP报文首部没有确认机制或传输保证,所以UDP的错误处理往往由上层协议(应用层)来承担。

2.UDP的应用场景

由于缺乏可靠性且属于非连接导向协议,基于UDP协议的应用一般必须允许一定量的丢包、出错和复制粘贴。与TCP协议不同,UDP协议主要用于支持不需要可靠机制、对传输性能要求较高的应用,比如常见的DNS,就是由客户端发起解析请求,然后服务器直接应答响应,避免了TCP的建立与断开连接以及过多的协议报头所产生的开销,提高了传输效率。再如,流媒体、即时多媒体游戏和IP电话(VoIP)等对实时性要求较高的应用,都是建立在UDP协议之上的。此外,UDP还用于组播协议,如在局域网里共享屏幕教学,使用组播发送数据可以避免由TCP产生的大量连接。

二、针对UDP协议的攻击与防御

由于UDP是一种无连接的协议,缺乏可靠性机制,相对于TCP来说,它更容易遭受欺骗攻击。同时,UDP在传输数据上表现出的“高效”特点也常常被攻击者所利用,用来发起DDoS攻击,例如UDP Flood攻击、UDP反射放大攻击等。

1.UDP Flood攻击

(1)攻击原理

UDP Flood属于一种带宽类的DDoS攻击,攻击者通常会结合源IP地址欺骗技术,利用僵尸网络向目标发送大量的UDP报文,这种UDP报文通常为大包,且速率非常快。UDP Flood通常会消耗网络带宽资源,严重时造成链路拥塞;同时,大量随机源IP和随机源端口的UDP Flood会导致依靠会话转发的网络设备性能降低甚至资源耗尽,从而导致网络瘫痪。

(2)防御方法

方法一:限流

这种方法的基本思路是利用DDoS防护系统对UDP报文进行限流,将链路中的UDP报文控制在合理的带宽范围之内。

可以采用两种方式针对UDP Flood进行限流:一是以某个IP地址作为统计对象,对到达这个IP地址的UDP流量进行统计并限流,超过部分丢弃;二是以UDP会话作为统计对象,如果某条会话上的UDP报文速率达到了告警阈值,这条会话就会被锁定,后续命中这条会话的UDP报文都被丢弃。

方法二:指纹学习

一般来说,黑客为了加大攻击频率,快速、长时间挤占目标的网络带宽,在使用DDoS攻击工具实现UDP Flood时,会直接在内存中存放一段内容,然后高频发送到目标,所以攻击报文具有很高的相似性(比如都包含某一个字符串,或整个报文内容一致);而正常业务的每个UDP报文负载内容一般都是不一样的。所以,DDoS防护系统可以通过收集具有相同特征的字符串来检测UDP Flood攻击,这样可以有效降低误报率。

指纹学习就是通过分析客户端向服务器发送的UDP报文载荷是否有大量的一致内容,来判定这个UDP报文是否异常。如图2所示,DDoS防护系统对到达指定目的地的UDP报文进行统计,当UDP报文达到告警阈值时,开始对UDP报文的指纹进行学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中该指纹的报文将被判定为攻击报文,并作为攻击特征进行过滤。目前,市面上绝大多数的DDoS防护系统产品均采用指纹学习的方法来防御UDP Flood攻击。

图2 指纹学习

2.UDP反射放大攻击

对于攻击者来说,传统的UDP flood是一种消耗目标资源、同时也消耗自身资源的攻击方式。UDP flood攻击过程中,攻防双方其实是在拼“资源”,比谁的带宽大、资源多,比谁能坚持到最后。而新型的UDP反射放大攻击则是一种“四两拨千斤”的DDoS攻击方式,攻击者可以更小的代价获得更好的攻击效果。因此在现网中,UDP反射放大攻击越来越多地被使用。

(1)攻击原理

许多基于UDP的服务具有“小请求、大响应”的特性,即这些服务在响应客户端的请求时,响应包的大小要远大于请求包。UDP反射放大攻击正是利用了这一点。

以Memcached服务为例,Memcached是一种开源的高性能分布式内存对象缓存服务,通过查询缓存数据库,直接返回访问请求,加快应用程序的响应效率,同时降低对数据库的访问次数。也正是这种服务机制,使攻击者有了可乘之机,借用正常服务达到攻击的目的。

Memcached支持UDP协议的访问请求,默认将UDP端口11211对外开放。因此,攻击者只需要通过快速的端口扫描,便可以收集到全球大量没有任何防护措施的Memcached服务器,随后攻击者只需要向Memcached服务器的UDP端口11211发送伪造的特定请求报文,该请求报文的源地址被设置成了攻击目标的IP地址。服务器在收到该请求报文后,则会将“放大”后的响应报文发送至攻击目标处,如图3所示。攻击者甚至可以利用僵尸网络作为请求源,向Memcached服务器发起“群体”请求,则返回的响应报文将成指数级上升,比原始请求报文扩大几百至几万倍,从而通过反射加放大的形式,使攻击目标拥塞,无法正常提供服务,达到低成本化、高隐蔽性的攻击效果。

图3 UDP反射放大攻击实例

除了上面提到的Memcached,目前还有其他十多种基于UDP的协议,均可以用于反射放大攻击,放大倍数从几倍到几万倍,如表1所示。

表1 可用于UDP反射放大攻击的协议

协议

端口

理论放大倍数

DNS

53

28~54

NTP

123

556.9

SNMP

161

6.3

SSDP

1900

30.8

Portmap

111

7~28

QOTD

17

140.3

CharGen

19

358.8

TFTP

69

60

NetBIOS

138

3.8

Memcached

11211

10000~50000

WS_Discovery

3702

70~500

CLDAP

389

56~70

(2)防御方法

UDP反射放大攻击的防御方法与传统UDP Flood攻击的防御方法基本相同,这里不再赘述。

三、小结

本文介绍了UDP协议的基础知识及应用场景,并重点描述了两种针对UDP协议的攻击原理及防御方法。就目前而言,指纹学习是防御UDP协议攻击最为有效的技术。


http://www.ppmy.cn/news/87956.html

相关文章

虚拟主机部署ssl证书(https)流程

注意事项: 1、域名要做别名解析指向二级域名 2、证书已经申请完成,其他公司的证书要下载导入到西部数码。 虚拟主机部署教程如下: 部署证书 首先要将域名绑定到主机上,在主机控制面板找到【SSL部署】按钮。 在西部数码申请过证…

2019上半年上午题

2019上半年上午题 a c c c d b b 应用代理网关防火墙 c a 使用数字证书对用户的身份进行认证 d 发送方的私钥签名,发送方公钥确认 d b 职务作品:归公司所有 a b b 从抽象到具体 d 等差数列求和: d 构建节点之间的关系图 然后…

web端oss直传方案之vue+elementUI+OSS实践篇(附各种踩坑)

文章目录 解决思路实践工具类uploadOss.js封装上传组件NewUpload调用上传组件 遇到的问题从oss获取下载链接错误分片上传报错 - ETag配置取消上传STS token 常见问题有效期多个Token是否同时有效 总结 以前的项目上传及下载都是web端上传至服务端,服务器端再上传至O…

C++——图

图是由节点(顶点)和连接节点的边组成的一种非线性数据结构。它用于表示不同对象之间的关系或网络结构。图可以用于建模和解决许多现实世界中的问题,例如社交网络分析、路线规划、图像处理等。 在图中,节点表示实体或对象&#xf…

80个Python练手小项目;AI开发者的总结与反思;B站免费Stable Diffusion视频教程;五问ChatGPT+医学影像 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『美团大模型已秘密研发数月』在仅剩一年的窗口期里努力奔跑 5月18日下午,美团内部召开大模型技术分享会,美团…

【图床】SpringBoot上传图片

知识目录 一、写在前面✨二、新建开源仓库✨2.1 新建仓库2.2 将仓库设置为开源2.3 生产私人令牌 三、代码实现😄3.1 工具类3.2 上传图片 四、总结撒花😊 一、写在前面✨ 大家好!我是初心,很高兴再次和大家见面。 今天跟大家分享…

C++模板初阶(函数模板、类模板)知识点+完整思维导图+实操图+深入细节通俗易懂建议收藏

绪论 思想决定行动,行动养成习惯,习惯形成品质,品质决定命运。——陶行知 本章讲的是c的初阶模板,全文不算代码字数少的可怜,但模板是我们c必须学的一个宝物,他的出现可是c的飞跃性成就!下面将主…

无界AI绘画基础教程,和Midjourney以及Stable Diffusion哪个更好用?

本教程收集于:AIGC从入门到精通教程 无界AI绘画基础教程,和Midjourney以及Stable Diffusion哪个更好用? 目录 简单的总结 注册 简单介绍