cve-2008-4609
1.背景

根据描述,是tcp协议栈的问题,在linux,windows等平台都存在。这实际是一种dos的方法,称为sockstress
2.Sockstress
SockStress攻击利用建立TCP/IP三次握手连接来实现拒绝服务攻击,而且与Syn-Flood不同它并非通过耗尽服务器的TCP连接数来让正常用户的正常请求无法响应,而是直接耗尽服务端的内存、CPU等资源让受害者宕机,属于非对称的资源消耗攻击
3.原理

1.首先,攻击者大量请求建立三次握手连接
2.成功建立ESTABLISHED之后,攻击者会将数据包中window的值置为0(window的意思代表client这边一次可以接受的数据大小,置为0之后表示client没有window来接受server发来的数据,然后server就会分配内存来维持TCP连接直到client有空闲的window与之通信),然而client(攻击者)不会维持连接,只会不断的请求TCP连接耗尽server(靶机)的资源
3.当server这端维持连接达到一定数量之后,内存、CPU甚至是SWAP分区都会被耗尽,系统命令不能正常执行
4.复现
攻击者(kali,192.168.96.135),靶机(win7,196.168.96.132)
Kali执行

Win7上开了phpstudy,默认80端口开放
攻击前:

攻击后

5.代码分析
作为攻击者,主要是构造第一次握手的数据包(syn)和第三次握手的数据包(synack)
相应函数分别如下


6.流量分析
大量建立连接(三次握手的前两次)

在kali向win7发的ack(三次握手的最后一次)包中置windows size为0

检测方案:
检测到特征:
1.同一地址同一时间段大量发起tcp请求
2.根据tcp报文格式,检测到窗口字段设置为0
附图:tcp报文格式

SockStress攻击利用TCP/IP三次握手过程实现拒绝服务攻击,不同于Syn-Flood攻击方式,SockStress直接耗尽服务端资源导致系统崩溃。攻击者通过将TCP连接窗口大小设置为0并不断建立连接耗尽服务器资源。
3153

被折叠的 条评论
为什么被折叠?



