1. ARP协议简介

ARP,即地址解析协议,实现通过IP地址得知其物理地址。为了让报文在物理网路上传送,必须知道对方目的主机的MAC地址。这样就存在把32位的IP地址变换成48位的MAC地址的地址转换问题。

2. MAC 地址 与 IP地址

Mac地址由设备制造商定义/分配,每一个硬件设备都有一个链路层主地址(MAC地址),保存在设备的内存中。设备的mac地址不会改变(现在可以进行mac地址伪装)
IP地址由用户配置给网络接口, 网络接口的IP地址是可以发生变化的(通过DHCP获取IP,变化速度比较快)

3.ARP的工作原理

  1. 每个主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址之间的对应关系。
  2. 主机新加入网络时,会发送免费ARP报文把自己IP地址与Mac地址的关系广播给其他主机。
  3. 网络上的主机接收到免费ARP报文时,会更新自己的ARP缓冲区。将新的映射关系更新到自己的ARP表中。
  4. 某个主机需要发送报文时,首先检查 ARP 列表中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 数据包,该数据包包括的内容有:源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址等。
  5. 当本网络的所有主机收到该 ARP 数据包时:
    1)首先检查数据包中的 IP 地址是否是自己的 IP 地址,如果不是,则忽略该数据包。
    2)如果是,则首先从数据包中取出源主机的 IP 和 MAC 地址写入到 ARP 列表中,如果已经存在,则覆盖。
    3) 然后将自己的 MAC 地址写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。
  6. 源主机收到 ARP 响应包后。将目的主机的 IP 和 MAC 地址写入 ARP 列表,并利用此信息发送数据。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

4.ARP欺骗(毒化)

ARP欺骗采取的优势是通过ARP协议欺骗,达到对整个网络进行欺骗。这是在内网的中间人攻击。

*一个网络环境中有三台主机,分别为主机A、B、C。主机详细信息如下描述:
  A的地址为:AIP MAC: AMAC
  B的地址为:BIP MAC: BMAC (作为伪装的骗子主机)
  C的地址为:CIP MAC: CMAC

根据本地mac转ipjava mac地址转换成ip地址的协议_网络接口

正常情况下A和C之间进行通讯,但是此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是CIP,MAC地址是BMAC。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存,这时B就伪装成C了。(A被骗了)

同时,B同样向C发送一个ARP应答,应答包中发送方IP地址是AIP,MAC地址是BMAC,当C收到B伪造的ARP应答,也会更新本地ARP缓存,这时B就伪装成了A。(C被骗了)

这样主机A和C都被主机B欺骗,A和C之间通讯的数据都经过了B。主机B完全可以知道他们之间说的什么。
*

5.ARP毒化的预防

IP和MAC静态绑定,在网内把主机和网关都做IP和MAC绑定。 欺骗是通过ARP的动态实时的规则欺骗内网机器,所以我们把ARP全部设置为静态可以解决对内网PC的欺骗,同时在网关也要进行IP和MAC的静态绑定,这样双向绑定才比较保险。