ARP协议

概述

什么是ARP协议?

ARP(Address Resolution Protocol)即地址解析协议,用于实现从IP地址到MAC地址的映射,即查询IP地址对应的MAC地址。

为什么需要ARP协议?

在网络访问层中,同一局域网中的一台主机要和另一台主机进行通信,需要通过 MAC 地址进行定位,然后才能进行数据包的发送。

而在网络层和传输层中,计算机之间是通过 IP 地址定位目标主机,对应的数据报文只包含目标主机的 IP 地址,而没有 MAC 地址。

因此,在发送之前需要根据 IP 地址获取 MAC 地址,然后才能将数据包发送到正确的目标主机,而这个获取过程是通过 ARP 协议完成的。

ARP是哪一层协议?

基于功能来考虑,ARP是链路层协议;基于分层/包封装来考虑,ARP是网络层协议。(此方法对于ICMP协议同样管用)

ARP原理

ARP工作流程

ARP 工作流程分为两个阶段,一个是 ARP 请求过程,另一个是 ARP 响应过程。
工作流程如下所示。

在上面图片中,主机 A 的 IP 地址为 192.168.1.1,主机 B 的 IP 地址为 192.168.1.2。

  • 主机 A 以广播形式向网络中所有主机发送 ARP 请求,请求包中包含了目标 IP 地址 192.168.1.2。
  • 主机 B 接收到请求,发现自己就是主机 A 要找的主机,返回响应,响应包中包含自己的 MAC 地址。

ARP数据包

下图展示了一个请求包的详细内容:

下图是一个响应包:

ARP缓存

在请求目标主机的 MAC 地址时,每次获取目标主机 MAC 地址都需要发送一次 ARP 请求,然后根据响应获取到 MAC 地址。

为了避免重复发送 ARP 请求,每台主机都有一个 ARP 高速缓存。当主机得到 ARP 响应后,将目标主机的 IP 地址和物理地址存入本机 ARP 缓存中,并保留一定时间。

只要在这个时间范围内,下次请求 MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。

当有了 ARP 缓存以后,ARP 的工作流程如下:

  1. 主机 A 在本机 ARP 缓存中检查主机 B 的匹配 MAC 地址。

  2. 如果在 ARP 缓存中没有找到主机 B 的 IP 地址及对应的 MAC 地址,它将询问主机 B 的 MAC 地址,从而将 ARP 请求帧广播到本地网络上的所有主机。源主机 A 的 IP 地址和 MAC 地址都包括在 ARP 请求中。

  3. 本地网络上的每台主机都接收到 ARP 请求,并且检查是否与自己的 IP 地址匹配。如果主机发现请求的 IP 地址与自己的 IP 地址不匹配,它将丢弃 ARP 请求。主机 B 确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配,则将主机 A 的 IP 地址和 MAC 地址映射添加到本地 ARP 缓存中。

  4. 主机 B 将包含自身 MAC 地址的 ARP 回复消息直接发送给主机 A。

  5. 当主机 A 收到从主机 B 发来的 ARP 回复消息时,会用主机 B 的 IP 地址和 MAC 地址更新 ARP 缓存。

  6. 主机 B 的 MAC 地址一旦确定,主机 A 就能向主机 B 发送 IP 数据包。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。

我们可以使用arp -a命令查看当前主机的arp缓存信息。

ARP攻击

常见攻击类型

ARP 是一种非常不安全的协议,目前已经有很多涉及 ARP 的攻击,最主要的就是使用代理 ARP 功能假扮主机,对 ARP 请求作出应答,通过伪造 ARP 数据包来窃取合法用户的通信数据,造成影响网络传输速率和盗取用户隐私信息等严重危害。

ARP 主要攻击方式分为下面这几种

  • ARP 泛洪攻击:通过向网关发送大量 ARP 报文,导致网关无法正常响应。首先发送大量的 ARP 请求报文,然后又发送大量虚假的 ARP 响应报文,从而造成网关部分的 CPU 利用率上升难以响应正常服务请求,而且网关还会被错误的 ARP 缓存表充满导致无法更新维护正常 ARP 缓存表,消耗网络带宽资源。
  • ARP 欺骗主机攻击:ARP 欺骗主机的攻击也是 ARP 众多攻击类型中很常见的一种。攻击者通过 ARP 欺骗使得局域网内被攻击主机发送给网关的流量信息实际上都发送给攻击者。主机刷新自己的 ARP 使得在自己的ARP 缓存表中对应的 MAC 为攻击者的 MAC,这样一来其他用户要通过网关发送出去的数据流就会发往主机这里,这样就会造成用户的数据外泄。
  • 欺骗网关的攻击: 欺骗网关就是把别的主机发送给网关的数据通过欺骗网关的形式使得这些数据通过网关发送给攻击者。这种攻击目标选择的不是个人主机而是局域网的网关,这样就会攻击者源源不断的获取局域网内其他用户的数据.造成数据的泄露,同时用户电脑中病毒的概率也会提升。
  • 中间人攻击: 中间人攻击是同时欺骗局域网内的主机和网关,局域网中用户的数据和网关的数据会发给同一个攻击者,这样,用户与网关的数据就会泄露。
  • IP地址冲突攻击: 通过对局域网中的物理主机进行扫描,扫描出局域网中的物理主机的 MAC 地址,然后根据物理主机的 MAC 进行攻击,导致局域网内的主机产生 IP 地址冲突,影响用户的网络正常使用。

防护措施

当前ARP欺骗和攻击防御关键所在:如何获取到合法用户和网关的IP+MAC对应关系,并如何利用该对应关系对ARP报文进行检查,过滤掉非法ARP报文,解决客户网络受到ARP攻击的问题。主要从以下考虑:

1、静态ARP绑定
ARP表的静态数据优先级高于动态数据,因此我们直接在ARP表内绑定IP和MAC的关系不会被动态ARP响应覆盖。还是以上图交换机的原理图为例,比如AA设备手动绑定网关的IP地址和MAC地址,那么AA设备即便遭到ARP攻击,也不会出现断网的情况。虽然会收到冒充自己是网关的ARP攻击响应,但是会置之不理。同样AA设备和CC设备互相通信,双方互相绑定了AA和CC设备的IP和MAC地址,这时候BB设备即使想进行ARP欺骗,也无法实现。

2、硬件级ARP防御
上述静态ARP绑定的方式工作量太大,要想从根本上解决ARP攻击,还需要从交换机上下手。交换机原本工作在二层,只能识别数据帧,但是为了解决dhcp攻击和ARP攻击等,企业级交换机增加了解析其它上层协议的功能【当然相应的价格就贵了】。解决ARP攻击的方案是在交换机上绑定每个端口的IP(配合DHCP服务器)和MAC地址的关系。

  1. 第一次BB设备与交换机通信,交换机记录下BB设备的端口IP和MAC地址关系;
  2. 当BB设备攻击,冒充自己是CC的时候,假如想进行攻击,就需要伪造自己的MAC,那么交换机检测到MAC与原来的记录不一样就会进行拦截。假如想进行欺骗,势必需要冒充CC的IP才行,这时候交换机检测到IP与原来记录的IP不一样同样会把攻击拦截了。

参考文献

  1. https://zhuanlan.zhihu.com/p/28771785
  2. http://c.biancheng.net/view/6388.html
  3. https://www.cnblogs.com/cxuanBlog/p/14265315.html
  4. https://segmentfault.com/a/1190000022398950
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信