李志强 王 巍
(中国联通邯郸市分公司增值业务中心,河北邯郸056002)
浅析TCP/IP三次握手机制的安全性
李志强 王 巍
(中国联通邯郸市分公司增值业务中心,河北邯郸056002)
简述了TCP/IP协议的特点,通过分析TCP/IP的报文结构,深入研究TCP协议SYN所引起的网络安全问题并研究解决办法。
TCP/IP协议;互联网;网络安全;攻击
今天互联网已经深入千家万户,云计算、物联网风起云涌。这一切的基础是TCP/IP协议族。本文阐述了TCP/IP协议广泛应用的同时随之而来的网络安全问题和目前采取的相关措施。
IP是TCP/IP协议中最为核心的协议[1]。IP提供给TCP、UDP、ICMP及IGMP不可靠无连接传输服务。IP协议实现了协议地址与主机标识动态绑定,从而实现异种网的互联。
IP地址是一个由32位——四字节构成的地址标识。它唯一标识Interent网上的一台计算机。而这种标识是动态的。体现在网卡地址MAC与IP地址的动态映射。以下是IP报文首部结构:
物理网络层一般要限制每次发送数据帧的最大长度,所以IP层接收到数据后有可能要将IP数据分片。16位标识字段包含一个唯一值,该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。片偏移字段指的是该片偏移原始数据开始处的位置。32位源IP地址字段用来存储发送端主机IP地址,32位目的IP地址字段用来存储目的主机IP地址。[4]
TCP协议是使用IP向应用层提供一种面向连接的、可靠的字节流服务[1,2]。面向连接意味着两个使用TCP的应用(客户与服务器)在彼此交换数据之前必须先建立一个TCP连接。TCP报文被封装在IP报文数据部分中。TCP报文格式如图2所示,其首部长度通常为20字节:
从图2可以看出,每个TCP段都包含源端口和目的端口号。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接。序列号用来标识从TCP发端向TCP收端发送的数据字节流,它标识在这个报文段中的第一个数据字节。建立TCP连接要经过三次握手,当开始建立一个新的连接时,SYN标志变为1。此时序号字段包含由这个主机选择的该连接的初始序号ISN(Initial SequenceNumber)。该主机要发送数据的第一个字节序号为这个ISN加1,因为ISN用了一个序号。确认序号为发送确认端所期望收到的下一个序号,也就是上次已成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。
在三次握手建立TCP连接时,协议的安全问题就暴露出来了。下面给出三次握手的图示过程:
经过三次握手,双方都被通告对方的起始序号(m,n)。攻击者往往利用这个特性实施网络入侵。
当某个可信任客户端欲存取受保护服务器上资料时,他首先要与之建立TCP连接:
①C——>S:发SYN(ISNC=SEQS=m)这一步服务器要检测该客户端是否是可信任的;
② S—— >C:发 SYN(ISNS=SEQS=n)ACK(ISNC=SEQA=m+1)。
③ C—— >S:发 ACK(ISNS=SEQA=n+1)。
经过三次握手后,服务器认定对方是可信任客户并建立连接。假若攻击者检测到某受信客户身份(IP地址),就可实施TCP序列号序测攻击,如图4所示。图中S是受保护服务器,T是某可信任客户机,X是实施攻击行为者。
其过程为:
① X——>S:SYN(ISNX)SRC=T这一步攻击者X伪造一份报文,源IP地址设为T,是可信任的IP地址;
② S—— >T:SYN(ISNS)ACK(ISNX+1);
③ X——>S:ACK(ISNS+1),SRC=T将原IP地址继续设为T。
过程③最重要的是猜测服务器S的序列号ISNS,一旦猜测成功,伪造报文以伪装成该可信任客户T,并向受保护服务器发确认报文,建立连接;一旦成功建立连接,攻击者就可以在服务器S上执行一些命令(包括上传数据等)。
X同时向可信任客户端T发大量数据以使T无暇处理受保护服务器S发给T的TCP SYN报文(否则,入侵将被识破)。一般采用“TCP SYN淹没”,即向T发大量的TCP SYN直到其处理上限,这时T的并行处理SYN请求已达上限,不再处理额外的TCP SYN连接请求,它会抛弃第②步服务器S发给它的连接请求。
经过一段时间(很短),该入侵者就能成功在服务器上植入木马程式,为进一步入侵打开大门。这种入侵方式只能向服务器传送数据,不能从服务器存取数据。但一旦入侵成功,木马程式将打开后门,使入侵者为所欲为。入侵者关键是对客户端T的拒绝服务攻击和对服务器的序列号ISNS的猜测,一旦猜测成功,入侵就轻而易举。
这种入侵方式可通过防火墙拦截TCP包头,通过检查SYN和ACK标记和序列数字是否逻辑有序,来监控受信任的客户或服务器与不受信任的主机间的TCP握手信息,这样来决定该会话(Session)是否合法。
TCP/IP协议的特点暴露出很多网络安全问题。只有深入了解TCP/IP协议脆弱性才能设计出强大的安全系统暂时弥补它的不足。
[1]W.Richard Stervens.TCP/IP Illustrated Volume 1:The Protocols,1993
[2]DOUGLAS E.COMER Internetworking with TCP/IP Vol I(4th Edition),Prentice-Hall,2000
[3]谭毓安.网络攻击防护编码设计[M]北京:希望电子出版社,2002.3
[4]熊桂喜,王小虎译.计算机网络(第三版)[M]北京:清华大学出版社,1998.7
[责任编校:张彩红]
TP393.08
A
1009-5462(2012)02-0052-03
2012-06-08
李志强,男,河北魏县人,中国联通邯郸市分公司增值业务中心工程师。