鉴源实验室

Jianyuan Lab

TCP协议网络安全攻击

发布时间:2023-04-07 作者:上海工业控制安全创新科技有限公司 点击次数:

作者 | 吴延占 上海控安可信软件创新研究院研发工程师


来源 | 鉴源实验室


引言:随着计算机、控制与网络技术的飞速发展,信息化时代已经到来。TCP协议作为可靠性传输协议,在工业自动化、轨道交通、新能源等领域的数据传输方面得到了广泛使用。在使用TCP协议做数据传输的的同时,TCP协议网络安全问题也不容忽视。在介绍TCP协议网络安全攻击之前,首先要了解TCP协议的概念、主要功能、主要特点、报文格式以及相应的工作方式,才能进一步了解到TCP协议网络安全攻击,更好地防范TCP攻击。

01

TCP协议


传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 [1]  定义。

TCP位于OSI(Open System Interconnection)七层模型中的传输层。不同于传输层其它协议,TCP具有独立的、可对数据流进行分片成适当长度的报文字段、传输可靠的优点。当收到上层应用层数据流后,根据数据链路层的最大传输单元(MTU)对数据流进行分割处理,然后依次进入网络层、数据链路层对数据封装处理,进而发送到相应的接收端。

TCP协议工作流程如下图如下:

图 1 TCP协议工作流程图

由上图可以看出,TCP协议需要三次握手建立连接并且包含相应的序列号、确认号,当断开连接时需要四次挥手才能正常断开,属于安全、可靠性连接。


02

 TCP攻击与防御


TCP攻击是指利用TCP协议的设计缺陷或漏洞,对目标主机或网络进行攻击的行为。TCP攻击包括TCP SYN泛洪攻击[2]、TCP SYN扫描攻击、TCP FIN扫描、TCP LAND攻击[3]、TCP中间人攻击[4]和TCP连接重置攻击等。本文主要针对以上几种攻击做详细介绍。

另外,TCP防御策略[5]也是多种多样,本文也是在每种攻击介绍完毕之后,简单介绍相应的防御策略。

2.1 TCP SYN泛洪攻击

(1)攻击实现

TCP SYN泛洪攻击,英文为“TCP SYN Flood Attack”。此攻击是利用TCP三次握手过程存在的漏洞,达到一种DOS(Denial of Service)攻击目的。

当攻击者发送此攻击时,被攻击主机会在短时间内接收到大量的TCP SYN请求连接,如果被攻击对象没有相应防御策略,短时间内可能会占用大量的主机资源,或者进一步将主机资源耗尽,从而拒绝其它应该正常连接的设备进行正常连接,最终达到了使被攻击主机拒绝服务的目的。

具体实现如下图所示:

图2  TCP SYN泛洪攻击

由上图可知,攻击者利用TCP协议中的三次握手过程中存在的漏洞,向目标主机发送大量伪造的TCP SYN连接请求,目标主机在接收到这些请求后会向攻击者回复TCP SYN-ACK包,然后等待攻击者响应TCP ACK包,完成TCP连接的建立。但攻击者并不会回复TCP ACK包,而是会忽略目标主机发来的TCP SYN-ACK包并持续发送TCP SYN连接请求,从而导致目标主机长时间等待TCP连接的建立,占用大量资源,最终导致目标主机无法正常工作。

(2)防御策略

TCP SYN泛洪攻击是一种常见的DoS攻击手段,可以通过以下几种方式进行防范:

● 安装防火墙:可以利用防火墙的过滤功能,从而间接地过滤掉一部分可能存在的恶意的TCP数据包,从而保护目标主机。

● 用TCP SYN Cookie机制:TCP SYN Cookie是一种防止TCP SYN泛洪攻击的机制,它可以在不存储连接信息的情况下,使被攻击主机正确处理TCP连接请求。

● 限制TCP连接数:通过限制TCP连接数,可以减少TCP SYN泛洪攻击的危害。

● 更新系统和应用程序:根据已经检测到的或者公众已经熟知的漏洞,及时更新系统和应用程序,从而提高系统的安全性(此防御策略对后面其他攻击也同样适用)。

2.2 TCP SYN扫描攻击

TCP SYN扫描攻击,英文“TCP SYN Scan Attack”。此攻击可以扫描到被攻击主机所支持的TCP开放端口,从而可以进一步发现被攻击主机的一些其他信息。

(1)攻击实现

具体实现如下图所示:

图3  TCP SYN扫描攻击

由上图可以看出,TCP SYN扫描攻击是利用TCP协议的三次握手过程中实现的,这个也是TCP三次握手存在的漏洞。实现可以分为三步,当攻击者向被攻击主机某个端口发送第一次握手连接(即TCP SYN连接请求),如果被攻击主机此端口在TCP监听状态,则会向攻击者发送第二次握手包(即TCP SYN-ACK包,作为第一次握手的响应包)。

根据TCP协议连接时三次握手规范,此时被攻击主机在等待攻击者发送第三次握手包(即TCP ACK包,作为第二次握手的响应包)。但此时攻击者并不会响应第三次握手,而是会迅速发送TCP RST包,也会避免被及对方记录连接信息。以一种无痕迹的方式获取到了目标主机的开放端口。

当攻击者获取到某一个端口状态时,继续切换到下一端口,按照以上步骤再次发送TCP SYN扫描攻击,直到所有端口扫描完毕。

(2)防御策略

针对TCP SYN扫描攻击,也可以制定一些相应的方法进行防御,主要实现手段有以下几种:

● 安装防火墙:可以利用防火墙的过滤功能,从而间接地过滤掉一部分可能存在的恶意的TCP数据包,从而保护目标主机。

● 关闭不经常使用服务:关闭不经常使用的一些服务,不允许随意安装APP,也可以减少系统的漏洞,使系统的安全性进一步提高。

● 使用IDS/IDS(入侵检测系统、入侵防御系统)防御设备:入侵检测、防御系统也可以有针对性地、及时地发现攻击者是否在进行TCP SYN扫描,使得目标机系统安全得到提升

2.3 TCP FIN扫描攻击

TCP FIN扫描攻击,英文“TCP FIN Scan Attack”。TCP FIN扫描攻击属于TCP协议存在的一种漏洞,TCP FIN 扫描攻击与TCP SYN扫描攻击实现的目的一致,都是为了获得目标主机开放的端口,从而获取目标主机的一些其他信息。

(1)攻击实现

TCP FIN扫描攻击与TCP SYN扫描攻击不同的地方,是TCP FIN扫描攻击是利用TCP协议断开连接时的四次握手机制,即攻击者向被攻击对象发送TCP FIN包,如果被攻击对象此时对应的端口是开放的,被攻击主机会及时相应TCP SRT的数据包。相反,如果被攻击主机此端口没有开放,则攻击主机不会收到TCP RST数据包。

具体实现如下图所示:

图4  TCP FIN扫描攻击

由上图可以看出,TCP FIN扫描攻击是一种无痕迹扫描,攻击扫描期间并不会与对方建立连接。因此也不会被对方记录连接信息。

当攻击者获取到某一个端口状态时,可以继续切换到下一端口,按照以上步骤再次发送TCP FIN扫描攻击,直到所有端口扫描完毕。

(2)防御策略

针对TCP FIN扫描攻击,也可以制定一些相应的方法进行防御。通用的防御方法如2.2章节的防御策略,针对TCP FIN扫描也是适用的。

另外实现TCP FIN扫描攻击的防御,也可以通过以下方式:

● 安装TCP Wrapper:TCP Wrapper也是网络安全中常用的一种安全工具,其实现方式与iptables相似,可以根据IP地址、主机名、服务名等来控制网络连接,从而提高系统的安全性。

2.4 TCP LAND攻击

TCP Land攻击,英文为“TCP local area network denial attack”,TCP Land攻击是一种利用TCP协议中的漏洞进行的攻击。

它的主要原理是伪造一个TCP数据包,并在该数据包的源IP地址和目标IP地址中都填写相同的IP地址,从而使目标主机陷入死循环,无法与其他主机通信。

(1)攻击实现

具体实现如下图所示:


图5  TCP LAND攻击

由上图可以看出,TCP LAND攻击利用了TCP协议中的SYN标志位。攻击者发送一个伪造的TCP SYN数据包(SYN标志位被设置为1)给目标主机,并且源IP地址和目标IP地址都被设置为目标主机的IP地址。当目标主机接收到这个数据包时,它会认为这是一个新的TCP连接请求,并尝试发送一个SYN ACK数据包作为响应。但是,由于源IP地址和目标IP地址都为目标主机本身,目标主机会一直向自己发送数据,最终导致系统崩溃或网络拥堵。

(2)防御策略

TCP LAND攻击是一种常见的DoS攻击手段,在以上其他章节介绍的入侵检测防御系统、对操作系统升级等通用防御策略基础上,还可以通过以下几种方式进行防御:

● 配置防火墙:防火墙可以进行配置,限制TCP的源地址是本地地址的情况下,存在TCP SYN的数据流,从而避免恶意的TCP LAND攻击。

● 配置网络流量监控系统:实时检测网络中的流量信息,当发现异常流量时及时上报提醒,防止TCP LAND攻击等类型的拒绝服务攻击。

2.5 TCP 中间人攻击

TCP中间人攻击,包括TCP会话劫持和TCP连接重置两种实现方式,本文以TCP会话劫持为例进行讲解。

TCP会话劫持(TCP session hijacking),是指攻击者通过监听或者篡改网络流量,获取到合法用户的TCP会话信息,然后利用这些信息来冒充合法用户与服务器或其他合法用户进行通信的一种攻击行为。攻击者利用TCP会话劫持可以实施多种攻击,如窃取用户信息、篡改用户数据、劫持会话等。

(1)攻击实现

以攻击者冒充客户端为例,其实现如下图所示:


图6  中间人攻击

由上图可以看出,TCP中间人攻击是攻击者在网络中对传输的数据进行监听和分析,当攻击者获取到客户端的TCP会话序列号及确认号后,就可以伪造TCP数据包来冒充客户端与服务器进行通信。攻击者通过这种方式可以绕过服务器的认证和授权机制,进而实现各种攻击目的。

(2)防御策略

通过以上关于TCP 中间人攻击实现原理,可以通过以下几种方式进行防范:

● 使用加密协议:可以使用TLS、SSH等,对数据传输过程中加密、对原始数据进行加密,从而避免数据被攻击者窃取。

● 对服务器和应用程序进行安全加固,如关闭不必要的服务和端口、限制访问权限、采用安全认证机制等,提高系统的安全性。


03

小 结


TCP攻击不同的方式各具有不同的特点,但都会导致目标主机或网络的服务中断或降级。为了防范TCP攻击,主机必须有相应的安全防御策略。尤其是在网络信息化的今天,一些对数据保密性要求较高、又需要网络传输的的数据,数据安全可以说是重于泰山,安全防御策略必不可少,更是需要防范TCP攻击。


参考文献:

[1]  Cerf, V., and R. Kahn, "A Protocol for Packet Network Intercommunication", IEEE Transactions on Communications,Vol. COM-22, No. 5, pp 637-648, May 1974.

[2] A Profile Based Network Intrusion Detection and Prevention System for Securing Cloud Environment[J]. Sanchika Gupta;Padam Kumar;Ajith

Abraham.International Journal of Distributed Sensor Networks,2013(3).

[3] Application of anomaly detection algorithms for detecting SYN flooding attacks[J]. Vasilios A. Siris;Fotini Papagalou.Computer

Communications,2005(9).

[4]Oleg Kupreev,Ekaterina Badovskaya,Alexander Gutnikov,DDoS Attacks in Q4 2018,[J/OL]on February 7,2019,Kaspersky Lab report,2021-1-3.

[5] 基于Internet的TCP会话劫持欺骗攻击与防御策略[J]. 赵景;王浉锟.现代电子技术,2020(16).


阅读原文