论坛: 菜鸟乐园 标题: ip欺骗(Evangelion) 复制本贴地址    
作者: Evangelion [evangelion]    论坛用户   登录
IP协议依据IP头中的目的地址项来发送IP数据包。如果目的地址是本地网络内的地址,该IP包就被直接发送到目的地。如果目的地址不在本地网络内,该IP包就会被发送到网关,再由网关决定将其发送到何处。这是IP路由IP包的方法。我们发现IP路由IP包时对IP头中提供的IP源地址不做任何检查,并且认为IP头中的IP源地址即为发送该包的机器的IP地址。当接收到该包的目的主机要与源主机进行通讯时,它以接收到的IP包的IP头中IP源地址作为其发送的IP包的目的地址,来与源主机进行数据通讯。IP的这种数据通讯方式虽然非常简单和高效,但它同时也是IP的一个安全隐患,很多网络安全事故都是因为IP这个的缺点而引发的。 

IP的这一安全隐患常常会使TCP/IP网络遭受两类攻击。最常见的一类是DOS(Denial-of-Service)攻击,即服务拒绝攻击。DOS攻击是指攻击者通过网络向被攻击主机发送特定的数据包,而使被攻击主机陷于不能继续提供网络服务的状态。以TCP-SYN FLOODING攻击为例,攻击者向被攻击主机发送许多TCP- SYN包。这些TCP-SYN包的源地址并不是攻击者所在主机的IP地址,而是攻击者自己填入的IP地址。当被攻击主机接收到攻击者发送来的TCP-SYN包后,会为一个TCP连接分配一定的资源,并且会以接收到的数据包中的源地址(即攻击者自己伪造的IP地址)为目的地址向目的主机发送TCP-(SYN+ACK)应答包。由于攻击者自己伪造的IP地址一定是精心选择的不存在的地址,所以被攻击主机永远也不可能收到它发送出去的TCP-(SYN+ACK)包的应答包,因而被攻击主机的TCP状态机会处于等待状态。如果被攻击主机的TCP状态机有超时控制的话,直到超时,为该连接分配的资源才会被回收。因此如果攻击者向被攻击主机发送足够多的TCP-SYN包,并且足够快,被攻击主机的TCP模块肯定会因为无法为新的TCP连接分配到系统资源而处于服务拒绝状态。并且即使被攻击主机所在网络的管理员监听到了攻击者的数据包也无法依据IP头的源地址信息判定攻击者是谁。不单是TCP-SYN FLOODING攻击者在实施攻击时自己填入伪造的IP源地址,实际上每一个攻击者都会利用IP不检验IP头源地址的特点,自己填入伪造的IP源地址来进行攻击,以保护自己不被发现。 

IP的不进行源地址检验常常会使TCP/IP网络遭受另一类最常见的攻击是劫持攻击。即攻击者通过攻击被攻击主机获得某些特权。这种攻击只对基于源地址认证的主机奏效,基于源地址认证是指以IP地址作为安全权限分配的依据。以防火墙为例,一些网络的防火墙只允许本网络信任的网络的IP数据包通过。但是由于IP不检测IP数据包中的IP源地址是否是发送该包的源主机的真实地址,攻击者仍可以采用IP源地址欺骗的方法来绕过这种防火墙。另外有一些以IP地址作为安全权限分配的依据的网络应用,很容易被攻击者使用IP源地址欺骗的方法获得特权,从而给被攻击者造成严重的损失。 

解决方法:这一IP本身的缺陷造成的安全隐患目前是无法从根本上消除的。我们只能采取一些弥补措施来使其造成的危害减少到最小的程度。防御这种攻击的最理想的方法是:每一个连接局域网的网关或路由器在决定是否允许外部的IP数据包进入局域网之前,先对来自外部的IP数据包进行检验。如果该IP包的IP源地址是其要进入的局域网内的IP地址,该IP包就被网关或路由器拒绝,不允许进入该局域网。这种方法虽然能够很好的解决问题,但是考虑到一些以太网卡接收它们自己发出的数据包,并且在实际应用中局域网与局域网之间也常常需要有相互的信任关系以共享资源,这种方案不具备较好的实际价值。另外一种防御这种攻击的较为理想的方法是当IP数据包出局域网时检验其IP源地址。即每一个连接局域网的网关或路由器在决定是否允许本局域网内部的IP数据包发出局域网之前,先对来自该IP数据包的IP源地址进行检验。如果该IP包的IP源地址不是其所在局域网内部的IP地址,该IP包就被网关或路由器拒绝,不允许该包离开局域网。这样一来,攻击者至少需要使用其所在局域网内的IP地址才能通过连接该局域网的网关或路由器。如果攻击者要进行攻击,根据其发出的IP数据包的IP源地址就会很容易找到谁实施了攻击。因此建议每一个ISP或局域网的网关路由器都对出去的IP数据包进行IP源地址的检验和过滤。如果每一个网关路由器都做到了这一点,IP源地址欺骗将基本上无法奏效。在当前并不是每一网关及路由器都能做到这一点的情况下,网络系统员只能将自己管理的网络至于尽可能严密的监视之下,以防备可能到来的攻击。 

重组IP分段包超长及其解决方法 

国际互联网是由许许多多的网络连接在一起而构成的。这些相互连接在一起的网络往往拥有不同的最大传输单元(MTU)。为了使IP数据包能够在MTU不同的网络之间无差错传递,IP提供了对IP数据包进行分段和重组的功能。即为了将IP数据包发往MTU较小的网络,IP以目的网络的MTU为IP包的最大包长,将本地生成的较大的IP数据包分成若干个分段,发往目的主机。当这些IP分段数据包到达目的主机的IP时,目的主机的IP发现到来的IP数据包不是一个完整的数据包,就会将这些IP数据包先缓冲起来,一旦这些IP数据包全部到齐,IP就将这些IP数据包组合成一个完整的IP数据包,交给上层协议处理。IP头的标识域(Identification field )、协议域(Protocol field)、源地址域(Source addreee field)、目的地址域(destination address field)这四个域可用来唯一标识同属于一个完整的IP数据包的所有IP分段数据包。IP头中的标志域(Flag field)的DF位表示是否允许分段,MF位表示该IP数据包是否是一个IP分段数据包。IP头的分段偏移域(Fragment offset field)表示该分段在完整IP包中的位置。IP就是根据这六个域来对IP数据包进行分段和重新组合的。重新组合的过程是将所有标志域的MF位为1的同属于一个完整IP包的IP分段合并成一个IP包,直收到最后一个MF位为0的IP分段。重新组合而成的IP数据包长度由各个IP分段的数据长度累加而成。IP头中的数据包长度域只有16位,这就限制了IP包的长度最大为65535。如果到来的IP分段的累加长度大于65535,而IP又没有进行检查,IP会因溢出而处于崩溃或不能继续提供服务的状态。通常情况下不会出现这种情况,但是常常有攻击者利用这样的隐患发动攻击,很多网络操作系统都有这种隐患。著名的Ping攻击就是利用这一安全隐患进行攻击的。Ping是一个用来诊断网络状况的常用诊断程序,它实际上是依据互联网控制报文协议,通过向目的主机发送类型为请求响应(ECHO_REQUEST)的ICMP包,如果目的主机的ICMP模块接收到该包,会向源主机发回一个类型为响应回答(ECHO_RESPONSE)的ICMP包。如果在规定的时间内ICMP响应回答包没有返回,ping就超时显示目的地址不可到达。Ping攻击也是向被攻击主机发送请求响应包,但是请求响应包是由攻击者手工生成的一系列IP分段数据包构成,并且这一系列IP分段数据包的累加和大于65535。其目的是造成目的主机的IP对这些IP分段数据包进行重新组合,使其面对如何处理长度大于65535的IP包这一不正常情况。 

解决方法:重组IP数据分段时,要加入对大于65535的IP包的判断和处理。如果发现已经收到的IP分段数据包的累计长度已经大于65535,则将已经收到的IP分段数据包全部丢弃,并且释放它们所占的资源。 


地主 发表时间: 11/04 22:03

回复: liuwen_wp [liuwen_wp]   论坛用户   登录
朋友你教得是真仔细,但我看到那些英文字母我的头就发晕了,如果才能让我能看懂软件名指的是什么意思呢?

B1层 发表时间: 11/05 06:34

回复: nothing [eson]   论坛用户   登录
evangelion兄和”好好先生“一样都是好人一个。
you set a good example for us..


B2层 发表时间: 11/05 10:39

论坛: 菜鸟乐园

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号