MAC地址欺骗原理
如图所示,两个用户PcA和PcB分别连接Cisco2912的portA和portB两个端口。
PortC 00.00.CC.CC.CC.CC Internet
|
|
Cisco2912
portA / \portB
/ \
Hub Hub
| |
PcA PcB
00.00.AA.AA.AA.AA 00.00.BB.BB.BB.BB
假定PcA的MAC的地址是00.00.AA.AA.AA.AA,PcB的MAC的地址是00.00.BB.BB.BB.BB。
在正常的情况下,Cisco2912里会保存如下的一对映射关系:
(00.00.AA.AA.AA.AA)<—>portA
(00.00.BB.BB.BB.BB)<—>portB
(00.00.CC.CC.CC.CC)<—>portC
依据这个映射关系,Cisco2912把从PortC上收到的发给PcA的包通过PortA发出,而不会从PortB发出。但是如果我们通过某种手段使交换机改变了这个映射关系,则Cisco2912就会将数据包转发到不应该去的端口,导致用户无法正常访问Internet等服务。
最为简单的一种方法就是用户PcB构造一种数据包,该包的源MAC地址不再是自己的MAC地址00.00.BB.BB.BB.BB,而是PcA的MAC地址00.00.AA.AA.AA.AA,从上面的地址学习过程可以看出,Cisco2912就会错误的认为MAC地址00.00.AA.AA.AA.AA是从portB上来的,因此映射关系也就改为:
(00.00.AA.AA.AA.AA)<—>portB
(00.00.BB.BB.BB.BB) <—>portB
这样,Cisco2912就会错误地把从PortC上收到的目的地址为MAC A的数据包通过PortB发出,而不再发给PortA.。显然,如果PcB一直在发这种特意构造的包。用户PcA就无法通过Cisco2912正常访问Internet。更为严重的是,如果用户PcB构造portC上联设备(如路由器)的MAC地址(00.00.CC.CC.CC.CC),则会导致Cisco 2912下面所有的用户无法正常访问Internet等业务。