前言
前面已经了解了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复位攻击思路
思路导图
大概思路可大致分为以下几步: