王明雄
摘要: 作为交换式局域网重要协议之一,地址解析协议(Address Resolution Protocol,ARP)对局域网的正常运行具有十分重要的作用。ARP 诞生之初,局域网并未得到广泛应用,ARP 设置的运行机制在现有的局域网环境下存在安全隐患。基于ARP 的原理,对ARP 存在的典型安全漏洞进行了分析,并对局域网环境中通过利用ARP 存在的漏洞进行局域网攻击的一般流程进行了介绍,提出了主机主动防御和网络安全设备防御两种典型防范方法。
关键词: 局域网 地址解析协议 媒体存取控制位址 防范
中图分类号: TP393.08;TP393.1 文献标识码: A 文章编号: 1672-3791(2023)24-0028-04
地址解析协议(Address Resolution Protocol,ARP)的主要功能是通过IP 地址获得设备媒体存取控制位址(Media Access Control Address,MAC)。作为TCP/IP协议族的中IPv4 必备的一个协议,由互联网工程任务组在1982 年制定。由于IPv4 在局域网中仍然占据主流地位,ARP 由于其协议层面固有的缺陷,导致其在局域网应用环境中极易被各类病毒和恶意软件利用,为局域网信息安全带来隐患。
1 ARP 存在的必要性
根据OSI 模型分层,把计算机网络分为七层,从上到下分别为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。其中IP 地址在网络层,MAC 在数据链路层,彼此之间并不直接交换信息。在局域网中,终端设备通过以太网发送数据时,需要在数据报中先封装第三层(IP)地址、第二层(MAC)地址的报头。但在封装数据时,彼此之间仅知道双方的第三层(IP)地址,并不知道双方的第二层(MAC)地址,导致数据封装难以进行。这就需要通过某种机制来使双方能够获取第二层(MAC)地址。ARP 正是在这种情况下被制定出来,可以通过网络层数据包头中的IP 地址信息,解析出目标终端的MAC[1],使双方可以互相交换信息,保证网络通信的顺利进行[2]。
2 ARP 工作原理
ARP 通过ARP 报文在网络中交换信息,根据ARP的工作过程,ARP 可以分为建立ARP 映射、更新ARP缓存等几个步骤。
2.1 ARP 报文格式
ARP 是通过ARP 报文在网络中交换信息的,ARP详细规定了ARP 报文的格式,具体如表1 所示。
2.1.1 硬件类型字段
2 字节,共16 位。为了扩大ARP 的使用范围,ARP报文专门设置字段用于标识物理网络类型,即数据链路层使用的协议,其中0×0001 表示以太网。
2.1.2 协议类型字段
2 字节,共16 位。ARP 可用于任何高层协议,即网络层使用的协议,其中0×0800 表示使用IP 协议。
2.1.3 硬件地址长度
1 字节,共8 位,表示源和目的硬件地址长度,单位为字节。在以太网中,该字段为0×0006。
2.1.4 协议地址长度
1 字节,共8 位,表示源和目的协议地址长度,单位为字节。在IP 协议中,该字段为0×0004。
2.1.5 操作类型字段
1 字节,共8 位,记录本次报文的操作类型。共有4种操作类型,其中0×0001 表示ARP 请求报文,0×0002 表示ARP 应答报文。
2.1.6 发送方硬件地址字段
这是一个可变长度的字段,具体长度由“硬件地址长度”规定。在以太网中,本字段填充发送端的MAC。
2.1.7 发送方协议地址字段
这是一个可变长度的字段,具体长度都由“协议地址长度”规定。在以太网中,本字段填充发送端的IP地址。
2.1.8 目标硬件地址字段
在ARP 请求报文中,该字段为空;在ARP 应答报文中,该字段为ARP 请求报文的硬件地址。
2.1.9 目标协议地址字段
在ARP 请求报文中,该字段为目标主机的协议地址;在ARP 应答报文中,该字段为ARP 请求报文的协议地址。
2.2 建立ARP 映射
假设有主机A(IP 为1.1.1.1,MAC 为11:11:11:11:11:11),需要与同一局域网中的主机B(IP 为2.2.2.2,MAC 为22:22:22:22:22:22)通信。ARP 可以將主机B的地址由IP 解析为MAC,其主要流程如下。
(1)主机A 查询其自身的路由表,确定需要通信的主机的IP 地址。由于是第一次与主机B 通信,主机A在封装数据链路层数据帧时,查询自身ARP 缓存。
(2)由于主机A 第一次和主机B 通信,会导致第一次查询ARP 缓存时无法匹配,查询失败。
(3)主机A 此时需要询问主机B 的MAC,它会构造一个ARP 请求帧广播到本地网络上的所有主机。主机A 的硬件地址、协议地址都被包括在这个请求帧中。此时网络中的每一台主机都会收到主机A 的请求帧,并通过目标协议地址字段中的IP 地址与自己的IP 地址进行比对。如果发现与自己的IP 地址不一致,主机会不做任何处理,丢弃这个ARP 请求帧。
(4)主机B 确定目标协议地址字段与自己的IP 地址一致,主机B 把主机A 的IP 和MAC 映射添加到自己的ARP 本地缓存中。
(5)主机B 将包含自身IP、MAC 的ARP 应答报文直接发送给主机B。
(6)当主机A 收到主机B 的应答报文时,会用主机B 的IP 和MAC 更新自己的ARP 本地缓存。
以上步骤建立了主机A 和主机B 的ARP 映射。当双方需要再一次通信时,只需要查询各自的ARP 本地缓存,就可以向对方发送数据,不必再经过以上步骤。
2.3 更新本地ARP 缓存
每一个运行ARP 的终端都需要在本地维护一个ARP 缓存表[2],其本质是一个用来存储IP 和MAC 的缓冲区。表中每一条记录了一个终端的IP、MAC 的记录对。当ARP 协议被询问一个终端的MAC 时,会首先查询ARP 缓存,如果命中,则直接返回对应的MAC。若不存在,则发起ARP 广播,请求在局域网内查询。
ARP 缓存可以包含动态和静态两种。静态条目一直保存在缓存表中,直到终端被重启或关机。动态条目具有一定的生存周期,且每一个条目包含一个时间戳,标记每个条目已经存在的时间。在典型情况下,新添加到缓存表中的条目2 min 内没有再使用,则该条目过期并从缓存表中被删除;如果某個条目在2 min 内再次使用,则该条目又会更新时间戳,又收到2 min 的生存周期;如果某个条目始终在使用,则该条目会收到另外2 min 的生存周期,一直到10 min 的最长生命周期。
3 ARP 存在的缺陷
由于ARP 设计之初的网络并未像今天这样普及,所以无法预料网络大规模部署后存在的缺陷。根据对ARP 的分析,ARP 主要存在认证机制、无顺序控制、老化机制判定不全等方面的缺陷。
3.1 认证机制不健全
ARP 在进行网关中继时,网关并不进行IP-MAC对应关系的正确性。在接收过程中,网关收到ARP 报文后直接转发。网关不会对源IP 地址进行校验,而是直接将新的映射关系更新到自己的缓存表中。
3.2 无顺序控制机制
ARP 报文有两种,即请求报文和响应报文。根据协议设计的正常逻辑,应当先有请求报文,然后才有响应报文。但ARP 为了保证在以太网中快速收敛,并未对两种报文的先后顺序做强制性安排。也就是ARP的响应报文和请求报文无相关性,终端在任何时候都可以向网络中广播响应报文。网络中的其他终端在接收相应报文后,根据报文的信息更新自己的ARP 缓存表。
3.3 老化机制判定不全
为了保证ARP 缓存表中映射关系的准确性,ARP对在规定时间内未更新的缓存条目进行自动删除。但ARP 在更新缓存表时,当接收到新的IP-MAC 映射关系时,终端会认为是终端更新IP,不会对ARP 报文的合法性进行校验,这给攻击者提供了可乘之机。
3.4 广播特性
ARP 的请求报文和响应报文均可以广播方式在网络中传输,所有接收的终端对广播报文中携带的新IPMAC映射关系都会进行响应,并更新自己的ARP 缓存表。从协议正常运行的需要来看,请求报文使用广播方式具有必然性,但响应报文应当仅允许通过单播进行响应。如果恶意终端利用这个特点,在网络中频繁广播ARP 响应信息,给网络正常运行造成极大的隐患。同时,协议使用广播报文非常占用带宽资源,反而使正常的网络应用受到限制,造成网络堵塞。
4 ARP 攻击原理
通过以上分析ARP 的原理可以看出,ARP 不包含任何的加密和认证措施,协议的正常运行有赖于所有主机的高度相互信任。这种协议设计使ARP 在诞生之初可以非常高效率地运行。作为提高查询效率和降低网络中发送广播数据而设计的缓存表,由于其更新收到更新周期的限制,只保存最近使用的ARP 缓存表。这使得攻击者有了可乘之机,可以在ARP 缓存表更新之前修改地址转换表,实现攻击[3]。
4.1 中间人攻击
在ARP 中,网络中所有主机对收到的广播ARP 请求报文并不进行真实性检测。当局域网中恶意主机利用ARP 缺陷进行攻击时,其一般会构造一个虚假的ARP 报文,其中的发送方IP 地址字段会填入被攻击对象IP 地址,但发送方硬件地址字段会被填入发送方真实地址,并把构造的共计报文广播到网络中。这样,网络中所有的主机都会收到这个广播报文,并更新各自的ARP 缓存表,此时网络中所有被攻击主机的IP 地址所对应的MAC 都会被更新为攻击者的MAC,所有局域网内主机向被攻击主机发送的信息,在信息被封装后都会通过第二层发送到攻击主机[4]。攻击主机收到数据后,可以先拆封保存后再重构数据报并发送给被攻击主机,达到偷听的效果[5]。攻击主机也可以将信息篡改后再发给被攻击主机,实现欺骗。如果攻击主机将自身伪造成为网关MAC地址,则会造成网络断网的风险。
恶意攻击者实现中间人攻击的目的后,还可以通过脚本工具窃听用户的HTTP 协议,甚至可以篡改HTTP 协议的内容,例如:加入恶意的脚本信息、篡改正常链接至下载木马病毒等,实现病毒在局域网内的广泛传播,造成很大危害。
4.2 泛洪攻击
泛洪是交换机和网桥的一种数据转发策略,即设备把一个接口接收的数据,从设备除接收数据接口外的所有接口转发出去。泛洪对于广播网络来说,可以在较短的时间内将网络的信息传输到所有终端,是一种数据转发的有效策略,但如果被恶意攻击者利用,会形成对网络带宽的非正常使用,造成网络堵塞。在ARP 中,当恶意终端的攻击目标为终端时,一般会每秒发送1 000 个以上的ARP 响应报文[6],这些报文的相应字段均由恶意程序的指纹库随机生成,如果被攻击终端没有做相应的防护措施,则这些伪造的IPMAC映射条目都会被写入终端的ARP 缓存表中,只需要十几秒,被攻击终端的ARP 缓存表就会被填满并造成溢出。其他合法的IP-MAC 映射条目就一直无法写到ARP 缓存表中,而造成被攻击主机网络中断。
网络中的二层交换机运行ARP 时,通过交换机中的内容可寻址存储器(Content Addressable Memory,CAM)存储端口和MAC 的映射关系,交换机中的CAM一般为8 kB,可以存储4 096 个主机的MAC。当交换机转发数据时,首先查询CAM 中的条目,如果命中,则通过对应的端口转发出去;如果未命中,则通过泛洪的方式从所有端口广播出去。当网络中的恶意终端攻击二层交换机时,通过与攻击终端相似的方式,伪造大量未知MAC 地址的请求报文进行广播,二层交换机不断地学习并更新CAM 表,CAM 表很快就被填满。正常的终端CAM 条目在经过老化时间后就再也无法进入CAM 表,使后续所有数据传输都变成广播方式,网络数据传输效率会变低甚至阻塞。
5 局域网中的防范措施
从以上分析可以看出,ARP 攻击的成功实现,必须要在被攻击主机、网络传输设备被欺骗或攻击的情况下才可以实现。因此,局域网中的ARP 共计防范主要有以下两个措施。
5.1 用户主机主动防御
目前,市场主流的杀毒软件均有ARP 防御功能,ARP 防御可以主动识别网络中虚假的ARP 广播信息,阻止用户主机对虚假ARP广播信息的应答并阻止修改自身ARP缓存表[7]。针对伪造网关类型的攻击,可以通过操作系统提供的命令,配置静态ARP条目,将网关的IP 和MAC 映射静态写入缓存表中,阻止攻击主机伪造报文更新网关MAC地址条目,为主机提供有效保障。
5.2 网络传输设备防御
对于接入层设备,可以对接入设备的主机进行主机的IP 和MAC 地址绑定,过滤伪造报文。对于三层及以上核心交换设备,可以对网关进行绑定,防止网关欺骗。同时,采取ARP 广播报文数量限制策略,防御ARP 泛洪攻击[8]。使用虚拟局域网技术,将各主机划分在不同的虚拟局域网中,实现快速缩小攻击范围和查找攻击源的目的。
6 结语
在当前IPv4 还在局域网中大量使用的情况下,ARP 攻击防范是一个始终难以绕开的工作。只要做好终端自身的防护,安装必要的防护软件,就可以避免被局域网中的恶意攻击主机欺骗。若要一劳永逸地解决这个问题,需要将局域网升级到IPv6,其采用的邻居发现协议(Neighbor Discovery Protocol,NDP)整合了IPv4的ARP、ICMP 等协议,并对协议进行了改进,將地址解析工作放到第三层中进行,可以采用第三层标准的网络安全认证机制来预防ARP 欺骗和攻击。
基金项目: 西藏职业技术学院 2023 年度校级科研创新团队(项目编号:2023KYCXTD02)。
参考文献
[1] 冯一飞. 基于FPGA 的超低延迟量化金融计算平台研究与实现[D]. 无锡:江南大学,2022.
[2] 宋宇,李治霖,程超. 基于CNN-BILSTM 的工业控制系统ARP 攻击入侵检测方法[J]. 计算机应用研究,2020,37(S2):242-244.
[3] 汪永生.ARP 攻击原理与防御措施[J]. 数字技术与应用,2020,38(2):181-182.
[4] 黄金金,陈晶,张鲲,等. 基于计算机网络安全防ARP攻击的研究综述[J]. 电脑编程技巧与维护,2018(10):157-158,164.
[5] 李海波. 基于ARP 欺骗的校园网攻击与防御[J]. 中国信息化,2022(8):75-76.
[6] 林晨钰,陈俊.ARP 协议分析及攻防技术研究[J]. 襄阳职业技术学院学报,2023,22(3):104-109.
[7] 黄兆麒. 计算机网络中的APR 攻击防御技术研究[J]. 中国新通信,2017,19(19):57.
[8] 王金亭,朱清华,赵炜斌.ARP 攻击与防护演练在局域网中的实践[J]. 广播电视网络,2022,29(6):59-61.