TCP复位攻击的原理

2,993 阅读3分钟

前言

前面已经了解了HTTP以及TCP/IP协议

这一节的内容还是跟TCP相关,CP复位攻击的原理

正文

我先从理解概念触发,聊聊什么是TCP复位攻击~

什么是TCP复位攻击

TCP重置攻击也叫RST攻击,它是攻击者通过制作并发送一个伪造的TCP重置包,来干扰用户和网站的连接、达到欺骗通信双方终止TCP连接的目的的攻击手段

举个例子:A和服务器B之间建立了TCP连接,此时C伪造了一个TCP包发给B,使B异常的断开了与A之间的TCP连接,这就是RST攻击了

一般,它使用一个单一的数据包来执行的,只有几个字节大小

具体原理呢,请接着往下看

TCP重置攻击的工作原理

利用机制

正常情况下,如果客户端收发现到达的报文段对于相关连接而言是不正确的,TCP 就会发送一个重置报文段,从而导致TCP连接的快速拆卸

TCP重置攻击正是利用这一机制,通过向通信方发送伪造的重置报文段,欺骗通信双方提前关闭 TCP连接

那如何伪造一个 TCP 重置报文呢?

伪造重置报文

大致总结一下伪造一个 TCP 重置报文做了一下几个事情

image.png

特点

image.png

对长连接有杀伤力

如果攻击者伪造的报文段完全逼真,接收者就会认为它有效,并关闭 TCP 连接!

当然服务端可以创建一个新的 TCP 连接,从而恢复通信,但仍然可能会被攻击者重置连接

不过攻击者需要时间来组装和发送伪造报文,所以一般情况下这种攻击只对长连接有杀伤力,而对于短连接而言,还没攻击,别人已经完成了信息交换

伪造正确的 TCP 重置报文段并完成攻击却并不容易

从某种意义上来说,伪造 TCP 报文段是很容易的,因为 TCP/IP 都没有任何内置的方法来验证服务端的身份

有些特殊的IP扩展协议(例如 IPSec)确实可以验证身份,但并没有被广泛使用。客户端只能接收报文段,并在可能的情况下使用更高级别的协议(如 TLS)来验证服务端的身份。但这个方法对 TCP 重置包并不适用,因为 TCP 重置包是 TCP 协议本身的一部分,无法使用更高级别的协议进行验证

尽管伪造 TCP 报文段很容易,但伪造正确的 TCP 重置报文段并完成攻击却并不容易

复现TCP复位攻击思路

思路导图

大概思路可大致分为以下几步:

image.png

参考资料

  1. www.662p.com/article/207…
  2. t.zoukankan.com/ryanyangcs-…
  3. fuckcloudnative.io/posts/deplo…
  4. netsecurity.51cto.com/art/202011/…