生成 ARP 缓存表的过程
网关
IP:192.168.0.1
MAC:c0-a5-dd-2d-85-6c
攻击主机 A:
IP:192.168.0.106
MAC:00:0c:29:fc:9b:bc
目标主机 B:
IP:192.168.0.107
MAC:70:1c:e7:91:29:4a
目标主机 C:
IP:192.168.0.112
MAC:88:d7:f6:2b:3c:5b
在 攻击主机 A 里面执行命令 arp 命令,查看到主机 A 路由表里面只有路由器的 IP 地址和 MAC 地址
在 攻击主机 B 里面执行命令 arp 命令,查看到主机 B 路由表里面只有路由器的 IP 地址和 MAC 地址
攻击主机 A ping 目标主机 B ,并且打开 wireshark 进行抓包,观察数据包的流动发现,由于主机 A 中的 ARP 缓存表中没有 192.168.0.107 (主机B)这个主机的物理地址映射。所以主机 A 首先发起了一个一个广播数据包,内容为 "who has 192.168.0.107? tell 192.168.0.106"。随后主机 A 得到了响应,内容为 "192.168.0.107 is at 70:1c:e7:91:29:4a" 。
接下来就是进行 ping 操作的数据包了,说明了主机 A 是先使用 ARP 获取到了对方的 MAC 地址才开始与主机 B 进行通信的。
最后是主机 B 直接询问发起 ARP 询问的主机 A ,内容为 "who has 192.168.0.106? tell 192.168.0.107",主机 A 也给出了正确的回应,并给出了自己的 MAC 地址。
此时主机 A 和 B 的 ARP 缓存表中就分别有了对方的 IP 与 MAC地址映射记录
主机 B 的 ARP 缓存表
主机 A 的 ARP 缓存表
ARP 欺骗局域网内某主机
网关
IP:192.168.0.1
MAC:c0-a5-dd-2d-85-6c
攻击主机 A:
IP:192.168.0.106
MAC:00:0c:29:fc:9b:bc
目标主机 B:
IP:192.168.0.104
MAC:00:0C:29:F2:F1:3A
目标主机 C:
IP:192.168.0.112
MAC:88:d7:f6:2b:3c:5b
攻击主机 A 在 kali 下执行命令 arpspoof -i eth0 -t 192.168.0.104 192.168.0.112,并打开 wireshark 进行抓包,可以看到攻击主机 A 以它的 MAC 发送给 目标主机 B 的 MAC 地址下,告诉目标主机 B ,IP地址为192.168.0.112(目标主机 C)的 MAC 地址为 00:0c:29:fc:9b:bc (攻击主机A)
此时 目标主机 B 执行命令 ping 192.168.0.112,去要求和目标主机 C 通信。但是因为 MAC 地址的欺骗,目标主机 B 要发给 目标主机 C 的数据包,默认会发给攻击主机 A ,但是攻击主机 A 并没有将截获的数据包进行正确的转发。所以目标主机 B 显示,请求超时
攻击主机 A 的 wireshark 显示,没有回应发现
ARP 欺骗网关
网关
IP:192.168.0.1
MAC:c0-a5-dd-2d-85-6c
攻击主机 A:
IP:192.168.0.106
MAC:00:0c:29:fc:9b:bc
目标主机 B:
IP:192.168.0.112
MAC:88:d7:f6:2b:3c:5b
在目标主机 B 上执行命令 arp -a 查看网关的 MAC 地址
在攻击主机 kali A 上执行命令:arpspoof -i eth0 -t 192.168.0.112 192.168.0.1。攻击主机 A 不停的发送 192.168.0.1 (网关)的 MAC 地址是:00:0c:29:fc:9b:bc(攻击主机 A 的 MAC 地址)给目标主机 B
目标主机 B 执行命令 arp -a ,可以看到本机 arp 缓存表,网关的 IP 地址已经和攻击主机 A 的 MAC 地址达成映射关系。
目标主机 B 访问 www.baidu.com ,但是因为 MAC 地址的欺骗,目标主机 B 要发给 www.baidu.com 的数据包,默认会发给攻击主机 A ,但是攻击主机 A 并没有将截获的数据包进行正确的转发。所以目标主机 B 显示,无法访问此网站,www.baidu.com 的响应时间过长。
当攻击主机 A 断开 arp 欺骗攻击包的发送时,目标主机 B 可以正确上网
ARP欺骗攻击防御方法
网关
IP:192.168.0.1
MAC:c0-a5-dd-2d-85-6c
攻击主机 A:
IP:192.168.0.106
MAC:00:0c:29:fc:9b:bc
目标主机 B:
IP:192.168.0.104
MAC:00:0C:29:F2:F1:3A
目标主机 C:
IP:192.168.0.112
MAC:88:d7:f6:2b:3c:5b
目标主机 B 执行 arp -a 命令 查看 目标主机 C 的 IP 地址和 MAC 地址对应表
目标主机 B 将 目标主机 C 的 IP 地址和 MAC 地址对应关系,设置为静态绑定,执行命令 arp -s 192.168.0.112 88-d7-f6-2b-3c-5b,然后再次查看 目标主机 C 的 IP 地址和 MAC 地址对应表,发现已经 目标主机 C 的 ARP 记录已经由动态变成了静态。
同样攻击主机 A 在 kali 下执行命令 arpspoof -i eth0 -t 192.168.0.104 192.168.0.112,并打开 wireshark 进行抓包,可以看到攻击主机 A 以它的 MAC 发送给 目标主机 B 的 MAC 地址下,告诉目标主机 B ,IP地址为192.168.0.112(目标主机 C)的 MAC 地址为 00:0c:29:fc:9b:bc (攻击主机A)
此时 目标主机 B 执行命令 ping 192.168.0.112,去要求和目标主机 C 通信。但是因为目标主机 C 的 IP 和 MAC 地址对应关系已经在目标主机 B 中设置为静态,所以这次的 ARP 欺骗并不会影响 目标主机 B 和 目标主机 C 的通信。
但是这种绑定方法也只限定于一次性的绑定,当电脑重启后静态绑定就会失效,重启后目标主机 B 再次执行 arp -a ,发现绑定的静态 IP 和 MAC 的关系又变为动态。