HCIE(3)——TCP的DOS攻击

一、了解TCP三次握手过程

要想了解有关于TCP的DOS攻击,就需要首先理解TCP的三次握手过程。

1、TCP的三次握手过程如图:

在这里插入图片描述
第一次握手:
客户端主动去connect服务器,并且发送syn,假设序列号为J
服务器时 被动打开的。
第二次握手:
服务器在收到syn后,它会发送一个syn以及一个ack应答给客户端,ack的序列号为J+1,表示是给syn J的应答
新发送的syn序列号为K
第三次握手:
客户端在收到新的syn K和ack J+1后,也向服务端回应一个ack K+1表示收到了,然后两边就可以开始互相发送数据了。

2、TCP的三次握手详细解析过程

在这里插入图片描述
第一次握手:
客户端在socket()和connect()后,主动连接服务器,发送syn,这时客户端状态为syn_sent。
服务端在socket()、bind()、listen()后等待客户的连接。
收到客户端的syn连接请求后:
1、半连接对列(syn queue)未满时:
服务器将该连接状态变位SYN_REVD,服务器把连接信息放在半连接对列里面。
2、半连接对列已满时:
服务器不会将该连接对列变为SYN_REVD,且会将该连接丢弃(syn flood攻击就是利用这个原理)。
第二次握手:
服务器返回syn+ACK到客户端,客户端收到后,状态从syn_sent变为ESTABLISHED,也就是connect()函数的返回。
第三次握手:
查看全连接对列的最大值:/proc/sys/net/core/somaxconn(默认情况下为128)
全连接对列的大小值=min(backing,somaxconn),这里的参数backing指的是Listen(int sockfd,int backing)函数中的参数backing。
1、全连接对列(accept queeue)未满时:
服务器收到客户端发来的Ack,服务器的连接状态从SYN_REVD变为ESTABLISHED,然后服务器将该连接从半连接对列中移除,并且把该连接的信息放在全连接对列中。
2、全连接对列已满时:
服务器收到客户端发来的ack时,不会将连接从SYN_REVD变为ESTABLISHED状态,当然,全连接对列已满时,根据TCP_abort_on_overflow的值判断相应的动作。
/proc/sys/net/IPv4/tcp_abort_on_overflow查看参数值。
2.1、tcp_abort_on_overflow=0时
则服务器建立该连接的定时器,给客户端重新发送syn+ack,即重新进行第二次握手(如果客户端设置超时时间过短就容易出现异常),服务器重新进行第二次握手的次数/proc/sys/net/ipv4/tcp_synack_retires。
2.2、tcp_abort_on_overflow=1时
当参数为1的时候,重置其连接(一般是会发送RST给客户端)。

以上就是TCP三次握手的详细过程了!!!

二、TCP的DOS攻击

1、TCP的半开攻击,也叫syn洪泛攻击

1)攻击原理
攻击方只需要发送大量的syn分节给服务器,然后对服务器返回的syn+ack什么也不做,直接忽略掉。
不发送ack给服务器,这样就可以一直占着服务器半连接对列的资源,导致正常的客户端无法连接上服务器。
syn flood的攻击方式主要有两种:
第一种是,攻击方的客户端一直发送syn,对于服务端回复的syn+ack什么也不做,直接忽略掉。
第二种是,攻击方的客户端发送syn时,将源IP改为一个虚假的IP,然后服务器会将syn+ack发送到虚假IP上去,这样客户端也不需要回复ack。
2)防御措施
建立cookies机制。
cookies机制就是只为已经成功建立了TCP连接的主机,继续分配连接资源。像那种发出大量syn的连接,但不回复ack的连接,不予受理。后面的连接是建立在前面的连接三次握手已经完成的基础上的。
做法:将/etc/sysctl.conf中的net.ipv4_syscookies值设为1(默认情况下就是1)。
cookies的建立是利用了hash算法提取TCP头部的一写字段来做标记,相当于建立了一个名单。

2、TCP RST重置攻击

1)攻击原理
RST:就算是reset的意思,重置就是指受害者收到的TCP包中携带RST字段,不论当前处于什么状态,都会将当前的连接释放掉。
举例来说,就是A和服务器B建立的TCP连接,如果此时的攻击者C伪造了一个TCP RST的包发给B,就会使B异常的断开与A的连接,这就是RST攻击。
伪造带RST位的TCP包会有什么后果:
①假定攻击者C伪装A发过去的包,这个包里面的RST置位,缓冲器上所有数据,B都会丢弃,并强制关闭所有连接。
②如果C伪装成A发过去的包是syn包,那么B会表示A已经是正常的连接了却又来建立新的连接,默认是不安全,B会主动向A 发送一个RST包,并在自己这端强制关闭连接。
2)攻击手段
kali上使用netwox的78号来实现:
netwox 78 -i “172.24.8.100” -f “port 80”
-i:表示受害者的主机
-f:表示进行过滤,匹配特定的流量
3)防御手段
简单粗暴的一个可行方法:通过防火墙进行简单设置,建议使用防火墙将进来的带RST位的包丢弃。

3、TCP劫持攻击

1)攻击思路
在这里插入图片描述
1、hacker获取client与server的TCP会话包(通常通过ARP毒化、MAC地址洪泛等方法)
2、观察server发送给client的TCP报文,以获取client将要发送给server的下一个报文信息。
3、hacker利用工具伪造一个TCP报文,发送给server,其内容信息通过步骤2获得的报文信息来确定。
大致需要的报文信息有:
二层的src-MAC是hacker的地址
三层的src-IP是client的IP,des-IP是server的IP)四层的参数则是通过步骤2获取。
2)TCP劫持攻击模拟实验
网络拓扑:
在这里插入图片描述
这里的hacker使用kali虚拟机来模拟
这里的victim使用win2003来模拟
这里的server是使用Linux来模拟
使用反弹shell来观察结果。
具体实验过程见:
HCIE(3)——TCP劫持攻击模拟实验
https://blog.csdn.net/qq_45782298/article/details/109204259

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值