Security ❀ UDP/TCP传输层常见DOS攻击详解

news/2024/5/18 13:38:29 标签: udp, tcp/ip, 单片机

文章目录

  • 1. UDP协议基础
  • 2. UDP Flood
    • 2.1. 攻击原理
    • 2.2. 防护方法
  • 3. TCP三次握手和四次挥手
    • 3.1. 三次握手
    • 3.2. 四次挥手
  • 4. SYN Flood
    • 4.1. 攻击原理
    • 4.2. 防护方法
  • 5. SYN-ACK Flood
    • 5.1. 攻击原理
    • 5.2. 防护方法
  • 6. ACK Flood
    • 6.1. 攻击原理
    • 6.2. 防护方法
  • 7. FIN/RST Flood
    • 7.1. 攻击原理
    • 7.2. 防护方法
  • 8. TCP连接耗尽
    • 8.1. 攻击原理
    • 8.2. 防护方法
  • 9. 异常报文
    • 9.1. 攻击原理
    • 9.2. 防护方法

1. UDP协议基础

UDP - 用户数据报协议:是一种无连接的四层传输协议,不提供数据的校验机制。当报文成功发送之后不再关心此报文是否完整的到达对端。
在这里插入图片描述
可以简单理解为:以牺牲协议安全性为前提,减少了需要传输的内容,UDP报文资源消耗更小,处理和传输速度更快,因此大部分的音频和视频数据均使用UDP协议传输。

2. UDP Flood

2.1. 攻击原理

黑客发送大量UDP协议报文到目标,由于UDP协议无法进行数据校验,因此目标会处理大量UDP报文而占用其业务资源。

2.2. 防护方法

  • 常用端口限速:常见UDP协议,如DNS、NTP、SNMP等协议均有固定端口,可以对其端口进行阈值限速处理,防止流量过大;
  • 特征提取过滤:UDP报文伪造多为工具输出,因此具有一定的特征值,常位于协议包的尾部,因此可以尝试获取UDP协议包载荷的最后几个字节,这个字节数最好为递增值(如1-8内递增变动),还需要注意偏移量。

3. TCP三次握手和四次挥手

3.1. 三次握手

  • SYN:第一次握手,客户端向服务器发起连接请求,报文中设置SYN标志位为1,序号为0;
    在这里插入图片描述
  • SYN-ACK:第二次握手,服务器收到客户端请求后,向客户端回应报文,报文中设置SYN和ACK标志位为1,序号为0(服务器与客户端的序列号都是自维护递增关系,可以在Next Seq Number字段查看下一个序列号的值),确认序号为客户端的序号+1,即0+1=1;
    在这里插入图片描述
  • ACK:第三次握手,客户端收到服务器回应的报文后,检查报文中的确认序列号是否正常,如果正确则发送确认报文,确认报文中ACK标志位为1,确认序列号为服务器的序列号+1,即为0+1=1;
    在这里插入图片描述
    经过上述三次握手之后,TCP连接建立完成。若中间机制存在异常,则会发送RST报文(RST标志位为1)中断TCP连接会话,并重新建立新的连接。

3.2. 四次挥手

  • FIN:TCP断开连接时第一次握手由服务器发起,报文中FIN标和ACK标志位为1,序号为11;
  • ACK:第二次握手,客户端收到服务器发送的FIN报文之后,向服务器发送回应报文,报文中ACK标志位为1,确认序列号为服务器FIN报文中序列号+1,即为11+1=12;
  • FIN:第三次握手,此时客户端也需要关闭与服务器的连接,客户端向服务器发送FIN报文,报文中FIN标和ACK标志位为1,序号为22(服务器与客户端的序列号都是自维护递增关系,可以在Next Seq Number字段查看下一个序列号的值);
  • ACK:第四次握手,服务器收到客户端发送的FIN报文之后,向客户端发送回应报文,报文中ACK标志位为1,确认序列号为客户端FIN报文中序列号+1,即为22+1=23;

4. SYN Flood

4.1. 攻击原理

攻击者利用攻击或操纵僵尸网络主机发送大量TCP SYN报文,当服务器回应SYN-ACK报文后,攻击者不再回应ACK,导致三次握手连接无法建立,因此服务器上会残留大量的TCP半连接,导致其服务资源的浪费。

4.2. 防护方法

  • 基本源认证:当流量触发防护阈值时,新的SYN报文被防护设备拦截,防护设备向客户端发送一个SYN-ACK报文, 其携带了错误的ACK Seq,真实客户端收到了带错误的序号报文,会RST当前连接,重新发起新的连接,防护设备若收到此IP的RST报文,则对IP加白即可。
  • 高级源认证:与基本源认证不同的是,高级源认证发送的是正常的SYN-ACK报文,只不过连接的超时时间比TCP连接更加短,在限定时间内无法收到ACK时则断开此链接,不再进行多余的等待;
  • 首包丢弃:防护设备丢弃第一个SYN报文并且同时记录其报文的三元组信息,此时会触发TCP重传机制,当新的SYN报文匹配到已保存的三元组后进行加白即可。

5. SYN-ACK Flood

5.1. 攻击原理

在TCP连接中,SYN-ACK报文是用来确认第一次握手的机制,如果攻击者利用工具或者操纵僵尸主机发送大量SYN-ACK报文到目标机器,目标会首先判断该报文是否属于当前正在建立的三次握手范畴内,不属于的话会直接发送RST报文中断此次连接,目标机器忙于发送大量的RST报文而导致资源消耗。

5.2. 防护方法

  • 反向确认法:当流量触发防护阈值时,收到SYN-ACK报文时会记录其三元组信息,进行反向SYN连接探测,若源头做出响应,直接进行RST并将IP加白,反之无响应时则判断为虚假源。

6. ACK Flood

6.1. 攻击原理

在TCP连接中,ACK报文出现在第三次握手,用来确认第二次的SYN-ACK报文,攻击者利用工具或者操纵僵尸主机发送大量ACK报文,服务器忙于处理这些凭空出现的ACK报文而导致资源耗尽。

6.2. 防护方法

  • 会话匹配模式:对ACK进行会话检查,如果ACK报文没有命中会话,则以此ACK报文的三元组信息建立会话进行存储,后续ACK报文进行会话检查,若命中会话则继续检查报文的序列号Seq Number,正确则放过,反之丢弃;
  • 加强会话模式:不允许第一个ACK报文通过创建会话,只校验完成TCP三次握手的会话,没有命中的ACK均被丢弃,在引流场景下可能存在来回路径不一致问题(请求被代理,响应不过代理),会影响到因为转发的ACK报文。

7. FIN/RST Flood

7.1. 攻击原理

在TCP连接中,FIN和RST报文均用来关闭TCP连接,这两种报文仍然会被大量伪造用来消耗服务器资源。

7.2. 防护方法

  • 会话匹配模式:若会话由SYN或SYN-ACK建立,则允许FIN/RST通过;若会话由其他报文创建,则检查报文内序列号,正确则通过,反之丢弃。

8. TCP连接耗尽

8.1. 攻击原理

攻击者利用僵尸机器大量创建TCP连接,当连接建立完成后

  • 立即发送FIN或RST断开连接,同时快速发起新的连接,重复进行操作即可消耗服务器系统资源;
  • 攻击者发送很少的报文来维持连接状态,以消耗服务器系统资源。

8.2. 防护方法

  • 连接数监控:防护设备可以设置TCP连接速率,当受保护的TCP目标新建了连接,针对源IP进行统计,若某个IP在指定的时间内发起的TCP新建连接数超过了设置阈值,则进行拉黑操作。
  • 报文数量监控:防护设备监控受保护目标的TCP连接,设置在特定时间内通过报文的数量阈值,若时间段内若低于设置阈值的传输报文数量,则断开此异常TCP连接即可。

9. 异常报文

TCP特殊标志位:

  • URG:置1时表示紧急指针有效;
  • ACK:置1时表示确认序号有效;
  • PSH:置1时表示接收方收到数据段后应该尽快送到应用程序;
  • RST:置1时表示重新建立连接;
  • SYN:置1时表示发起一个连接;
  • FIN:置1时表示发送方完成发送任务,释放连接。

9.1. 攻击原理

TCP协议标志位置1严格遵守协议规范,其不遵循规范的报文即为异常报文。

9.2. 防护方法

监控标志位置1的情况:

  • 六个标志位都为1或0;
  • SYN和FIN同时为1;
  • SYN和RST同时为1;
  • FIN和RST同时为1;
  • 仅FIN为1;
  • 仅PSH为1;
  • 仅URG为1;
  • 带有载荷的SYN和SYN-ACK报文;
  • SYN、RST、FIN为1的分片报文;

http://www.niftyadmin.cn/n/5153265.html

相关文章

Android - 编译 openssl 踩坑之路

一、简述 如果你想快速在项目中使用上 openssl,可以使用网上其他开发者提供好的预编译库: OpenSSL(All):https://builds.viaduck.org/prebuilts/openssl/OpenSSL(3.1.*) :https://github.com/217heidai/openssl_for_android以上的预编译库可能最低只支持 API 21(即 Andro…

2024最新免费的mac电脑清理垃圾的软件有哪些?

mac电脑是许多人喜爱的电子产品,它拥有优美的设计、流畅的操作系统和强大的性能。但是,随着使用时间的增长,mac电脑也会积累一些不必要的垃圾文件,这些文件会占用宝贵的存储空间,影响电脑的运行速度和稳定性。因此&…

【LearnOpenGL基础入门——1】OpenGL简介

目录 一.OpenGL是什么 二.渲染模式 三.前置知识 四.写在最后 一.OpenGL是什么 我们首先先了解一下OpenGL到底是什么。一般我们认为是包含了一系列可以操作图形、图像的函数的一套API。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并…

6 款值得收藏的安卓照片恢复应用,支持最新的Android 13/14

由于意外删除、软件故障、系统崩溃、恢复出厂设置或任何其他原因,您可能会丢失 Android 手机中的照片。无论如何,您仍然有很大的机会在 Android 照片恢复应用程序的帮助下恢复照片。有大量提供恢复支持的应用程序,但并非所有应用程序都能够有…

Python与CAD系列高级篇(十八)文本前后缀及部分内容替换

0 简述 本篇介绍以下几项功能开发:1.选择文本并将指定前缀替换为特定文字;2.选择文本并将指定后缀替换为特定文字;3.选择文本并将指定部分内容替换为特定文字。 1 选择文本并将指定前缀替换为特定文字 需求: ① 用户定义需要替换的文本前缀及替换后的文字。 ② 将选中的文本…

【SpringSecurity 】SpringSecurity 自定义登录页面

一、配置 package com.boot.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.…

Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

文章目录 一、创建企业微信机器人二、配置AlterManager告警发送至企业微信三、Prometheus接入AlterManager配置四、部署PrometheusAlterManager(放到一个Pod中)五、测试告警 注意:请基于 PrometheusGrafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 一、创…

4 Bean生命周期

1 生成BeanDefinition ClassPathScanningCandidateComponentProvider#scanCandid ateComponents(String basePackage) 扫描某个包路径,并得到BeanDefinition的Set集合 Spring扫描底层流程: 1 首先,通过ResourcePatternResolver获得指定包路径…