ARP攻击和实现原理解析

时间:2022-07-14 11:12:07

摘要:arp是Address Resolution Protocol(地址转换协议)的简称,是TCP/IP协议中网络层中的协议之一。它的作用是完成IP地址和MAC(物理地址)间的地址转换。

关键词:

中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)05-1019-03

1 ARP概述

ARP(Address Resolution Protocol,地址解析协议)是一个位于TCP/IP协议栈中的网络层协议,对应于ISO七层协议的数据链路层,负责将IP地址进行解析,转换成对应的MAC地址。ARP协议的主要功能就是通过目标设备的IP地址,以缓存表和广播的形式查询目标设备的MAC地址,以保证通信的进行。

2 ARP与ARP缓存表

在以太网协议中规定,局域网中的主机进行通信时,必须知道目标主机的以太网地址(MAC地址),而在TCP/IP协议中,网络层和传输层只关心IP地址,数据链路层并不能识别IP地址,通过MAC地址来传输数据包。因此,IP数据包在局域网内部传输时通过识别主机的MAC地址进行转发的。这就需要一种方法,可以根据主机的IP地址来获取其MAC地址,二者之间存在一种对应关系,这就需要ARP协议了。

ARP协议就是所谓的地址解析协议,主要是进行目标IP地址和目标MAC地址的转换。具体的说,当ARP工作时,首先请求主机会发送一个以太网数据包,数据包中含有目标主机的IP地址,然后目标主机接收到数据包后,会进行解析,获得数据包中的IP地址,并用包含IP地址和MAC地址对应关系的数据包来应答。因此,请求主机就获得了目标主机的MAC地址,并保存在ARP缓存表中。缓存表的管理采用了高效的老化机制,增加新的内容的同时,会删除使用少的数据,这样可以在不增加缓存表长度的同时加快查询速度。

2.1冒充"中间人"――ARP欺骗原理

ARP是用来将IP地址解析为MAC地址,ARP欺骗简单来说就是冒名顶替其他计算机的MAC地址,从而捕获发送给其他主机的数据包信息。

由上可知,以太网内部是依靠MAC地址来传输数据包的,每台主机(包括网关)在传输数据包都会使用自己保存的ARP缓存表,此表中包含着经常使用的IP地址和MAC地址的对应关系。一般情况下,ARP缓存表是有效的,在以太网通信时,可以保证其数据的传输。因此,当两台主机通过网关进行数据传输时,其它的主机是不能捕获到他们的通信信息的。

但是,这并意味这ARP协议的完善,相反,ARP协议有一个很大的弊端,那就是当主机接收到ARP的应答包后,不能验证这个请求是否发送过,会用接收到的应答包中与IP地址对应的MAC地址来替换缓存表里的旧信息。因此,这个弊端就可以使一台主机来捕获其他主机主机之间的数据通信。

其具体过程是,首先,主机C向主机A发送ARP应答包,包含IP地址192.168.2.1对应的MAC地址是xx-xx-xx-xx-xx-01。主机A接收后不会去验证收到的数据包,而是将自己缓存表中与IP地址192.168.2.1对应的MAC地址替换成xx-xx-xx-xx-xx-01。与此同时,C也会向网关1发送同样地ARP应答包,包含IP地址192.168.3.1的MAC地址是xx-xx-xx-xx-xx-01。同样,网关1会将自己缓存表中与IP地址192.168.3.1对应的MAC地址替换成xx-xx-xx-xx-xx-01。

这样,主机A的ARP缓存表就发生了改变,当主机A和主机B进行数据通信时,它把应该发送给网关1(192.168.3.1)的数据包发送到主机C(xx-xx-xx-xx-xx-01)。C接收到数据包后,再转发给网关1。当B发送的数据包传输到网关1后,网关1经过ARP解析,将本该发送给192.168.3.1的数据包,发送给主机C(xx-xx-xx-xx-xx-01),C收到数据包后,经过ARP解析,传输给主机A,完成了A与B的成功通信。主机C利用ARP协议的缺陷进行了ARP欺骗,捕获了其传输的数据。

因此,主机B欺骗了网关1,让网关1以为主机B是主机A,同时,主机B又欺骗了主机A,让主机A以为主机B是网关1。主机B同时对主机A和网关1进行欺骗,充当"中间人",捕获了主机A与网关1之间的数据交换内容。

要想实现有效的ARP欺骗,最终的就是必须进行双向欺骗。欺骗者不但要欺骗网关,也应欺骗主机。只有两者都被欺骗,欺骗者才能捕获到所需要的信息,否则只是徒劳。

2.2 ARP欺骗的代码实现

3 WinPcap简述

WinPcap是基于Win32平台,可以成功捕获数据包,并有效进行网络分析的体系结构。WinPcap可以完成很多功能,其核心主要有几下机电:

1)有效捕获数据通信的原始数据包,包括主机之间和其他设备(共享媒介)上进行交换的数据包;

2)在数据包发送给某应用程序前,根据自定义的规则过滤数据包;

3)在网络上发送原始的数据包;

4)收集网络数据通信中的统计信息。

只有在Win32内核中安装网络设备驱动程序,并增加需要的动态链接库DLL,才能实现上述的功能。

WinPcap包括了一个内核级的数据包过滤器,一个低层动态链接库(packet.dll),一个高层的,依赖于系统的库(wpcap.dll)。

3.1 ARP攻击核心函数的实现

根据前面几节阐述的ARP攻击原理,我们首先需要构建一个函数用于实现对ARP缓存的操作如图1所示其中部分以太网和ARP等协议数据结构形式构建不在此阐述。

图1

参考WinPcap例子构建函数用于打开相应的网卡句柄,然后设置网卡的类型为混杂模式,使网卡能接受以太网上的广播数据包,函数代码实现如图2所示。

图2

3.2 Sniffer定位ARP欺骗主机

ARP欺骗主机的查找

首先搭建实验环境如图3所示。

图3

其中红色标记为欺骗主机,按照ARP欺骗的基本原理,数据包应通过红色主机转发,所以大量数据包都集中在红色的攻击主机上。通过数据抓包如图4所示(图中单位内部服务器地址清除)。

图4

通过上图分析192.168.0.144流量存在异常,同理通过MAC地址流量图也可以发现00-21-98-11-33-56也存在流量异常;再次通过192.168.0.96截获的数据包可以发现数据都是通过192.168.0.144和00-21-98-11-33-56转发的,因此可以基本判断红色机器为ARP攻击主机。

在局域网中任意两台计算机之间的通信,或者局域网中的计算机将IP数据包转发给网关设备时,网卡先在缓存中查找目标IP地址相对应的MAC(物理地址),以填充物理帧的目的地址。ARP欺骗和攻击正是利用了这一点,将自身的MAC地址填入正常的ARP协议缓存表中,从而达到欺骗和攻击的目的。通过将IP地址和MAC地址进行静态绑定是有效防范ARP攻击的方法之一。

参考文献:

[1]李涛.网络安全概论[M].北京:电子工业出版社,2004;

[2]郝文江,李玉霞.基于计算机技术对信息的保护[J].通信技术,2007(12).

上一篇:浅析ERP系统中的数据仓库 下一篇:一种改进的关联规则挖掘算法