针对UDP协议的攻击与防御
  

深信服认证 5300

{{ttag.title}}
本帖最后由 深信服认证 于 2023-5-24 14:32 编辑

一、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协议攻击最为有效的技术。

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

我是路人甲55 发表于 2023-6-4 21:33
  
感谢楼主分享,每日学习打卡
dhf 发表于 2023-6-4 19:39
  
感谢楼主的精彩分享,有助工作!!!
发表新帖
热门标签
全部标签>
安全效果
西北区每日一问
技术盲盒
技术笔记
干货满满
【 社区to talk】
每日一问
信服课堂视频
GIF动图学习
新版本体验
技术咨询
2023技术争霸赛专题
功能体验
产品连连看
自助服务平台操作指引
标准化排查
秒懂零信任
技术晨报
安装部署配置
原创分享
排障笔记本
玩转零信任
排障那些事
SDP百科
技术争霸赛
深信服技术支持平台
通用技术
以战代练
升级&主动服务
社区新周刊
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
产品预警公告
信服圈儿
S豆商城资讯
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
高手请过招
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版版主

90
268
0

发帖

粉丝

关注

本版达人