TCP重置攻击指的是使用伪造的TCP重置包干扰用户和网站的连接。这个技术可以在善意的防火墙中应用,但也可用于网络审查或是攻击,恶意中断Internet连接。中国的防火长城便运用了这个技术进行TCP关键字阻断。使用IPsec可以避免TCP重置攻击。
本质上,Internet是用于单个计算机交换电子消息或IP数据包的系统。该系统包括用于承载消息的硬件(例如铜缆和光纤电缆)和用于格式化消息的形式化系统,称为“协议”。互联网上使用的基本协议是IP协议,通常与其他协议(例如TCP或UDP协议)结合使用。TCP/IP是用于电子邮件和Web浏览的协议集。每个协议都有一个信息块,称为包头,包含在每个数据包的开头附近。包头含有关哪台计算机发送了数据包,哪台计算机应接收它,数据包大小等信息。
当两台计算机之间需要双向虚拟连接时,TCP与IP一起使用。(UDP是无连接IP协议。)两台机器上的TCP软件将通过交换数据包流进行通信(例如,装有浏览器的电脑和Web服务器)。使用TCP连接为计算机提供了一种简便的方法来交换对于单个数据包来说太大的数据项,例如视频剪辑,电子邮件附件或音乐文件。尽管某些网页对于单个数据包来说足够小,但为方便起见,它们也是通过TCP连接发送的。
在TCP连接的数据包流中,每个数据包都包含一个TCP包头。这些包头中的每一个都包含一个称为“复位”(RST)标志的位。在大多数数据包中,该位设置为0,并且无效;但是,如果此位设置为1,则向接收计算机指示该计算机应立即停止使用TCP连接;它不应使用连接的标识号(端口)发送更多数据包,并丢弃接收到的带有包头的其他数据包,这些包头指示它们属于该连接。TCP重置基本上会立即终止TCP连接。
按照最初的设计,这是一个有用的工具。常见的应用是在进行TCP连接时计算机(计算机A)崩溃的情况。另一端的计算机(计算机B)将继续发送TCP数据包,因为它不知道计算机A已崩溃。重新启动计算机A后,它将从旧的崩溃前连接接收数据包。计算机A没有这些数据包的上下文,也无法知道如何处理这些数据包,因此它可以向计算机B发送TCP重置。此重置使计算机B知道该连接不再起作用。计算机B上的用户现在可以尝试其他连接或采取其他措施。
在上述情况下,TCP重置是由作为连接端点之一的计算机发送的。但操作中,第三台计算机可以监视连接上的TCP数据包,然后将包含TCP重置的“伪造”数据包发送到一个或两个端点。伪造数据包中的报头必须错误地表明它来自端点,而不是伪造者。此信息包括端点IP地址和端口号。IP和TCP包头中的每个字段都必须设置为令人信服的伪造值,以进行伪重置,以欺骗端点关闭TCP连接。正确格式化的伪造TCP重置可能是中断伪造者可以监视的任何TCP连接的非常有效的方法。
伪造的TCP重置的一个明显的应用是在未经拥有端点的两方同意的情况下恶意破坏TCP连接。但是,也有人设计了使用伪造TCP重置来保护网络安全的系统。1995年被演示的一个原型“ Buster”软件包,该软件包会将伪造的重置发送到使用短列表中的端口号的任何TCP连接。Linux志愿者在2000年提出了在Linux防火墙上实现此功能,而开源的Snort早在2003年就使用TCP重置来中断可疑连接。
IETF认为,RFC3360中防火墙,负载平衡器和Web服务器进行的TCP重置是有害的。
到2007年年底,康卡斯特(Comcast)开始使用伪造的TCP重置来削弱其客户计算机上的点对点和某些群件应用程序。这引起了争议,随后由Lauren Weinstein, Vint Cerf, David Farber, Craig Newmark和其他知名的互联网开放性的创始人和倡导者成立了网络中立性小组(NNSquad)。2008年,NNSquad发布了NNSquad Network Measurement Agent,这是由John Bartas编写的Windows应用程序,它可以检测Comcast伪造的TCP重置并将它们与实际的端点生成的重置区分开。用于检测重置的技术是从较早的开源“ Buster”软件开发的,该软件使用伪造的重置来阻止网页中的恶意软件和广告。
FCC于2008年1月宣布,它将调查Comcast对伪造重置的使用,并于2008年8月21日命令Comcast终止该行为。
通过使用VPN对连接进行加密,攻击者必须对所有加密连接进行TCP重置攻击,从而造成附带损害。