ARP(Address Resolution Protocol),即地址解析协议。可以根据IP地址获取到MAC地址,属于TCP/IP数据链路层。
一个网络设备要发送给另一个网络设备时,必须要知道对方的IP地址。但是,IP数据报文必须要封装成帧才能通过数据链路层进行发送,而数据帧必须要包含目的MAC地址,因此发送端必须要获取到目的MAC。
主机A首次发送数据包给主机C时,主机A会发送ARP Request来获取主机C的MAC地址。由于主机A不知道主机C的MAC地址,所以目的MAC地址为FF-FF-FF-FF-FF(此过程即为广播)。ARP Request会在整个网络中传播,该网络中的所有主机包括网关都会收到此报文。
所有主机收到该ARP Request报文后,会检查目的IP是否与自身IP相匹配,如果不匹配,则丢弃此报文。如果匹配,则将ARP报文中的源MAC地址和源IP地址记录到自己的ARP缓存中,并通过ARP Reply报文进行响应。
如图中,主机B通过伪造ARP Reply响应包,将自己的MAC和和主机C的IP地址作为响应包发送给主机A,伪装成主机C。自此,主机A发送给主机C的数据包都会被主机B截获。
kali–10.0.0.200(攻击机),win10–10.0.0.201(靶机),网关10.0.0.2
arpspoof
wireshark
/proc/sys/net/ipv4/ip_forward是Linux系统的数据包转发配置文件,为了安全考虑,默认是禁止的。
echo 1 >/proc/sys/net/ipv4/ip_forward
root@kali:~# arpspoof -t 10.0.0.201 10.0.0.2
root@kali:~# wireshark
ARP欺骗本质是利用了ARP协议自身的缺陷,只要能防止主机伪造IP对应的MAC地址即可防御。
所以,从以下两点进行:
安装防病毒软件,保证病毒库的及时更新。
在交换机或启用ARP代理的路由器上设置IP地址与MAC地址绑定。如果接入层交换机有ARP检查功能的话,一定要启用该功能。