交换网络嗅探原理

来源:互联网 发布:加圣光的软件 编辑:程序博客网 时间:2024/04/28 01:23

交换网络嗅探原理
发信站: 饮水思源 (Mon Jan  7 10:15:27 2002) , 转信

4.4.2 交换网络嗅探原理
    如果每个主机都是通过交换机相连,那依靠一般的设置网卡混杂模式就不能嗅探到任何非本地接收的数据包了。但交换机毕竟不是为了安全考虑才设计的,它也有一定的安全“缺陷”,在一个完全由交换机连接的局域网内,同样可以进行网络嗅探,概括来说,有三种可行的办法:MAC洪水(MAC Flooding),MAC复制(MAC Duplicating),ARP欺骗,但用的最多的,还是ARP欺骗。

 1. MAC洪水
    交换机要负责建立两个节点间的“虚电路”连接,就必须维护一个交换机端口与MAC地址的映射表,这个映射表是放在交换机内存中的,但由于内存数量的有限,地址映射表可以存储的映射表项也就是有限的了。如果恶意攻击者向交换机发送大量的虚假MAC地址数据,有些交换机在应接不暇的情况下,就会降低自己的“身价”,象一台普通的Hub那样只是简单的向所有端口广播数据了,嗅探者正好借此机会来达到窃听的目的。不过,并不是所有交换机都是这样的处理方式,况且,如果交换机使用静态地址映射表,这种方法就失灵了。

 2.MAC复制
     实际上就是修改本地的MAC地址,使其与欲嗅探主机的MAC地址相同,这样,交换机将会发现,有两个端口对应相同的MAC地址,于是到该MAC地址的数据包将同时从这两个交换机端口中发送出去。这种方法与后面将要提到的ARP欺骗有本质的不同,前者是欺骗交换机,后者则是毒害主机的ARP缓存而与交换机没有关系。但是,只要简单设置交换机使用静态地址映射表,这种欺骗方式也就失效了。

 3.ARP欺骗
     按照ARP协议的设计,为了减少网络上过多的ARP数据通信,一个主机,即使收到的ARP应答并非自己请求得到的,它也会将其插入到自己的ARP缓存表中。这样,就造成了“ARP欺骗”的可能。如果黑客想探听同一网络中两台主机之间的通信(即使是通过交换机相连),他会分别给这两台主机发送一个ARP应答包,让两台主机都“误”认为对方的MAC地址是第三方的黑客所在的主机,这样,双方看似“直接”的通信连接,实际上都是通过黑客所在的主机间接进行的,黑客一方面得到了想要得到的通信内容,另一方面,只需要更改数据包中的一些信息,成功的做好转发工作即可。在这种嗅探方式中,黑客所在主机是不需要设置网卡的混杂模式的,因为通信双方的数据包在物理上都是发送给黑客所在的中转主机的。这里举个例子,假定同一个局域网内,有3台主机通过交换机相连:

A主机:IP地址为192.168.0.1,MAC地址为01:01:01:01:01:01;
B主机:IP地址为192.168.0.2,MAC地址为02:02:02:02:02:02;
C主机:IP地址为192.168.0.3,MAC地址为03:03:03:03:03:03。
B主机对A和C进行欺骗的前奏就是发送假的ARP应答包,如图4.26所示。

     在收到B主机发来的ARP应答后,A主机知道:到192.168.0.3的数据包应该发到MAC地址为020202020202的主机。而C主机也知道:到192.168.0.1的数据包也应该发到MAC地址为020202020202的主机。这样,A和C都认为对方的MAC地址是020202020202,实际上这就正中B主机的“下怀”。当然,因为ARP缓存表项是动态更新的,其中动态生成的映射有个生命期,一般是两分钟,如果再没有新的信息更新,ARP映射项会自动去除。所以,B还有一个“任务”,那就是一直连续不断的向A和C发送这种虚假的ARP响应包,让其ARP缓存中一直保存着被“毒害”了的映射表项。
    现在,如果A和C要进行通信,实际上彼此发送的数据包都会先到达B主机,这时,如果B不做进一步处理,A和C之间的通信就无法正常建立,B也就达不到“嗅探”通信内容的目的,因此,B要对“错误”收到的数据包进行一番修改,然后转发到正确的目的地,而修改的内容,无非是将目的MAC和源MAC地址进行替换。如此一来,在A和C看来,彼此发送的数据包都是直接到达对方的,但在B来看,自己担当的就是“第三者”的角色了。这种嗅探方法,也被称作“Man-In-The-Middle”的方法。如图4.27所示。
    在ARP欺骗嗅探中,一般的二层交换机,即使采用静态绑定端口和MAC地址的方法,也无法有效防御,因为实际上ARP欺骗的“受害者”并不是交换机,对于交换机来说,数据帧在链路层中的硬件地址与其MAC地址映射表中的项是正确对应的,甚至交换机根本就无法感知正在发生的“黑幕”。要解决这个问题,应该使用可以甄别第三层地址(也就是IP地址)的三层交换机,将端口、MAC地址、IP地址三者绑定在一起,这样才能防止ARP欺骗式的嗅探行为。
    上面的例子,是对局域网内的两台主机之间的通信进行嗅探,同样道理,也可以对局域网内某台主机与外部主机之间的通信进行嗅探,这时候,一方面要对内部网络中的主机进行ARP欺骗,另一方面,要对连接内外网络的网关进行欺骗,具体来说,假如还是三台主机,B是中间的监听者,A是内部网络的“受害”主机,那C就是网关对内的连接接口了。

原创粉丝点击