第2章 TCP/IP协议基础 Ethernet Source Address [Type Code F IP header, then TcP header, then your data end of your data 图2-5IP资料头格式 处来,在必要时可以回复信息。目的地址則是接收信息的主机地址,有了此一地址,网络 上的各路由器( rouler)才能判断将资料包送往何处。 Protocol Number则告知日的端主机将此资料包送给哪一个呼叫此IP地址的协议 (TCP协议或UDP协议…等其中之一)模组继续处理:当资料包被送到某个网络时,如 果这个网络没有办法传送如此大的资料包时,每一个资料包会被切成几个更小的资料块 此时标记( Flags)和片断位移( Fragment Offset被用来记录追踪这些小资料块。生存时间 ( Time to Live)中的数字在资料包每经过-个系统的时候就会被逐渐递减,当此值等于0 时,此资料包会被丢弃不再传送,如此就可以避免万一传送的路径形成回路时无法停止传 送 加上IP资料头之后,整个信息如图2-6所示。 aD:2a国山0灿n32 图2-6资料包加上IP资料头 3.TCP协议运作 TCP协议顺序号是指当前消息中数据的第一个字节的数,SYN域用于标识初始顺序 号,若SYN域为1,则为初始顺序号。通告号用于指出下一个消息的顺序号;数据位移域 用于标识头部的大小 URG域用于发送乱颊数据,无须等待接收者已在流中的8位一组的数据。当URG 域为1时,紧急指针域有效。紧急指针指向紧急数据序列最后一个字节的位置(顺序号), 个TP的实现必须支持任意长度的紧急数据序列。TCP层应异步通知应用层,它何 时收到个带有未预先处理的紧急数据的紧急指针,或者什么时候紧急指针在数据流中 向前移动 应用程序必须了解还有多少紧急数据要从连接中读取,或至少决定是否有紧急数据 要读取。机制用在向一个 Telnet程序发送中断类型命令。异步和乱频的通知允许应用 程序进入紧急状态,从TCP连接中读取数据。它允许控制命令发送到一个通常的输入缓 冲区积满了未处理数据的应用程序。 ACK域是用于判断通告号域是否有效,若无效,则意味若是最后一个消息或传输完
闪络安全技术教程 PHS域时.可使TCP立即向上层进程传送数据。当·个应用程序发出系列未设置 PSH发送调用时,!CP协议可以在内部粢集数据。暂不发送:同样,当TCP协议接受到 系列不带PSH标识的区殺时,也在内部将数据排队阍不发送给接收程序。发送者应在 发送数据时撤掉连续的PSH位,以便发送尽可能大的区段,一个TCP协议可在发送调用 中实现PSH标识,但当PH没有实现,发送TCP数据包时,数据不能无限制,必须在最后 的缓冲区段设置 PSHRST用于虛拟线路的重启(当遇不可恢复的错误时)。SYN域指示 个虚拟线路的廾通 连接通过“次握「”过程 (1)SYN=1和4CK=0打开连接封包 (2)SYN-1和ACK-1打开连接通告 (3)SYN=0和A(K=1数据封包或ACK封包 FIN用于终止连接(双方均械发出) 4.TCP/P协议的安全问题 联网技术屏蔽了底层网络硬件细节,使得异种网络之间可以互相通信。TCP/TP 协议组是目前使用最广泛的网络互联协议。但TCP/IP协议组本身存在着一些安全性问 题。这就给“黑客”们攻击网络以可乘之机。由于大量重要的应用程序都以TCP协议作 为它们的传输层协议,因此TCP协议的安全性问题会给网络带来严重的后果。 1)TCP状态转伟图和定时器 rCP状态转移图控制了一次连接的初始化、建立和终止,该图由定义的状态以及这 些状态之间的转移弧构成。TCP状态转移图与定时器密切相关,不同的定时器对应于连 接建立或终止、流量控制和数据传输。儿类主要的定时器及其功能如下 (1)连接定时器:在连接建立阶段,当发送了SYN包后,就启动连接定时器,如果在 75内没有收到应答,则放弃连接建立 (2)FNWA1T2定时器:当连接从 FIN-WAIt!1状态转移到FNWA-2状态时 将一个 FIN-WAIT2定时器设置为10min。如果在规定时间内该连接没有收到一个带有 置位FN的TCP包,则定时器超时,再定时为75s如果在该时间段内仍无FIN包到达, 则放弃该连接 (3) TIME-WAIT定时器:当连接进入 TIME-WAIT状态时,该定时器被激活:当定 时器超时时,与该连接相关的内核数据块被删除,连接终止 (4)维持连接定时器其作用是预测性地检测连接的另一端是否仍为活动状态。如 果设置了SO- KEEPALIⅤE套接字选择项,则TCP机状态是 ESTABLISHED或 CLOSE WAITO 2)网绪入侵方式 (1)伪造IP地址 入侵者使用假地址发送包,利用基于IP地址证实的应用程序。其纳果是未授权 的远端用户进入带有防火墙的主机系统。TCP的状态转移如图2-7所示。 假设有两台主机A、B和入侵者控制的主机X。假设B授予A某些特权,使得A能够 获得B所执行的一些操作。X的日标就是想得到与B相同的权利。为了实现该目标X 必须执行两步操作:首先,与B建立一个虚假连接;然后,阻止A向B报告网络让实系统
第2章 TCP/IP协议基础 CL.OSLE-WAIT 以A→[ LOSING [ASTAC F-IN- WAI1-2 L诉] 客户机正常转移 服务器正常转移 图2-7TCP状态转移图 的问题。主机X必须假造A的I地址,从而使B相信从X发来的包的确是从A发米 同忖假设主机↓和B之间的通仁遵守TCP/IP协议的一次握手机制.握手方法是 A+:SYN(序列号=M) B→A:SYN(序列号=N),A(K(应答序号=M+1) A-B:ACK(应答序号=N+1) 主机X伪造1地址步骤如下:首先,X冒充A,向主机B发送个带有随机序列号的 sYN包。丰机B响应,向主机A发送一个带有应答号的SYN+ACK包,该应答号等于原 序列号加1。同时,主机B广生自己发送包序列号,并将其与应答号-起发送:为了完成 次握手,上机X需要向主机B回送一个应答包,其应答号等于丰机B向主机A发送的 包序列号加1。假设上机X与A和B不同在一个子网内,则不能检测到B的包,主机X 、有算出B的序列号,才能创建TCP连接。其过程描述如下 XB:SYN(序列号=M),SRC=A B→A:SYN(序列号=N),ACK(应答号=M+1) X→B:A(K(应答号=N+1).SRC=A 同时,主机应该阻止主机A响应上机B的包。为此,X可以等到主机A因某种原 因终止运行,或者阻塞主机A的操作系统协议部分,使它不能响应主机B 日主机X完成了以上操作,它就川以向主机B发送命令、主机B将执行这些命 令,认为它们是由合法主机A发来的 (2)状态转移的问题 上述的入侵过程,上机X是如何阻主机A向主机B发送响应的主机X通过发送 系列的SYN包,但不让A向B发送 SIN-ACK包而中止主机A的登录端口,如前所
网络安全技术教程 述,ICP维持个连接建立定时器:如果在规定时间内(通常为75s)不能建立连接,则 TCP将重置连接。在前面的例∫中,服务器端口是无法在75s内作出响应的 下面来讨论下土机X和主机A之间相互发送的包序列。X向A发送-个包,其 sYN位和FIN位置位,A向X发送ACK包作为响应 X·A: SYN FIN(系列号=M) A→X:ACK(应答序号=M+1) 从图2-8的状态转移可以看出,A开始处于监听( LISTEN)状态。当它收到来自X 的包后,就开始处理这个包。值得注意的是,在TCP协议中,关于如何处理SYN和FIN 时置位的包并未做出明确的规定。假设它首先处理SYN标志位,转移到 SYN-RCVD 状态。然后再处理FN标志位,转移到 CLOSE-WAIT状态。如果前一个状态是ES TABLISHED,那么转移到 CLOSE-WAIT状态就是正常转移。但是,TCP协议中并未对 从SYN-RCVD状态到 CLOSE-WAT状态的转移作出定义。但在几种TCP应用程序中 都有这样的转移,例如开放系统 SUN OS4.1.3,SUR4和 UI.TRX4.3。因此,在这些TCP 应用程序中存在条TCP协议中未作定义的从状态 SYN-RCVD到状态 CLOSE-WAIT 的转移弧,如图2-8所示。 ED d LISTEN 匚 SYN-RCVD ESTABLISHEDFCLOSE-WAIT LFIN-WAIL-1A--CLOSINC LAST-ACK LHN-WAIT-2H-LTIME-WAITJ 客户机正常转移 服务器正常转移 外部转移 图2-8TCP状态图的一个外部转移 在上述人侵例子中,由于三次握手没能彻底完成,因此并未真正建立TCP连接,相应 的网络应用程序并未从核心内获得连接。但是,主机A的TCP机处于 CLOSE- WAIT状 态,因此它可以向X发送一个FIN包终止连接。这个半开放连接保留在套接字侦听队列 中,而且应用进程不发送任何帮助TCP协议执行状态转移的消息。因此,主机A的TCP 机被锁在了 CLOSE-WAIT状态。如果维持活动定时器特征被使用,通常2h后TCP协议 将会重置连接并转移到 CLOSED状态 当TCP机收到来自对等主机的RST时,就从 ESTABLISHED, FINWAIT】和FIN WAT2状态转移到 CLOSED状态。这些转移是很重要的,因为它们重置TCP机且中断 网络连接。但是,由于到达的数据段只根据源P地址和当前队列窗口号来证实。因此人 侵者可以假装成已建立了合法连接的一个主机,然后向另一台主机发送一个带有适当序
第2章TCP/I协议基础 列号的RST段,这样就可以终连接了。 从}:面的分析可以看到几种TCP应用程序屮都存在外部状态转移。这会给系统带 来严重的安全性问题 (3)定时器问题 止如前文所述,一旦进人连接建立过程,则启动连接定时器。如果在规定时间内不能 建立迕接,则TCP机回到 CLOSED状态。 我们来分析…下主机A和主机X的例子。主机A向主机X发送一个SYN包,期待 着回应·个SYN-ACK包。假设儿乎同时,王机ⅹ想与主机A建立连接,向A发送·个 SYN包。A和X在收到对方的SYN包后都向对方发送个 SYN-ACK包。当都收到付 方的SY、-ACk包后,就可认为连接已建立。在本文中,假设当主机收到对方的SYN包 后,就关闭连接建立定时器 X→A:SYN(序列号=M) 4→X:sYN(序列号=N) X→A:SYN(序列号=M),ACK(应答号=N+1) A→X:SYN(序列号=N),ACK(应答号=M+1) ①主机X向主机A发送一个FTP请求。在X和A之间建立起一个TCP连接来传 送控制信号。主机A向X发送个sYN包以启动一个TCP连接用来传输数据,其状态 转移到 SYN-SENT状态。 ②当X收到来自A的SYN包时,它回送一个SYN包作为响应。 ③主机X收到来自A的 SYN-ACK包,但不回送任何包 ④主机A期待着接收米爿X的SYN-ACK。由于X不凹送仃何包,丙此A被锁在 sYN-RCVD状态:这样,X就成功地封锁了A的一个端口。 3)利用网络监控设备观测网络入侵 在局域网上安装个网络监控设备观测通过网络的包,从而判断是否发生了网络入 侵。下而将讨论在儿种入侵过程中网络监控设备可观测到的序列包 (1)伪造IP地址 最初,网络监控设备会监测到大量的 TCP SYN包从某个主机发往A的登录端口 主机A会回送相应的SYN-ACK包。SYN包的目的是创建大量的与主机A的半开放的 TCP连接,从而填满了主机A的登录端口连接队列。 大量的 TCP SYN包将从丰机X经过网络发往主机B,相应地有 SYN-ACK包从主机 B发往主机X=然后主机X将用RST包作应答。这个SYN/SYN-ACK/RST包序列使得 入侵者可以知道主机B的TCP序列号发生器的动作 主机A向主机B发送一个SYN包。实际上,这是主机X发送的一个“伪造”包。收 到这个包之后,主机B将向主机A发送相应的 SYN-ACK包。主机A向主机B发送ACK 包。按照上述步骤,人侵主机能够与主机B建立单向TCP连接 (2)虚假状态转移