TCP协议及其安全缺陷

上传人:沈*** 文档编号:163612621 上传时间:2022-10-22 格式:DOC 页数:50 大小:1.81MB
返回 下载 相关 举报
TCP协议及其安全缺陷_第1页
第1页 / 共50页
TCP协议及其安全缺陷_第2页
第2页 / 共50页
TCP协议及其安全缺陷_第3页
第3页 / 共50页
点击查看更多>>
资源描述
3.3 TCP协议及其安全缺陷 TCP 提供面向连接的服务,例如为Telnet、FTP、SMTP等需要高度可靠性的服务。(RefB_p287_传输层端到端通信的基本结构)(RefB_p288_TPDU结构与IP分组、帧结构的关系)IP数据包中若有已封装好的TCP数据包,则IP将它们向上传送到TCP层。TCP将包进行排序并进行差错检测,同时实现虚电路(VC)间的连接。TCP将数据包中含序列号(SequenceNum)和应答号/确认号(Acknowledgement),对未按顺序收到的包可以被排序,损坏的包要求被重传。(复习:协议封装)(RefC_p66_以太网上使用TCP进行数据封装)(RefC_p70_TCP首部)1)端口号(SrcPort, DstPort):包括源端口号和目的端口号。每个端口号的字段长为16比特,它分别表示发送该报文段的应用程序的端口号与接收该报文段的应用程序的端口号。IP地址没有提供表明某个特定应用的信息,即同一个IP地址可以同众多服务“绑定”,因此需要额外的头(header)信息。端口号用于标示传输层协议和应用层的应用程序之间的接口(interface)。TCP端口号可以提供运行在某台机器上每个应用服务的地址(服务器的服务地址)。通过使用端口号,可以标识一台机器上的多个目的进程。每个端口均被赋予一个小整数以便识别。IP地址加上端口号构成一个套节字(Socket),即构成一个特定的TCP连接。客户端的端口号由TCP协议独立分配,本地唯一。服务器端口号被标准化。常见的服务器的“大众端口“:FTP: 20, 21POP: 110Email: 25WWW: 80Telnet: 23DNS: 53当各服务器程序运行后,在各自的大众端口上等待。如果服务器收到用户请求使用某台主机的服务后,则服务器则向该服务的套节字发送数据。例如,用户希望远程登录到一台服务器上,则向该服务器的23号端口发送message。服务器收到后,TCP根据端口号将message发送到Telnet的服务程序上去。在实际情况中,TCP将端点(endpoint)定义为一对整数(IP, port)。2)序列号(SequenceNum):32比特。由于TCP协议是面向数据流(data stream)的, 它所传送的报文段可视为连续的数据流,因此它需要被发送的每一个字节编上号。序列号为报文段数据的第一个字节的顺序号。3)应答(确认)号(Acknowledgement):32比特。表示接收端希望收到的下一个报文段的第一个字节的序号。4)首部长度(HdrLen):4比特。TCP报头(首部)以4字节(32比特)来计算,实际报头长度为2040字节,则这个字段的为515。5)保留:6比特。保留为今后使用,目前全部设为0。6)标志(Flags):6比特。用来在TCP对等实体间传递控制信息。 i) URG: 当被设置时,紧急指针有效。意味本数据包包含紧急数据,UrgPtr字段指明本数据段的非紧急数据从什么位置开始,而紧急数据包含在数据段体的前部,直到包括UrgPtr所指的字节数为止。 ii) Ack: 当被设置时,确认序列号有效。 iii) Psh: 当被设置时,发送方调用了push操作,告诉接收方应当尽快将这个报文上交给应用层。i) RST: 连接复位reset。当被设置时,说明接受方已经出现混乱,例如收到并不希望收到的数据段等,提出终止连接。ii) SYN:同步序列号,用于发起一个连接。iii) FIN:当被设置时,表明发送端完成发送任务。 7)窗口大小(AdvertizedWindow):16比特。以字节为单位,窗口对应的最大数为65,535字节。 8)校验和(checksum):计算整个TCP的首部、TCP数据、IP首部的源地址和目的地址以及长度字段构成的伪首部(后见UDP介绍)。(复习:三次握手)(RefF_p227_三次握手算法的时间线)典型的TCP协议攻击 /安全缺陷1) LAND攻击:将TCP包中的源地址、端口号和目的地址、端口号设成相同。将地址字段均设成目的机器的IP地址。若对应的端口号处于激活(等待)状态,LAND攻击可使目的机器死机或重新启动。攻击奏效的原因出于TCP的可靠性。攻击利用TCP初始连接建立期间的应答方式存在的问题。攻击的关键在于server和client由各自的序列号。注:i) 初始序列号各方随机自选。 ii) 己方针对对方序列号发出的应答(确认)号对方上次的序列号+1. iii) 己方发出的(非初始)序列号己方上次的序列号+1己方收到的应答号。iv) 各方每次发送以上iii) 和ii)。例:正常情况下的三次握手与通信:客户端 服务端(1) =客SequenceNum=1001 (初始)(2) 客SequenceNum=100111002客 Ack=499915000(以上完成三次握手)(4) 客SequenceNum=100211003客 Ack=500015001(6) = 服Ack=100311004服 SequenceNum=500015001。(RefC_p73_LAND攻击示意图) 从第三次握手开始,因为每次服务器均得到自己的应答/确认号,即1002,而非5000,而该确认号为自己上次发出的,认为有错,则重发(非超时所致),由此无限循环。由于TCP是具有高优先权的内核级进程,可中断其它的正常操作系统以获得更多的内核资源来处理进入的数据。这样,无限循环很快就会消耗完系统资源而引起大多数系统死机。TCP在此的安全缺陷还在于:在连接初始化成功之后无任何形式的认证机制。 TCP收到的数据包只要有正确的序列号就认为数据是可以接受的。一旦建立连接,就无法确定数据包源IP地址的真伪。2) 去同步攻击(Desynchronization): 复习:帧滑动窗口算法(RefF_p58_滑动窗口算法) 发送方维持三个变量:- SWS (send window size): 发送窗口大小, 能够发送未被确认的帧数目的上界,发送缓冲区。- LAR (last acknowledgment arrived): 最近收到 的应答号- LFS (last frame sent): 最近发送的帧序号。发送方维持下列不等式:LFS - LAR = SWS(RefF_p58_发送方的滑动窗口)接收方维持三个变量:- RWS (receive window size): 接收窗口大小, 能够接收无序帧数目的上界,接收缓冲区。- LAF (last acceptable frame): 最大可接收帧的序号- LFR (last frame received): 最后收到的帧序号。接收方维持下列不等式:LAF - LFR = RWS(RefF_p58_接收方的滑动窗口)复习:TCP字节滑动窗口算法与帧滑动窗口算法的不同之处: 增加流量控制功能。 滑动窗口的尺寸不固定,由接受方向发送方通知(advertise)其窗口的大小,发送方在任意给定时刻未被确认(应答)的字节数就不能超过AdvertisedWindow字段的值。接收方根据分配给连接用于缓存数据的内存数量(缓冲区buffer),为AdvertisedWindow选择一个合适的值,用于存放那些到达的错序数据以及那些按正确顺序到达但应用进程无暇读出的数据。讨论1:用滑动窗口实现可靠有序的传输 发送方:维护三个指针(序号) LastByteAcked LastByteSent LastByteWritten 显然 LastByteAcked = LastByteSent LastByteSent = LastByteWritten 接收方:维护三个指针(序号) LastByteRead NextByteExpected LastByteRcvd 存在关系 LastByteRead NextByteExpected NextByteExpected = LastByteRcvd1 (RefF_p230_TCP接收和发送缓存)讨论2:流量控制 接收方通知发送方一个不大于它能存放数据量的窗口,控制发送方的发送速度。接收方避免缓冲区溢出,其TCP必须保持LastByteRcvd LastByteRead = MaxRcvBuffer 通知窗口(缓冲区剩余空间)大小为AdvertisedWindow = MaxRcvBuffer (NextByteExpected-1) LastByteRead 发送方TCP必须保持LastByteSent LastByteAcked = AdvertisedWindow或EffectiveWindow =AdvertisedWindow (LastByteSent LastByteAcked) 发送方避免缓冲区溢出,其TCP必须保持LastByteWritten LastByteAcked = MaxSendBuffer则TCP将阻塞发送进程,不让其产生新的数据。 注:发送方周期性地发送探测数据段。去同步攻击机理:客户程序通过TCP与服务器进行通信之际,攻击者截获和重新定向客户与服务器之间的数据流,使之经过攻击者的机器,攻击者采用被动攻击,即不修改客户和服务器之间的通信数据而使客户和服务器认为它们在直接进行通信。由于攻击者可以看到序列号,他可以把伪造的数据包放到TCP数据流中去,这样攻击者可以以被欺骗客户具有的特权来访问服务器。在这种情况下,攻击者甚至不需要目标机器所需的口令,只需简单地等待客户登录到服务器,然后劫持会话数据流即可。(RefC_p74_TCP会话劫持)握手1:客户端 = 服务端SYN, CLT_SEQ (初始) 客户等待服务器应答。握手2:客户端 服务端 Attack_SEQ 握手2:真客户端 服务端 ACK= New_SVR_SEQ +1 Attack_SEQAttack_SEQ +1至此,服务器和客户端一样也处于连接状态。但由于客户和服务器之间的序列号无法一致,它们之间不能真正进行通信,各自发往对方的数据包均将被忽略。攻击过程:(1) 造成去同步状态去同步状态指双方都处于连接建立状态,但还没有数据要发送,并且SVR_SEQ != CLT_ACKCLT _SEQ != SVR _ACK此时只要没有数据发送就是稳定的。若有数据要发送,则存在两种情况:(i) 若CLT _SEQ SVR _ACK 则数据包是可以接收的,但被存储已备后用,这是因为数据流的开始部分(从序列号SVR _ACK开始)丢失了。(ii) 若CLT _SEQ SVR _ACK + SVR_WIND 或CLT _SEQ B: SYN (序列号M),SRC IP = A.2) B - A: SYN (序列号N),ACK(应答序列号M+1).由于A并没有同B启动连接,则A收到B的应答包后,会发送RST置位的包给B。攻击者事先让A无法对来自B的任何数据包进行应答。3) X - B: ACK(应答序列号N+1), SRC IP = A。在这里,X需要猜测B发给A的包里头的序列号(N+1)。若猜测成功,将获得赋予信任主机的特权。 序列号猜测:虽然B关闭了对的连接,但A仍可以响应(应答)B发出的包。攻击者可用同步Flood攻击法(下介绍)来阻止A对B的响应,然后开始猜测。1) X以另一IP同B进行连接。2) B应答。3) X记录应答包内的序列号,继续1)进行测试。随后X对记录进行分析,寻找B的序号产生模式。 一旦猜中,X就可以向主机B发送命令,B将执行认为来自于合法主机A的命令。 4) 同步Flood攻击利用实现三次握手协议所存在的漏洞进行攻击。X首先发起对A的连接,当A收到X的SYN请求时,它在侦听队列中对X的连接请求保持75秒的跟踪。由于系统资源有限,能够打开的连接有限,因此X可以同时向A发送多个SYN请求,同时对返回的不作应答,使侦听队列很快被阻塞,从而A拒绝接收其它新的连接请求,直到部分已打开的连接完成或超时。 在此攻击中,使A无法响应来自B的包,作为IP欺骗攻击的辅助手段,趁机猜测的序列号。(RefC_p79_SYN FLOODING 示意图)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!