ARP(Address Resolution Protocol,地址解析协议)

目录

为什么出现ARP?

ARP是如何解决IP地址和MAC地址的映射关系呢?

ARP报文

ARP报文格式

两种基本ARP报文

ARP缓存表

举例

免费ARP

ARP扫描

ARP攻击

ARP攻击产生的原因

ARP攻击实施

ARP攻击本质

ARP攻击类型

断网型

中间人型

DOS型

其他

防范ARP攻击

代理ARP

windows下关于ARP缓存表的命令


  • 为什么出现ARP?

    • 因为在局域网通信过程中,源设备需要使用目标设备的IP地址和MAC地址,但是通常源设备只知道目标设备的IP地址而不知道目标设备的MAC地址。ARP本质解决的就是在局域网中网络层IP地址和数据链路层MAC地址的映射关系,因为在局域网通信过程中两者缺一不可。
  • ARP是如何解决IP地址和MAC地址的映射关系呢?

    • ARP报文
      • ARP报文格式
        • ??

        • ARP报文格式的各个字段解读

          • 硬件类型(Hardware type)

            • 2个字节,指定网络中使用的硬件类型,例如Ethernet的值为1。
          • 协议类型(Protocol type)

            • 2个字节,指定网络层协议类型,例如IPv4的值为0x0800。
          • 硬件长度(Hardware length)

            • 1个字节,指定硬件地址的长度,通常为MAC地址的长度(在Ethernet中为6个字节)。
          • 协议长度(Protocol length)

            • 1个字节,指定网络层地址的长度,例如IPv4地址的长度为4个字节。
          • 操作码(Opcode)

            • 2个字节,表示ARP报文的类型,1表示请求,2表示回复。
          • 发送方硬件地址(Sender MAC address)

            • 变长,由硬件地址长度决定。表示发送方的硬件地址,即源设备的MAC地址。
          • 发送方协议地址(Sender IP address)

            • 变长,由协议地址长度决定。表示发送方的协议地址,即源设备的IP地址。
          • 目标硬件地址(Target MAC address)

            • 变长,由硬件地址长度决定。表示目标设备的硬件地址,在 ARP 请求中通常为全0,而在ARP回复中为目标设备的 MAC 地址。
          • 目标协议地址(Target IP address)

            • 变长,由协议地址长度决定。表示目标设备的协议地址,即目标设备的IP地址。
      • 两种基本ARP报文
        • ARP请求

          • 通过数据链路层的广播地址(FF:FF:FF:FF:FF:FF)发送给除了自己之外的同一个局域网的其他设备。
          • ??
        • ARP回复

          • 当设备的IP地址和ARP请求的目标IP地址一样时,发送ARP回复。
          • ??
    • ARP缓存表
      • 临时记录局域网中IP地址和MAC地址的映射关系,当然也可以手动设置IP地址和MAC地址的映射关系。

      • 什么时候临时记录呢?

        • 当收到ARP请求时(不管目标IP地址是不是自己),记录源IP地址和源MAC地址的映射关系。
        • 当收到ARP回复时,记录源IP地址和源MAC地址的映射关系。
    • 举例
      • 当需要通信的目标设备的IP地址和源设备的IP地址在同一网段时,查看ARP缓存表是否有目标设备IP地址映射的MAC地址。如果有就封装IP地址映射的MAC地址发送数据包,否则就发送目标设备IP地址的ARP请求,直到收到ARP回复后,更新ARP缓存表,根据ARP缓存表的目标设备IP地址映射的MAC地址封装数据包发送。
  • 免费ARP

    • 设备通过发送免费ARP(也可以叫ARP宣告)探测手动配置的IP地址在局域网内是否冲突,格式和ARP请求报文一致。
    • ?????????
    • ????????????????
    • 如果有人回复这个免费ARP,说明局域网中已经有设备使用了这个手动配置的IP地址。
  • ARP扫描

    • 通过发送目标设备IP地址的ARP请求,探测目标设备是否存活。因为ARP协议的重要性,基本上不会有设备会不响应ARP请求。也可以发送在同一个局域网的所有可能目标设备的IP地址的ARP请求,探测整个局域网存活的设备。
  • ARP攻击

    • ARP攻击产生的原因
      • 因为ARP没有对接收到的ARP报文进行认证的机制,而是全部信任并且加入ARP缓存表。于是就出现了利用这个ARP协议缺陷的各种ARP攻击。
    • ARP攻击实施
      • 可以利用发包工具,构造ARP请求(回复)报文,通过修改ARP请求(回复)报文字段的发送方MAC地址和发送发IP地址。实现ARP攻击。(其他ARP报文的字段也可以更改,只要不影响发送到目标设备)
    • ARP攻击本质
      • ARP攻击本质上是实现对局域网中任何设备的ARP缓存表的更改。
    • ARP攻击类型
      • 断网型
        • 欺骗目标设备的网关MAC地址为一个错误的MAC地址,造成目标设备无法访问除了本地网络的其他网络。
      • 中间人型
        • 告诉A设备,B设备的MAC地址为C设备的MAC地址;告诉B设备,A设备的MAC地址为C设备的MAC地址。而C设备有A设备和B设备的正确MAC地址。这样A设备和B设备的通信就会通过C设备这个中间人,中间人再对接收到的数据包进行转发。A设备和B设备是无感知的,都会以为对方的MAC地址就是这个。这样中间人就可以实现对A设备和B设备的通信流量进行监控和劫持,如果通信流量是明文(比如DNS报文)的话,这将是致命的。
      • DOS型
        • 通过发送大量错误或正确的ARP报文,浪费大量网络资源。可能会造成网络瘫痪等严重问题。
      • 其他
        • 欺骗局域网内所有设备,网关MAC地址为FF:FF:FF:FF:FF:FF,会造成网络资源的浪费。
        • 欺骗局域网内所有设备,网关的MAC为A设备的MAC地址。如果局域网内设备很多,可能会导致A设备遭受到DOS攻击,CPU占用过高,导致电脑无法正常使用。
    • 防范ARP攻击
      • 我们知道了ARP攻击本质上是实现对局域网中任何设备的ARP缓存表的更改。就可以通过手动配置ARP缓存表和阻止ARP攻击报文发送到目标设备或者目标设备不信任ARP攻击报文来实现对ARP攻击的防范。

        • 手动配置ARP缓存表需要消耗大量的时间和精力,但是效果最好。
        • 阻止ARP攻击报文发送到目标设备,可以通过配置交换机等网络设备实现。
        • 目标设备不信任ARP攻击报文,需要通过一些手段识别ARP报文是否为攻击报文,实现较为复杂。
  • 代理ARP

    • 以后补充
  • windows下关于ARP缓存表的命令

    • arp -a

      • 显示所有接口的ARP缓存表
    • arp -a -v

      • 显示所有接口更详细的ARP缓存表
    • arp -a x.x.x.x

      • 显示指定IP地址和MAC地址的映射关系
    • arp -a -N x.x.x.x

      • 通过接口上的IP地址显示接口上的ARP缓存表
    • arp -s x.x.x.x xx:xx:xx:xx:xx:xx

      • 手动添加IP地址和MAC地址的映射关系
    • arp -d

      • 清除所有接口的ARP缓存表
    • arp -d x.x.x.x

      • 删除指定IP地址和MAC地址的映射关系