Synflood攻击

Zss 发表于:

syn想到的肯定是tcp中第一次握手,当syn为1其余标记位都为0时,此时是一次请求建立的消息

synflood攻击也叫做syn泛洪攻击,它也是属于DDOS攻击的一种

 

它是利用的tcp的三次握手的缺陷来进行的攻击,目的是消耗掉服务器的tcp资源来导致正常的tcp无法连接

 

我们知道tcp的三次握手当第一次握手成功后,服务器会发送syn+ack来响应客户端,此时的服务端是出于一个半连接的状态

这时的服务端一直是在等待客户端响应最后的ack来最终确定连接,那么我不停的伪造tcp的第一次握手的syn数据包,伪造不同的源地址来和服务端进行连接

此时服务端不停的响应第二次握手包,最后我不来响应ack第三次握手,那么服务器是一直处于一个半连接的状态

只需要构造不同的源地址来请求服务器,这样子没发送一个不同的源地址就造成了一次半连接,半连接是需要消耗服务器的各个资源的

最终导致服务器无法响应正常的tcp

 

半响应的状态并不会马上结束掉,当等待一段时间后未收到客户端的响应,那么再次发送一次syn+ack,如果还是没有收到,那么等待一个timeout的时间再结束掉这次的连接

这段时间大概30秒-2分钟左右

 

想想一个用户在连接时出现故障导致server的一个线程等待1分钟并非什么大不了的问题,但是如果使用的脚本来生成成堆的不同的源地址来发送,那么服务端是受不住的

这个在python中还是可以使用到scpay模块来构造数据包,生成不同的源地址和mac来快速的发送,但是现在的网络都是通过nat的地址转换出去的,我想应该需要一个公网ip来直连接到pc来发送这种数据包则可以攻击到部署在公网的服务器了,不过可以在局域网中来实验这种情况