前言
前面已经了解了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 重置报文做了一下几个事情
特点
对长连接有杀伤力
如果攻击者伪造的报文段完全逼真,接收者就会认为它有效,并关闭 TCP 连接!
当然服务端可以创建一个新的 TCP 连接,从而恢复通信,但仍然可能会被攻击者重置连接
不过攻击者需要时间来组装和发送伪造报文,所以一般情况下这种攻击只对长连接有杀伤力,而对于短连接而言,还没攻击,别人已经完成了信息交换
伪造正确的 TCP 重置报文段并完成攻击却并不容易
从某种意义上来说,伪造 TCP 报文段是很容易的,因为 TCP/IP 都没有任何内置的方法来验证服务端的身份
有些特殊的IP扩展协议(例如 IPSec)确实可以验证身份,但并没有被广泛使用。客户端只能接收报文段,并在可能的情况下使用更高级别的协议(如 TLS)来验证服务端的身份。但这个方法对 TCP 重置包并不适用,因为 TCP 重置包是 TCP 协议本身的一部分,无法使用更高级别的协议进行验证
尽管伪造 TCP 报文段很容易,但伪造正确的 TCP 重置报文段并完成攻击却并不容易
复现TCP复位攻击思路
思路导图
大概思路可大致分为以下几步: