局域网内ARP攻击的模拟及检测防御方法

2018-02-02 05:45程锐陈中举杜友福
电脑知识与技术 2018年1期

程锐+陈中举+杜友福

摘要:工作在TCP/IP协议族中网络层的ARP(Address Resolution Protocol)协议是一个把网络层使用的32位的IP地址解析成数据链路层使用的48位的MAC地址的协议。该协议在设计的时候没有考虑必要的身份认证和鉴别机制,导致这一漏洞经常被黑客利用,对局域网的安全有效运作产生巨大威胁。使用Java网络和多线程编程模拟了局域网内的ARP攻击,实现了ARP攻击的检测,介绍了几种ARP攻击的防范方法。

关键词:ARP协议;ARP欺骗;攻击检测;攻击防范

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)01-0059-02

Abstract: The Address Resolution Protocol (ARP), which works at the network layer of the TCP / IP protocol suite, is a protocol that resolves a 32-bit IP address used by the network layer into a 48-bit MAC address used by the data link layer. The lack of essential authentication and identification mechanisms of its design generating its vulnerability which is often exploited by hackers, leading to a great threat to the safe and effective operation of the LAN.using Java network and multi-threaded programming to simulate the LAN ARP attacks, implements the detections of ARP attacks, and introduce several methods to prevent ARP attacks.

Key words:ARP protocol; ARP cheat; attack detection; attack prevention

1 概述

互联网的快速发展,让网络安全备受重视。在诸多网络安全隐患中,ARP攻击可谓是大名鼎鼎。ARP攻击的危害性很大,黑客们可以利用ARP攻击实现DoS攻击或中间人攻击,造成网络通信中断或数据被截取甚至是篡改,严重影响网络的安全。目前利用ARP进行攻击的木马病毒在局域网中广泛传播,给网络安全运行带来巨大隐患,是局域网安全的首要威胁[1]。

2 ARP协议概述

ARP协议工作在网络层,它的作用就是要把网络层使用的IP地址解析成数据链路层使用的硬件地址。以太网上的每一个设备都维持着一张最近IP地址到MAC地址的映射表,也叫ARP高速缓存[2]。

当以太网上的一个网络设备要和另一个设备进行通信时,会先查看自己的ARP缓存里是否存在目的IP地址和某个MAC地址的映射,如果有,就使用该条记录,否则,该设备就会通过ARP协议来获得目的MAC地址。其过程是:该设备会广播ARP请求分组,局域网内的每一个设备都会接收到该ARP请求报文。当一个设备接收到一个ARP请求报文时,它的做法是:1)先取出该报文的源IP地址和源MAC地址,看自己的ARP缓存中是否有这样的映射,如果有的话,就更新该条记录的计时器;如果没有,就新增一条记录。2)查看该报文的目标IP地址是否就是自己的IP地址,如果是,就向报文的发送者单播一个ARP响应报文;如果不是,就丢弃该报文。3)ARP请求报文的发送者在接收到ARP响应报文时,就把目标设备的IP地址和硬件地址的映射写入自己的ARP缓存中。

3 ARP攻击原理和攻击模拟

3.1 ARP攻击原理

ARP协议是建立在信任局域网内所有节点的基础上,网络上的设备可以自主发送ARP应答分组,其他设备收到应答分组时不会检测该报文的真实性就会将其加入或是更新本机ARP缓存[3-5]。由此攻击者就可以向某一设备发送伪造的ARP应答报文,来达到让被攻击对象发送的信息无法到达预期的设备或到达错误的设备,这样就构成了一个ARP欺骗攻击。

3.2 ARP攻击模拟

3.2.1 攻击模拟流程

ARP攻击模拟的工作流程如图1所示,描述如下:

(1) 手動输入要攻击的两个设备的IP地址。输入IP地址后,会校验输入的IP地址是否有效。

(2) 如果校验不通过,则退到上一步。如果校验通过,则进行下一步。

(3) 判断要攻击的两个对象和本机是否在同一个局域网。如果不是,则退到第一步。否则执行下一步。

(4) 由多线程程序来解析两个被攻击的对象以太网地址。

(5) 由多线程程序来向两个被攻击对象持续发送伪造的ARP应答分组,不断刷新两个被攻击对象的ARP缓存。

(6) 由多线程程序来收发数据包。

3.2.2 攻击模拟环境

程序编写采用Java语言,JDK的版本是jdk1.7.0_80,IDE采用的是eclipse-jee-luna-SR2-win32,Jpacp的版本是0.6,操作系统是Windows 7操作系统。

3.2.3 攻击模拟结果

本程序成功的实现了局域网内的ARP攻击,效果如图2所示。

从上面的攻击结果图可以清楚地看到,程序达到了预期想要的结果,实现了局域网内的ARP攻击模拟。endprint

3.2.4 攻击模拟分析

从图2中可以看出实施ARP攻击后,主机B的ARP高速缓存中同一个硬件地址C8-FF-28-9B-7F-F2对应了两个不同的IP地址,而该硬件地址就是实施攻击者的主机的硬件地址。因此,就可以得出结论,当局域网内发生了ARP攻击的时候,被攻击的对象的ARP高速缓存中必然会有多个不同的IP地址映射到同一个硬件地址,并且该硬件地址就是实施攻击的主机的硬件地址。

4 ARP攻击的检测及防御

4.1 ARP攻击的检测

通过分析可知,要实现ARP欺骗,攻击者必须持续发送伪造的ARP应答分组,所以,当检测到局域网存在着大量的ARP应答分组时,就可以断定,局域网内必然发生了ARP攻击。

由此,可以通过对整个局域网内的数据包或者是经由某个设备上的数据包进行分析,检测ARP攻击。下面以主机为例进行说明。

1) 对经由本机网卡的每一个数据包进行分析。如果该数据包是本机发送的ARP请求分组,就把所请求的IP地址加入请求队列之中。如果是发送给本机的ARP应答分组,就检查该应答分组的发送端IP地址是否在请求队列中,如果在,则该IP地址出队列;否则,就说明该应答分组是一个伪造的ARP应答分组,也能够说明本机受到了该ARP应答分组发送者的攻击。检测效果如图3所示。

2) 监视本机的ARP高速缓存,一旦发现ARP高速缓存中出现了同一个MAC地址映射到多个IP地址的情况,就表名本机遭受到了ARP攻击。检测效果如图4所示。

4.2 ARP攻击的防御

ARP攻击的实现依赖于设备对ARP应答的无条件信任,从而通过发送伪造的ARP应答来刷新被攻击对象的ARP高速缓存。

从这一点上来看,可以从以下几方面来防范局域网内的ARP攻击。

1) 设置静态ARP缓存,实现IP地址和MAC地址的静态绑定。由网络管理员手动输入局域网内设备上的ARP缓存记录,设备就不再接收ARP分组,这样就能完全避免ARP攻击。这种方法虽然能够起到很好的作用,但是有很多缺点[6]。一是局域网内的每一个设备都需要手动输入,这样很麻烦,容易出错。二是局域网内的设备的IP地址并不是固定不变的,IP地址的每变化一次,就要重新输入ARP缓存。

2) 设置ARP服务器。在局域网内设置专用的ARP服务器,所有与地址解析相关的任务都交给ARP服务器来处理,设备不再接收非ARP服务器发送的ARP应答分组;也不再对非来自ARP服务器的ARP请求分组进行应答[7]。这种方法效果比较好,缺点是不利于维护,并且服务器也很容易被攻击。

3) 拒收无请求型的应答。设备只在自己发送了ARP请求的情况下才接受ARP应答[8]。

4) 对局域网划分VLAN或者增加VLAN的数量,减少VLAN中主机的数量。这种方法可以限制ARP广播域的大小,缩小攻击范围,缺点是不利于维护,也无法自动适应网络的动态变化。

5) 限制主机自主发送ARP应答分组,只有在接收到ARP请求分组时,才允许主机发送相应的ARP应答分组。

5 总结与展望

ARP协议是建立在信任局域网内所有节点的基础上,网络上的设备可以自主发送ARP应答分组,正是由于这一漏洞才让该协议容易被黑客用来进行ARP欺骗攻击,对局域网安全有效运作产生巨大威胁和损害。本文阐述了ARP攻击的原理,使用Java网络和多线程编程模拟了局域网内的ARP攻击,实现了ARP攻击的检测,介绍了几种ARP攻击的防范方法。相信在计算机安全领域备受重视的大环境下,这个长期以来没有得到很好解决的问题一定会一步一步被彻底解决。

参考文献:

[1] 郑先伟. CERNET应急响应组2007年5月报告 ARP欺骗是首要威胁[J]. 中国教育网络,2007(7):41.

[2] [美]W. Richard Stevens. TCP/IP详解 卷1:协议[M].范建華,胥光辉,张涛,译.北京:机械工业出版社,2000(4):40-41.

[3] 陈英,马洪涛.局域网内ARP协议攻击及解决办法[J].中国安全科学学报,2007(7):126-131+179.

[4] 秦丰林,段海新,郭汝廷.ARP欺骗的监测与防范技术综述[J].计算机应用研究,2009,26(01):30-33.

[5] 智阳光,胡曦明,马苗. 浅析ARP攻击原理及其防御[J]. 网络安全技术与应用,2017(7):30-32.

[6] 任侠,吕述望. ARP协议欺骗原理分析与抵御方法[J]. 计算机工程,2003(9):127-128+182.

[7] 黄元培. ARP欺骗在局域网中的分析及防御探究[J]. 现代盐化工,2016,43(05):17-18.

[8] 赵均,陈克非. ARP协议安全漏洞分析及其防御方法[J]. 信息安全与通信保密,2006(8):72-74+77.endprint