基于ARP协议的网络攻防技术实践

2018-02-05 09:02马钺中国人民解放军陆军工程大学杨旭大连理工大学
数码世界 2018年1期
关键词:IP地址局域网攻击者

马钺 中国人民解放军陆军工程大学 杨旭 大连理工大学

1 引言

随着计算机互联网应用的飞速发展,人们对网络越来越依赖,而网络信息安全也随之成为当今社会关注的热点问题。深刻了解网络攻击原理,并针对攻击手段来做好网络安全防护,就显得非常重要。

常见的网络攻击手段包括网络扫描、口令攻击、缓冲区溢出攻击、网络监听、网络协议攻击、拒绝服务攻击、木马攻击等。其中,利用网络协议的缺陷或漏洞进行攻击是很常见的一种手段。ARP是局域网中必不可少的基础协议,但因自身存在的明显缺陷,也成为了黑客实施网络攻击的重点目标。

2 ARP协议与工作原理

2.1 ARP协议

ARP是地址解析协议(Address Resolution Protocol)的英文缩写,它是一个链路层协议,用于在局域网中根据IP地址获取物理地址。

在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它不仅需要知道对方的IP地址,还必须知道对方的以太网MAC地址。因为二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网MAC地址来识别对方的。必须将网络层的IP数据报文填上源和目的的MAC地址,封装成以太网数据帧才能在链路层传输,因此主机要知道目标IP地址与MAC地址的映射关系。

ARP协议就是用于根据IP获取到MAC地址,来完成IP到MAC地址映射的协议。主机可以通过发送和接收ARP报文来询问和获取目的MAC地址,并将这种映射关系保存在本地ARP缓存中,以便下回使用。

ARP协议报文分为ARP请求和ARP应答报文,报文格式如图1所示。

图1 ARP报文格式

(1)硬件类型:表示硬件地址的类型。它的值为1表示以太网地址;

(2)协议类型:表示要映射的协议地址类型。它的值为0x0800即表示IP地址;

(3)硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4;

(4)OP(操作类型):1表示ARP请求,2表示ARP应答;

(5)发送端MAC地址:发送方设备的硬件地址;

(6)发送端IP地址:发送方设备的IP地址;

(7)目标MAC地址:接收方设备的硬件地址;

(8)目标IP地址:接收方设备的IP地址。

2.2 ARP地址解析过程

假设局域网中的主机A要向主机B发送信息,根据 A与B是否在同一网段,可分为两种情况。

如果A(192.168.1.1)与B(192.168.1.2)在同一网段,ARP地址解析过程如下:

(1)主机A首先查看自己的ARP缓存,确定其中是否包含有主机B对应的ARP缓存项。如果找到了对应的MAC地址,则主机A直接利用ARP缓存中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2)如果主机A在ARP缓存中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但是并不是所有的主机都会回复这个ARP请求包,只有当接收者的IP地址与ARP请求包中的Target IP address中标识的目的IP地址一致时才会进行回复。其他主机收到该请求报文后,发现自己的IP地址和ARP请求报文中的目标IP地址不相同,则丢弃该报文,不予响应。

(3)主机B发现自己的IP地址和ARP请求报文中的目标IP地址相同,则将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP缓存中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

(4)主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP缓存中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

图2 同网段主机ARP地址解析过程

如果主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的MAC地址,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的MAC地址,网关直接把报文发给主机B。

可以看出,在局域网通信中,ARP协议扮演着不可缺少的角色。

2.3 ARP缓存

为了避免每次通信都进行ARP广播,主机使用一个ARP高速缓存,存放最新的IP地址到MAC硬件地址之间的映射记录。主机获取到目的MAC地址后,将会在自己的ARP缓存中增加一条目的主机IP和MAC地址的映射表项,以用于后续到同一目的地报文的转发。

ARP缓存中的表项分为动态ARP表项和静态ARP表项。动态ARP表项由ARP协议通过ARP报文自动生成和维护,定期老化,当到达系统预设的老化时间时,相应的动态ARP表项会被删除。动态表项也可以被新收到的ARP报文更新,遵循“后到优先”的更新原则。当主机收到来自某IP的ARP报文时,就会更新现有ARP表项中已经存在该IP对应的ARP表项。

静态ARP表项通过手工配置和维护,不会老化和更新。

3 ARP攻击原理

ARP协议有一个明显的安全缺陷,即默认通信双方都是绝对安全可信的,只要主机接收到一个ARP报文,即使该报文不是该主机所请求的对方主机发出的应答报文,该主机也会将ARP报文中的发送者的MAC地址和IP地址加入或更新到ARP缓存中。更甚至,许多操作系统在自己没有发出任何ARP请求时,仍然接受来自其他设备的ARP响应报文,并更新ARP缓存。这种不做任何验证和判断的缓存更新机制,使得ARP攻击成为局域网中一种常见又危害巨大的攻击手段。

攻击者可以在ARP报文中填入不正确或虚假的MAC地址,并在局域网中主动大量发送伪造的ARP报文,促使网内其他主机或网关更新ARP缓存,记录错误的IP和MAC映射关系,从而不能将数据发往正确的目标。这称为ARP缓存投毒。

利用ARP缓存投毒,攻击者可以发起很多类型的攻击,包括ARP泛洪、ARP欺骗和中间人攻击等。这些攻击可以干扰局域网内的正常通信,导致用户流量受限,直至断网,也可以窃取通信数据,非法获取用户帐号和密码,造成经济上的重大损失。

ARP泛洪:网络设备在处理ARP报文时需要占用系统资源,同时因为系统内存限制和查找ARP缓存效率的要求,一般网络设备会限制ARP缓存的大小。攻击者就利用这一点,通过伪造大量源IP地址变化的ARP报文,使设备ARP缓存不断刷新,直至溢出,正常主机的ARP报文不能生成有效的ARP表项,导致正常通信中断。

ARP欺骗:攻击者伪造一个ARP响应报文,在源IP地址位置填入真实网关的IP,伪造一个错误或是不存在的MAC地址填入源MAC地址,将受害者的IP地址和MAC地址填入目的地址,并在局域网中大量发送该报文。当受害主机接收到这些伪造的ARP报文时,就会更新自己的ARP缓存中网关IP所映射的MAC地址,从而将本应该发给网关的数据发向了一个错误或不存在的MAC地址,导致主机无法访问其他网段的主机或网络服务。(见图3)

图3 仿冒网关ARP欺骗

中间人攻击:如果攻击者在ARP响应报文的源MAC中填入自己的MAC地址,就可以将自己伪装成其他IP的主机或网关,从而截取到其他主机发来的数据包。如果既对受害者主机伪装成网关,同时又对网关伪装成受害者,那么攻击者就可以变成受害主机和网关之间通信的“中间人”,可以窃听获取、甚至修改伪造正常通信数据。

4 ARP攻击演示

4.1 ARP欺骗

演示环境:

主机角色 IP 网关 操作系统攻击者 192.168.75.131 192.168.75.1 Kali Linux A受害者 192.168.75.135 192.168.75.1 Windows XP B

攻击步骤:

在主机A上寻找目标主机B,可以使用fping命令探嗅本地局域网内部机器IP,而后选择对该主机实施ARP欺骗。

在主机A上对主机B实施网关ARP欺骗。使用命令

arpspoof -i eth0 -t 192.168.75.135 192.168.75.1

arpspoof是一个可用于ARP欺骗的开源工具。该命令作用是对主机B发送ARP报文,其中源IP为网关192.168.75.1,源MAC地址为网络接口eth0的MAC地址。

主机B收到大量来自A的ARP报文,B的ARP缓存表中网关192.168.75.1对应的MAC地址被刷新成了A的MAC地址,B发往网关的数据包将被错误地发往A。

由于主机A默认未开启IP数据包转发功能,B发往网关的数据包被错误的发往A,达到不了真正的网关,此时可以看到主机B无法正常连接网络。

图4 ARP欺骗成功,目标机器无法连接网络

4.2 中间人攻击

(1)在主机A上对网关实施主机ARP欺骗。使用命令arpspoof -i eth0 -t 192.168.75.1 192.168.75.135

该命令将对网关发送ARP报文,其中源IP为主机B的192.168.75.135,源MAC地址为网络接口eth0的MAC地址。网关发往B的数据将被发往A。

(2)在主机A上开启端口转发,允许主机A像路由器那样转发数据包。

echo 1 > /proc/sys/net/ipv4/ip_forward

(3)由于A开启了IP数据包转发,主机B和网关之间传输的数据包可经由A的转发到达对方。此时A成为B与网关之间通信的中间人。

(4)在A上另外打开一个终端,键入命令

driftnet -i eth0

driftnet是一款图片捕获工具,可以在网络数据包中抓取图片。由于此时B和网关之间的数据包都经由A转发,A即可截取B网络应用中的图片,A通过ARP欺骗成功获取目标B的信息。(见图5和图6)

图5 被攻击机器浏览网页

图6 欺骗成功(左侧终端进行欺骗,右侧终端读取图片信息)

5 ARP攻击的防范

ARP攻击是局域网中很容易实施的攻击。在了解攻击原理之后,可以在终端主机和网络交换设备上部署一些针对性的防范措施。

在终端主机上,防护重点是保护本地ARP缓存,可配置的防护手段包括:

配置静态ARP缓存表项。将网关和常用的通信主机的IP和MAC地址绑定为静态表项,不允许ARP解析更新。

安装ARP防火墙。其工作原理一般有两种:第一种是定期广播ARP报文,宣告正确的本地IP地址和MAC地址,以保持其他设备中正确的ARP缓存表项。第二种是防止恶意攻击篡改本机的ARP缓存表项,尤其是网关的MAC地址。

网络交换和路由设备上的防范主要从两个方面考虑:建立正确的ARP映射关系、检测并过滤伪造的ARP报文,保证经过其转发的ARP报文正确合法;抑制短时间内大量ARP报文的冲击。在交换机上可配置的一些安全策略包括:

ARP报文有效性检查。设备收到ARP报文时,对以太报文头中的源、目的MAC地址和ARP报文数据区中的源、目的MAC地址进行一致性检查。如果以太报文头中的源、目的MAC地址和ARP报文数据区中的源、目的MAC地址不一致,则直接丢弃该ARP报文。否则允许该ARP报文通过。

禁止接口学习ARP表项的功能。在设备上禁止指定接口学习ARP表项的功能,可以有效应对ARP泛洪攻击,防止ARP表项溢出。

ARP表项严格学习。设备仅学习自己发送的ARP请求报文的应答报文,并不学习其它设备向路由器发送的ARP请求报文,即可以拒绝掉大部分的ARP请求报文攻击。

ARP表项限制。设备基于接口限制学习ARP表项的总数目,可以有效的防止ARP表项溢出。

ARP报文限速。设备对ARP报文进行数量统计,在一定时间内,如果ARP报文数量超出了配置的阈值,超出部分的ARP报文将被忽略,设备不作任何处理,有效防止ARP表项溢出。

当在局域网中部署了如上较完整的安全策略之后,基本可以防范绝大部分的ARP攻击。

6 总结

由于ARP协议自身存在明显的安全缺陷,在局域网中很容易实施ARP攻击,会对网络信息安全造成很大的影响。在了解了ARP攻击的原理后,只要在终端主机和网络交换设备上部署相应的安全策略,就基本可以防范绝大部分的ARP攻击。

[1] 凯文R.福尔(Kevin R. Fall).TCP/IP详解卷1:协议[M].机械工业出版社出版,2016-07-01

[2]郭会茹,杨斌,牛立全. ARP攻击原理分析及其安全防范措施[J]. 网络安全技术与应用,2015年,06期

[3]顾静.局域网环境下的ARP攻击行为与防御措施[J].信息系统工程,2016年,10期

[4]靳燕.ARP攻击实验仿真及防范技术分析[J].网络安全技术与应用,2016年,07期

猜你喜欢
IP地址局域网攻击者
基于贝叶斯博弈的防御资源调配模型研究
基于VPN的机房局域网远程控制系统
正面迎接批判
正面迎接批判
计算机局域网组建及管理探讨
局域网性能的优化
公安网络中IP地址智能管理的研究与思考
《IP地址及其管理》教学设计
计算机的网络身份IP地址