TCP欺骗
TCP协议是基于IP协议建立的一条面向连接的、可靠的字节流。一个攻击者可以通过发送IP源地址属于另一台机器的IP数据报来实施欺骗,而那台具有该合法IP源地址的机器也在运行,攻击者并不在意是否得到这些数据报的答复,其他机器将接受这些伪造的数据报,认为他们来自报文IP源地址的合法拥有者。然后执行并不是由真正合法机器用户发出的请求。
1 TCP的端到端握手
1) TCP连接的建立
TCP的连接是三次握手,客户发送带有SYN标志的TCP头,SYN是关于初始序号的同步。TCP为连接上的发送的每个数据字节分配自己的顺序号。每个TCP头包含一个顺序号域,对应于第一个数据字节的顺序号。初始的顺序号是随机的,他的随机性时非常重要。然后服务器用一个包含SYN和ACK标志的头答复对方的SYN头。最后客户用一个带有ACK标志的TCP头响应服务器。
2) TCP数据交换
在正常的TCP数据交换中,一方发送一个或者多个TCP/IP数据报;另一方不时的发回一个TCP/IP数据报,其TCP头带有ACK标志,通知发送者发出的数据报已收到。在连接建立期间,双方还互通各自接受缓冲区的大小。TCP利用发送数据报TCP头中的窗口域传送可用的缓冲空间,告诉发送者在接受缓冲区填满之前还能发送多少数据。当接受方的程序排空接受缓冲区时,窗口域中的数目就相应的增加。确认号说明了期望接受的数据字节的最低序号。确认号加上窗口域中的数字值正好说明了接受时将放在输入缓冲区中的数据字节的最大序号。
IP数据报在到达时候可能会乱了次序。当一组数据报比期望的数据报早到达目标时,早到达的数据报讲被放到接受方的输入缓冲区,但接受方并不立即确认他。在期望的数据报到达后,接受方可以一次确认两组TCP数据。然而,此时,接受方程序应该有能力读这两组数据,而不是等待发送方的任何动作。
2 伪造的TCP/IP数据报
要想成功的伪造成一个数据报并作为现有连接的一方被接受,攻击者只需要估计合法发送者分配给下一发送数据字节的顺序号。这时只需要考虑下列三种情况:估计值正好等于下一
顺序号,估计值小于顺序号,估计值大于顺序号。
如果攻击者知道或者成功的猜出下一发送字节的精确顺序号,则攻击者就能伪造一个TCP/IP数据报,其包含的数据将被放置在接收者输入缓冲区的可用位置。如果伪造的数据保迟于合法数据报到达,其包含的数据少于合法数据报,则接受方将完全丢弃该伪造的数据报。但是,如果伪造的数据报包含的数据多于合法数据报,则接收者仅仅丢弃前面序号重叠的一部分数据,伪装数据报中顺序号大于早到合法数据报中数据的那部分数据将被接受方放在输入缓冲区中。如果伪造的数据报早于合法数据报到达,则合法数据报将会被接受方丢弃(至少部分丢弃)。
如果攻击者猜测的顺序号低于发送的下一个顺序号,伪造的TCP/IP数据报中的前面部分数据肯定不会去出放在接收者的输入缓冲区。然而,如果伪造数据报包含了足够多的数据,那么接受方将把伪造数据报的后面数据放入其输入缓冲区。
如果攻击者猜测的顺序号大于发送的下一顺序号,接受方将简单的认为这是没按顺序到达的数据,就把他放在输入缓冲区中。伪造数据报后面部分一些数据字节的顺序号也许不适应当前窗口尺寸,因此,接受方将丢弃他们。稍后,合法数据报的到达,将填补下一期望顺序
号与第一个伪装数据字节之间的空隙。
3 窥探的TCP/IP伪造
在TCP连接上获得顺序号估计值的一种途径是在客户与服务器之间的某处窥探网络.攻击者可能控制着这条途径上的不止一台机器,因此进行窥探的机器不一定就是做伪装的机器.
如果作为相同物理网络上合法发送者的机器进行伪装,则路由器没有多少机会能阻止伪造的数据报.唯一能停止伪造数据报可能的地点是伪造者所在的路由器,因为路由器或许能检测到合法发送者与伪造者硬件地址上的差异.
如果一台机器作为同一物理网络上接收者进行伪造,接受方同样有机会检测出上述地址差异.如果伪造不是发生在两个端点网络,则阻止伪造数据报的机会就会减少.然而,在多数情况下,攻击者的物理网络只能连接到只有一个合法源网络的路由器上.配置这些路由器,使他们不能转发具有不可能IP网络地址的数据报可以避免你的网络成为伪造者的攻击源.
一种特殊的情况值得特别注意.如果两个端点处于同一物理网络,攻击者足以勇敢到从另一个物理网络伪造一个数据报.由于传送数据报时只需要检查目标地址,数据报可以通过正常的
路由机制到达接收者.然而,路由器有机会检测出伪造数据报,只要注意到IP源网络地址是否匹配IP目标地址.源网络地址与目标网络地址一致的数据报不应该经过路由器,如果该路由器的网络地址与内部网络的地址相匹配的话.
4无窥探的TCP/IP伪造
由于TCP有四十亿个可能的初始顺序号,猜测一个TCP/IP连接的有效当前顺序号应该是很困难的.然而,前提是以完全随机的方式分配初始顺序号.如果攻击者与另一个TCP/IP连接的接受端建立了一个TCP/IP连接,攻击者同样可以得到来自接受端的初始顺序号.如果两个连接的初始顺序号以某种方式相关,那么攻击者将能计算出另一条连接的初始顺序号.
当攻击者获得了连接的初始顺序号后,下一步也是最后一步就是估算出发送给接收者的TCP/IP数据量.该估计值加上初始顺序号就能估计出当前顺序号.当前顺序号的估算值就可以放入伪造的TCP/IP头.
某些TCP/IP实现采用的初始顺序号是由一个简单的随机数生成器产生的.这种生成器按照某种固定的次序产生数字.如果攻击者知道这个次序,他就可以在几乎欺骗连接的同时建立一条
连接.知道连接的初始顺序号可以提供足够的信息将连接的可能顺序号缩小到很小的一部分而不是四十亿个.防治这种攻击的方法时采用能很好的生成随机初始序列顺序号的TCP/IP实现.
5 TCP/IP伪造实例
在很多的工作环境中,人们都在使用类似于X窗口系统或者微软的Windows来启动到一个或者多个分时系统的终端会话,许多窗口系统将采用基于TCP/IP协议的终端会话.能以普通权限访问分时系统的攻击者通过监控一组分时系统上的用户就可以很容易的检测出任何一个工作人员启动终端会话的时间.
一但被盯上的工作人员登录到分时系统,攻击者就能确定出用于终端会话的TCP/IP连接的初始顺序号.攻击者利用运行在网络中的另一台机器上的窥探仪或者利用初始顺序号的决策模式接受该顺序号.
下一步,攻击者对工作人员的终端会话已发往分时系统的数据字节数进行估计.一般的,工作人员此时大多健入一个用户名、口令以及一条或者两条命令。只要简单的估算出位于零到一百之间的数据字节数,攻击者将足以接近命中可接受的顺序窗口。tcp ip协议中
要真正进行破坏,攻击者只需要简单的将一串字符插入到命令提示符下健入的命令数据流重。在确信命令被作为完整命令接受后,攻击者就可以将字符插入到退出一般应用并获取新命令行的数据流中。将”rm-rf*”放到命令行中将删除当前目录下的所有文件及当前目录下所有子目录的所有文件。
6降低TCP/IP 欺骗的危险
减少这类威胁的一个途径是在终端会话变成不活跃之前简单的注销登录并且仅在需要时启动终端会话,非活动的终端会话最容易被拦截利用。
减少威胁的第二个途径是利用终端会话协议(telnet或者rlogin)的实现,将额外传输的终端协议数据嵌入到分时机器。这样虽然不能欺骗窥探仪,却可以使攻击者在用户开始输入命令之前猜测到终端协议是否只发送少量并相对固定的数据很困难。
第三种方法是使用基于加密的终端协议。加密技术的使用对于防止攻击者猜测当前顺序号没有什么帮助。如果攻击者正在使用窥探仪,则窥探仪将知道精确的当前顺序号。然而,加密的协议可以限制在连接上引入伪造数据的后果。除非加密发生故障,否则接受方虽然作为有
效数据接受了,但命令解释器将无法理解这些数据。当合法的发送者了解到伪装数据引起的混乱,他可以重置TCP/IP连接,关闭此次终端会话。
完全用当前的标准技术处理这些威胁的唯一途径是采用混合手段。初始顺序号必须是不可预测的,并完全从40多亿范围内选出。TCP/IP 的数据必须被加密,以便没有加密或者错误加密的数据不会使有效命令发生混乱。还必须忍受攻击者导致的TCP/IP连接重置的可能性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论