首页 百科知识 网络层问题

网络层问题

时间:2022-10-13 百科知识 版权反馈
【摘要】:网络层的主要功能是将分组从源计算机路由到目标计算机中。为了让报文在物理网络上传送,必须知道对方目的主机的物理地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。ARP的最大问题是它的无状态性。很自然的,操作系统在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。通过设定特定的ICMP包、导致主机系统网络崩溃的攻击,这里称之为“死亡之ping”。

3.3.1 网络层问题

1.IP路由欺骗

网络层的主要功能是将分组从源计算机路由到目标计算机中。在大多数子网中,分组需要经过多跳(hop)才能到达目的地,因此路径选择成为分组能否顺利到达的关键。路由协议就是负责确定一个进来的分组应该被传送到哪一条输出线路上。如果子网内部使用了数据报,那么路由器必须针对每一个到达的数据分组重新选择路径,因为从上一次选择了路径之后,最佳的路径可能已经改变了。路由信息的交换主要分为:

①自治系统要通过系统内一个授权的非核心网关向所属核心网关报告本地路由信息,核心网关也要通过它报告主干网路由信息。这些信息通过外部网关协议(External Gateway Protocol,EGP)交换。

②核心网关之间相互交换路由信息,通过核心网关协议(Gateway-Gateway Protocol,GGP)实现。

③自治系统是独立的,其内部可采用自己的路由协议,即内部网关协议(Internal Gateway Protocol,IGP)。

IP报文首部的可选项中有“源站选路”,可以指定到达目的站点的路由。正常情况下,目的主机如果有应答或其他信息返回源站,就可以直接将该路由反向运用作为应答的回复路径。

IP路由欺骗过程如图3-10所示。

img65

图3-10 IP路由欺骗过程

(1)攻击条件

·主机A(假设IP地址是192.168.100.11)是主机B的被信任主机;

·主机X想冒充主机A从主机B(假设IP为192.168.100.1)获得某些服务。

(2)攻击过程

·攻击者修改距离X最近的路由器G2,使得到达此路由器且包含目的地址192.168.100.1的数据包以主机X所在的网络为目的地;

·攻击者X利用IP欺骗(把数据包的源地址改为192.168.100.11)向主机B发送带有源路由选项(指定最近的路由器G2)的数据包。当B回送数据包时,按收到数据包的源路由选项反转使用源路由,就传送到被更改过的路由器G2。由于G2路由表已被修改,收到B的数据包时,G2根据路由表把数据包发送到X所在网络,X可在其局域网内较方便地进行侦听,收取此数据包。

IP源路由欺骗防范措施如下:

·关闭源路由选项功能;

·路由器配置参数的监控;

·防火墙的过滤措施。

2.ARP欺骗

ARP,即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网络上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。地址解析协议(ARP)用于IP地址到物理地址的映射。逆向地址解析协议(Reverse Address Resolution Protocol,RARP)用于物理地址到IP地址的映射。

当IP需要把一个目的IP地址转换为一个硬件接口地址时,它就发送一个ARP请求,然后请求被广播到本地网络内的每一台计算机。当具有此IP地址的计算机看到这个请求包,它就发送一个应答(它无须再广播应答包,因为它可以从请求包当中获得硬件和IP地址),在应答中给出其硬件地址。这样发送请求的计算机就可以提取硬件地址,并且在缓存中保存这个地址,以备后用。现在,IP层可以以适当的源和目的MAC地址构造整个以太网帧。ARP协议过程如图3-11所示。

img66

图3-11 MAC查询

ARP的最大问题是它的无状态性。也就是说,侦听响应的进程同发送请求的进程之间没有什么关系。如果计算机收到一个ARP响应,那么我们是无法知道是否真的发送过对应的ARP请求的。假想这样一种情形:你的计算机收到了一个虚假ARP响应,其中包含了网络中另外一台计算机的硬件地址对路由器IP地址的映射,这样,你的计算机的ARP缓存将被更新。这种技术称为ARP欺骗。那么所有发往路由器的包都将送往另外的计算机。如果这一台计算机不怀好意,它可以对数据包进行分析,然后发往真正的路由器,但你对此还毫不知情。

ARP欺骗防范措施如下:

·认证:确保线路上已授权的计算机使用自身的MAC地址,现在很多交换机可以配置MAC地址和端口的映射。

·检测:利用检测此类攻击的工具,例如ARPWatch,监视局域网内所有MAC地址和IP地址的映射对,一旦有改变将产生告警或日志。

3.Smurf

如图3-12所示,攻击者将一个目的地址设置成广播地址(以太网地址为FF:FF:FF:FF:FF:FF:FF)后,将会被网络中所有主机接收并处理。显然,如果攻击者假冒目标主机的地址发出广播信息,则所有主机都会向目标主机回复一个应答使目标主机淹没在大量信息中,无法提供新的服务。这个攻击就是利用广播地址的这一特点将攻击放大而实施的拒绝服务攻击。

img67

图3-12 Smurf攻击

4.死亡之ping

最简单的基于IP的攻击可能要数著名的死亡之ping(ping of death),这种攻击主要是由于单个包的长度超过了IP协议规范所规定的包长度。产生这样的包很容易,事实上,许多操作系统都提供了称为ping的网络工具。在Windows 98中,开一个DOS窗口,输入ping-l 65510the.target.ip.addr就可达到该目的。UNIX系统也有类似情况。

早期的路由器对所通过的数据包有最大尺寸的限制,所以许多操作系统对TCP/IP栈的实现也有相应的限制,比如规定ICMP包长度限制为64KB。很自然的,操作系统在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当接收到规格与该要求不一致的数据包时,比如出现声称自己的尺寸超过ICMP上限的数据包的情况,操作系统内存分配可能出现异常,从而导致系统协议栈崩溃或最终系统死机。通过设定特定的ICMP包、导致主机系统网络崩溃的攻击,这里称之为“死亡之ping”。

由于使用ping工具很容易完成这种攻击,以至于它也成了这种攻击的首选武器,这也是这种攻击名字的由来。当然,还有很多程序都可以做到这一点,因此仅仅阻塞ping的使用并不能够完全解决这个漏洞

预防死亡之ping的最好方法是对操作系统打补丁,这样,内核将不再对超过规定长度的包进行重组。

5.Teardrop

链路层具有最大传输单元(MTU)这个特性,MTU特性要求IP协议栈能够处理IP数据的分片与重组。IP分片数据中偏移量和长度用来指示当前分片在原数据包中的位置和自身长度。对于人为设计的偏移量、长度有矛盾的数据包的重组处理,可能导致操作系统出现异常,利用操作系统这种缺陷实施的攻击称为IP包碎片攻击。Teardrop是典型的IP包碎片攻击。

攻击者可以通过发送两段(或者更多)数据包来实现Teardrop攻击:第一个包的偏移量为0,长度为N;第二个包的偏移量小于N,而且算上第二片IP包的数据部分,也未超过第一片的尾部。这样就出现了重叠现象(overlap)。为了合并这些数据段,有的系统(如Linux 2.0内核)的TCP/IP栈会计算出负数值(对应取值很大的无符号数),将分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至计算机的重新启动。Windows NT/95在接收到10~50个Teardrop分片时也会崩溃。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈