文档库 最新最全的文档下载
当前位置:文档库 › ARP欺骗攻击及防

ARP欺骗攻击及防

ARP欺骗攻击及防
ARP欺骗攻击及防

ARP欺骗攻击及防范研究

摘要

伴随着计算机网络的普及和通讯技术的迅猛发展,网络信息已逐步成为当今社会发展的重要资源。网络互连一般采用TCP/IP 协议,由于网络及其协议的设计者,在设计之初只考虑了效率问题没有考虑网络安全的问题,所以几乎所有的网络协议都有漏洞,ARP 协议同样也存在着安全漏洞。ARP 攻击在现今的网络中频频出现,轻者造成网络性能下降,重者造成网络不通或信息被盗。因此有效的防范ARP 形式的网络攻击己成为确保网络畅通安全的必要条件。

本文分析了ARP 协议及其存在的漏洞,ARP 病毒的攻击原理和方式方法,对比了现有的检测、定位和防范方法的优缺点。设计实现了一个检测、定位和防范ARP 病毒的系统。能够有效的检测到交换的ARP 缓存表,通过对缓存中ARP 映射信息的分析,找出可能发生的欺骗或者谁是攻击者,通过远程设置交换机的ACL 等操作对检测到的危险进行处理,可以有效地对ARP 攻击进行防范和检测。

关键词:校园网,ARP 病毒,检测,定位,防范

目录

1 绪论 (1)

1.1 研究背景与意义 (1)

1.2 研究现状 (1)

1.3 高校校园网特点及安全缺陷 (3)

2 ARP 协议及相关理论基础 (4)

2.1 ARP 协议的相关理论 (4)

2.1.1 OSI 参考模型 (4)

2.1.2 TCP/IP 参考模型 (5)

2.2 ARP 协议概述 (6)

2.2.1 ARP 缓存 (6)

2.2.2 ARP 代理 (7)

2.2.3 免费ARP (9)

3 ARP 欺骗分析与测试 (10)

3.1 ARP 欺骗原理 (10)

3.2 常见的ARP 欺骗 (10)

3.2.1 中间人欺骗 (10)

3.2.2 IP 地址冲突 (11)

3.2.3 一般主机欺骗 (11)

3.4 ARP 测试程序—ARPTable (11)

3.5 Windows 环境下的ARP 欺骗测试与分析 (12)

3.5.1 IP 地址冲突的ARP 请求和应答实验 (12)

3.5.2 假冒网关欺骗的ARP 请求和应答实验 (15)

3.5.3 ARP 请求过程实验 (18)

3.5.4 ARP 应答过程实验 (20)

3.6 实验结果 (23)

4 防御ARP 欺骗系统模型实验 (25)

5 总结 (30)

6 参考文献 (31)

..

1 绪论

Internet 的迅速发展使得网络已伸入到社会生活的各个层面,给人们的工作、学习、生活带来了巨大的改变,效率得到了极大的提高,信息资源得到最大程度的共享。伴随着网络的不断发展和扩大,各种网络业务如雨后春笋、层出不穷,这其中包括电子商务、网络游戏、在线支付等新兴业务,为人类社会的进步提供了推动力。

与此同时,出于经济目的、政治目的甚至是偏执于技术的黑客也在不停的编写各种各样病毒和木马威胁着网络安全,其攻击手段不断翻新和变换,大有愈演愈烈之势。这使得计算机安全问题日益突出。所有这些都对网络安全提出了新的要求。

1.1 研究背景与意义

目前Internet 中广泛使用的是IPv4 协议,也就是人们常说的IP 协议(Internet Protocol)。现行的IPv4 自1981 年RFC 791 标准发布以来并没有多大的改变。事实证明,IPv4 具有相当强盛的生命力,易于实现且互操作性良好,经受住了从早期小规模互联网络扩展到如今全球范围Internet 应用的考验。所有这一切都应归功于IPv4 最初的优良设计。

然而,其设计者没有预料到网络会以极大的发展速度覆盖全球,出现了今日IP 地址使用紧张的局面。为了应对日益紧张的IP 地址资源,大多数学校、网吧或企业纷纷组建自己的局域网,使用代理服务器访问外部网络。通过这种方式可以节约IP 地址数量,同时也有利于局域网和外网的物理隔离,实现了局域网内信息交互的安全。

作为网络底层使用的TCP/IP 协议(Transfer Control/Internet Protocol),其设计之初考虑的是为本单位内部提供一个互联的信息和资源共享平台,设计基础是单位内部各网络结点之间是可以相互信赖的,没有过多的考虑安全问题。这使得TCP/IP 协议在实现上更加简单高效,提高了运行效率,对于协议的发展和普及也具有一定意义。但它没有考虑到互联网会发展成今天这样一个全球性的网络,使得TCP/IP 协议的完全开放性存在着很多重大安全隐患。并且国内众多用户使用Windows 操作系统,出于安全考虑,微软不会像Linux 一样公布全部代码可让用户重新编写内核程序,再加上为数众多的黑客,给原本脆弱的安全体系雪上加霜。

ARP,即地址解析协议,实现通过IP地址得知其物理地址。在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP 地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。

欺骗的存在直接危害了网内各主机的安全,以及用户的切身利益,扰乱了局域网的正常通信。研究ARP 欺骗的防御方法,有助于加强局域网的安全建设,提高局域网内各主机的通信安全,抑制ARP 欺骗的影响,同时也保证用户上网的信息资料不被非法获取。

1.2 研究现状

为了解决ARP 欺骗给局域网带来的安全问题,前人已经作了许多有意义的探索与实践,某些方案在实际项目的应用中已相对成熟,但也存在着一定的局限性。现对国内外几类常见防御ARP欺骗的解决方案及其局限性进行了分析与总结:

(1)设置静态的ARP 缓存。在主机上使用arp -s 命令添加相应静态的ARP 缓存记

录。攻击者如果向主机发送ARP 应答报文,目标主机在接收此报文后也不会刷新ARP 缓存的相关映射信息,避免了ARP 欺骗的发生。这种方法必须人工设置IP 地址和MAC 地址的映射。仅适用于小型的局域网络,并且该方法对某些操作系统无效,如windows 2000 及windows XP sp1 以前版本系统无效。在这些系统中,即使设置了静态的ARP 缓存记录,也会因为主机接收到相关的应答报文而修改。

(2)不断删除ARP 缓存内容。编制一个简单的程序,其功能为以一个固定的频率不断的使用arp –d 命令删除ARP 缓存中相关的记录。该程序删除频率设定要大于ARP

欺骗频率,这样才能保证主机缓存不保留伪造的IP 地址和MAC 地址映射信息,达到抑制ARP 欺骗的目的。但是这种方法会导致网络中出现过多的ARP 请求广播。

(3)使用ARP 服务器。ARP 服务器保存有局域网内各主机的IP 地址和MAC 地址的映射信息,并且禁用局域网内除服务器之外各主机的ARP 应答,仅保留服务器对接收到的ARP 请求进行应答。但是必须要保证ARP 服务器的正常运行,不被黑客攻击。

(4)交换机端口绑定。设置局域网交换机的每一个端口都与唯一的MAC 地址相对应。一旦检测出来自该端口所连接的主机的MAC 地址发生变化,就自动锁定该端口,使主机无法连接到局域网。通过这种方式,攻击者就无法发送伪造的ARP 报文,进而阻止了ARP 欺骗的发生。这种方法的缺点就是不灵活。假设局域网中主机位置发生变动,仍需要管理员重新配置相应交换机的端口;并且仅高端交换机支持此项功能,一般低端交换机不支持端口绑定技术。

(5)划分虚拟局域网。针对ARP 欺骗不能跨网段实施的特性,将局域网划分成多个不同的虚拟局域网。某虚拟局域网内发生ARP 欺骗不会影响到其它虚拟局域网内的主机通信。这样做缩小了ARP 欺骗影响的范围。将受信任主机放置在同一个虚拟局域网中,将绝密主机放置在另一个虚拟局域网中,有效降低无漏洞渗透的渗入。同交换机端口绑定一样,仍需要高端网络设备的支持。

(6)使用通信加密。将在网络中的数据进行加密。加密后的数据即使被黑客截获,没有相应的解密算法,仍无法获取其真实的数据,即使能够采用暴力破解,也需要花费很高的时间代价。如局域网内的远程系统登录使用SSH 替换Telnet;使用SFTP 替换FTP;访问网站用HTTPS替换HTTP 等。这种方法并没有解决ARP 欺骗的问题,仅能够保证重要数据不被恶意破解。

(7)删除Windows 系统中的npptools.dll(network packet provider tools helper)动态连接库。因为它容易被ARP 病毒所利用,来制造ARP 欺骗攻击。在安全模式中,打开WINDOWS\SYSTEM32\NPPTOOLS.DLL 文件。删除这个文件后,用零字节的文件替换。最后将nnptools.dll 保存为只读文件,以防病毒释放该源文件进行覆盖。

在ARP 协议的改进和算法方面,前人也做了许多重要而突出的工作。分析总结如下:(1)Bruschi[1]提出将数字签名技术引入ARP 帧发送方验证的S-ARP 协议。它采用在源主机发送ARP 信息时,对其摘要进行签名,在目标主机接收ARP 信息时,对其签名进行验证。攻击者无法发送伪造的ARP 帧,从而加强了局域网安全。

(2)Goyal[2]在其论文《An Efficient Solution to the ARP Cache Poisoning Problem》提出了基于数字签名和Hash 链表的的一次一密方案相结合,比较S-ARP 协议在实现效率上有了进一步的提高。提出一种基于公钥密钥体制的安全ARP 协议TARP,即Ticket-based Address Resolution Protocol(基于票据的地址解析协议)。票据中除包含数字签名外,还引入有效期。这种TARP 协议与S-ARP 相比,其优势为不必每次ARP 解析时都进行签名和验证,减轻了主机的负担,提高了效率。

(3)郑文兵[3]提出一种改进的ARP 协议算法。加入两个线性表RequestList 和ResponseList用于保存已发送ARP 请求和接收ARP 应答信息。在发送ARP 请求报文和

接收ARP 应答报文时,对这两个线性表进行相应检测,将不符合要求的报文丢弃并记录。

(4)林宏刚[4]提出一种主动检测和防范ARP 攻击的算法。分别对接收ARP 请求、接收ARP应答、发送ARP 请求、发送ARP 应答这四个事件分别进行处理,采用封装TCP SYN 数据包检测目标主机存在的方法,设计了一种发送ARP 报文和更新ARP 缓存的安全性方案。

1.3 高校校园网特点及安全缺陷

高校校园网的以下特点导致安全管理非常复杂,具体来说存在以下特点及安全缺陷:(1)校园网的速度快规模大;

(2)校园网中的计算机系统管理比较复杂;

(3)用户群体比较活跃;

(4)网络环境比较开放;

(5)盗版资源泛滥;

以上各种原因导致校园网既是大量攻击的发源地,也是攻击者最容易攻破的目标。目前各种ARP欺骗在校园网内内横行,造成相当数量的用户出现网络连接问题。

2 ARP 协议及相关理论基础

2.1 ARP 协议的相关理论

ARP 协议是TCP/IP 协议族中重要的一员,工作于OSI 参考模型的网络层与数据链路层之间。在局域网中,利用ARP 协议可实现根据目标主机IP 地址获得其MAC 地址的功能。而以太网技术是局域网的重要组网技术。所以在研究ARP 协议之前,首先对OSI 参考模型、TCP/IP 参考模型、以太网技术、IP 地址、MAC 地址等相关理论基础进行研究。

2.1.1 OSI 参考模型

OSI 参考模型开放系统互连参考模型OSI/RM(Open System Interconnection Reference Model)是一个多层的网络协议,简称OSI。它最初是由国际标准化组织(International Standard Organization,ISO)于1977年成立专门机构研究所得出的一个试图使各种计算机在世界范围内互连成网的标准框架。在1983 年形成了开放系统互连参考模型的正式文件,即ISO 7498 国际标准,也就是所谓的七层协议的体系结构。

开放系统互连参考模型将网络划分为七层模型,由高至低分别为:应用层(ApplicationLayer),表示层(Presentation Layer),会话层(Session Layer),传输层(Transport Layer),网络层(Network Layer),数据链路层(Data Link Layer)和物理层(Physical Layer)。该模型如图1 所示:

OSI 参考模型中每一层仅与其相邻的上下两层通过接口直接通信。这种分层结构使得各层的设计与测试是相对独立的。第N 层为第N+1 层提供服务,第N+1 层不必理会下层服务是如何实现的,因此第N 层的改变是不会影响到第N+1 层的,实现了层次间的透明。OSI 各层的主要功能是:

物理层:物理层处于OSI 参考模型的最低层。物理层的主要功能是利用物理传输介质(如同轴电缆、光纤、双绞线等)为数据链路层提供物理连接,将帧的结构和内容串行发送,每次发送一个比特,其传输的过程是透明的。

数据链路层:在物理层提供比特流传输服务的基础上,在通信的实体之间建立数据链路连接,传送以帧为单位的数据,采用差错控制、流量控制方法,使有差错的物理线路变成无差错的数据链路。

网络层:网络层主要任务是通过路由器算法,为分组通过通信子网选择最适当的路径。网络层要实现路由器选择、拥塞控制与网络互连等功能。在单独的局域网中,网络层的存在

是冗余的,因为报文是从一台主机传送到另一台主机。传输层:传输层的主要任务是向用户提供可靠的端到端(End-to-End)服务,透明地传送报文。它向高层屏蔽了下层数据通信的细节,因而是计算机通体体系结构中最关键的一层。

会话层:会话层的主要任务是组织两个会话进程之间的通信,并管理数据的交换。会话层提供的服务之一是管理对话控制,它允许信息同时双向传输,或者只能单向传输。表示层:表示层主要用于处理在两个通信系统中交换信息的表示方式,它关注的是所传送的信息的语义和语法。它包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

应用层:应用层是OSI 参考模型中的最高层。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理(User Agent),来完成一些为进行信息交换所必需的功能。

OSI 的七层参考模型试图使全世界的计算机网络都遵循同一标准,且得到当时许多政府和公司的支持,但是由于因特网抢先在全世界覆盖相当大的范围,OSI 并没有得到有效推广。目前广泛应用的是非国际标准TCP/IP,即TCP/IP 已成为事实上的国际标准。

2.1.2 TCP/IP 参考模型

TCP/IP(Transfer Control/Internet Protocol)传输控制协议/网际协议是能够在网络中提供可靠的数据传输和无连接数据报服务的一组不同的协议组合在一起构成的协议族。TCP/IP 起源于20 世纪60 年代美国政府资助的一个分组交换网络研究项目ARPANET,90 年代已发展成为计算机之间最常用的组网形式。它没有OSI 七层体系结构的明确分层,但却比OSI 的协议运行效率高,且借助商业驱动力迅速占领市场。为了便于研究TCP/IP 协议,一般将它分为四个层次,由高至低分为应用层(ApplicationLayer),运输层(Transport Layer),网络层(Network Layer)和链路层(Link Layer)。TCP/IP参考模型对应于OSI 参考模型如图2所示:

TCP/IP 各层的主要功能:

链路层:链路层处于TCP/IP 参考模型的最底层,也称为数据链路层或网络接口层,通常包括操作系统的驱动程序和计算机中对应的网络接口卡。它们一起处理与传输媒介的物理接口细节。

网络层:网络层有时也称为互联网层,处理分组在网络中的活动。其中ARP 和RARP (Reverse Address Resolution Protocol 逆地址解析协议)经常被IP 协议使用,ICMP(Internet Control Message Protocol 因特网报文控制协议)和IGMP(Internet Group Management

Protocol 因特网组管理协议)依赖于IP 协议。由于网际协议IP 是使互联起来的许多计算机能够进行通信,因此网络层也被称为IP 层。

运输层:运输层主要为两台主机上的应用程序提供端到端的通信。此层包含两个互不相同的传输协议:TCP(Transmission Control Protocol 传输控制协议)与UDP(User Datagram Protocol 用户数据报协议)。TCP 为两台主机提供可靠的数据通信,应用层可以忽略这些可靠传输的细节。UDP 为应用层提供非常简单的服务,只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端,任何必须的可靠性须由应用层来提供。

应用层:应用层负责处理特定的应用程序细节。如一般TCP/IP 实现以下:Telnet(远程登陆),FTP(File Transfer Protocol 文件传输协议),SMTP(Simple Mail Transfer Protocol 简单邮件传输协议)和SNMP(Simple Network Management Protocol 简单网络管理协议)。

2.2 ARP 协议概述

在局域网中,网络层中的数据报交付给目标主机,传到链路层时,需要封装成MAC 帧才能发送到实际网络,如图3所示。所谓封装,是指分层协议所采用的技术,较低层协议接收到来自较高层协议的报文,并把它放在低层帧的数据部分。封装意味着当数据报通过网络协议传输时带有一系列的首部信息,其中最前面的首部信息来自物理网络帧,其后的来自网际协议,再后的来自运输协议,以此类推。

仅仅知道目标主机的IP 地址,而不知道MAC 地址,两台主机或网络设备是无法直接进行通信的。由于IP 地址和MAC 地址之间不存在简单的映射关系,就需要有特定的协议实现或者获取这种IP 地址到MAC 地址的映射功能。ARP 协议正是实现了这种需求。

ARP 协议,即Address Resolution Protocol 地址解析协议,是一个TCP/IP 协议,工作在网络层与链路层之间,用于局域网中根据目标主机的IP 地址来获得其MAC 地址。所谓“地址解析”就是将目标IP 地址转化为目标MAC 地址的过程。ARP 协议的基本功能就是通过目标设备的IP 地址,查询目标设备的MAC 地址,以保证通信的顺利进行。

2.2.1 ARP 缓存

每台主机都拥有一个ARP 缓存(ARP cache),里面存储了该主机所在局域网上的各主机和路由器的IP 地址和MAC 地址的映射表。可以使用arp –a 命令进行查看,在Windows 系统环境下,显示效果如图4 所示。

此图中显示了本地主机IP 地址为211.68.183.144,接口地址为0x20002 。第一列为本地主机已获得的网络中主机的IP 地址,第二列为与获得IP 地址相对应的MAC 地址,第三列为映射记录的类型,dynamic 表示动态的,即可更改的;static 表示静态的,不会被系统动态修改。

在操作系统中提供了arp 命令。通过使用arp 命令可以实现操作ARP 缓存的目的,以下列出几个常见的命令:

arp –a 显示本地主机ARP 缓存内容,效果等同于使用arp –g

arp –a inet_addr 显示IP 地址为inet_addr 的映射记录,inet_addr 形式上采用点分十进制方法表示,举例如arp –a 211.68.183.144

arp –s inet_addr eth_addr 向本地主机ARP 缓存中加入静态的IP 地址和MAC 地址的映射信息,eth_addr 形式上采用以短横线“-”隔开的6 个16 进制数,举例如arp –s211.68.183.144 AA-AA-AA-AA-AA-AA

arp –d 删除本地主机ARP 缓存内容

arp –d inet_addr 删除IP 地址为inet_addr 的映射记录,举例如arp –d

211.68.183.144

ARP 缓存中的映射记录一般是从主机接收到的ARP 请求报文和ARP 应答报文中获得的相关映射信息。ARP 请求和ARP 应答报文将在下面文章中有具体的说明。

由于ARP 缓存的存在,主机可以直接查询获得ARP 缓存中已有目标主机的MAC

地址,在链路层将来自于上层的数据封装为MAC 帧。这样就减少了每次发送数据前都要获取目标主机的MAC 地址而不断发送ARP 请求及目标主机返回ARP 应答所消耗的网

络通信流量。ARP 缓存中IP 地址和MAC 地址的映射信息并不是永久有效,它们同样存在老化时间的限制。在Windows系统默认情况下,映射信息都是动态的,如果某条映射信息在一定时间内未接收到新的ARP 报文更新或未被主机进行连接使用,那么它将于120 秒后从ARP 缓存中删除。老化时间过长显然会导致ARP 缓存中保存了较多不被使用的映射记录,影响ARP 缓存查找相关映射信息的效率;相反老化时间过短,就会倒导致增加较多的网络流量用于查询目标主机的MAC 地址信息。

2.2.2 ARP 代理

代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的ARP 请求会使用自己的MAC 地址与目标计算机的IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的,过程如图5 所示。

图5 arp代理

主机A要发送数据包到主机D。图表显示主机A使用的是16位掩码。主机A相信目的网段是直接连接在172.16.0.0上的。于是主机A直接发送一个ARP请求给目的站点。主机A 需要得到主机D的MAC地址,所以主机A广播ARP请求,ARP请求里主机A将自己的MAC地址作为源地址FFFF.FFFF.FFFF 做为目的地址进行广播。但是路由器的E0 口默认不支持转发广播。所以主机D不能响应这个ARP请求。路由器知道主机D在其他子网,于是用自己的MAC地址来应答A,路由器用自己接口的MAC地址作为源地址回复ARP应答给主机A。这个ARP应答总是利用单播来回复。主机A收到ARP请求后更新自己的MAC 地址表,现在主机A如果发送数据包给主机D就将数据发送给MAC 00-00-0c-94-36-ab.由路

由器转发给主机D。所以目的地址为子网B的数据都发送给路由器。子网A内所有主机ARP 地址表显示去往子网B主机的MAC地址全是路由器接口的MAC地址。

2.2.3 免费ARP

另一个ARP 特性称作免费ARP (gratuitous ARP)。它是指主机发送ARP 查找自己的IP 地址。通常,它发生在系统引导期间进行网络接口配置的时候。

举例说明免费ARP 过程。主机A(IP 地址为IPA,MAC 地址为MACA)加电,为检测局域网内是否有已使用了和自己IP 地址相同的主机,以广播形式发送免费ARP 报文。当然主机A 并不希望收到其它主机的应答报文。免费ARP 报文的主要内容是:“我的IP 地址是IPA,硬件地址是MACA。我想知道是否有使用IPA的主机。”免费ARP 报文格式如图6 所示,帧格式如图7 所示:

当主机A 收到主机 B 发送来的应答报文后,发现主机B 正在使用与自己相同的IP 地址。主机A 同样不会更新自己的缓存,并发生IP 地址冲突错误。

免费ARP 可以有以下两个方面的作用:

(1)一个主机可以通过它来确定另一个主机是否设置了相同的I P 地址。如上面例子所展示的,如果收到一个应答,那么就会在主机产生一个错误消息,这样就可以警告使用此主机的用户,该主机有不正确的设置或者其IP 地址已先被其他人使用。

(2)如果发送免费ARP 的主机正好改变了硬件地址(很可能是主机关机了,并换了一块网卡,然后重新启动),那么这个报文就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。在文献[Bhide、Elnozahy 和Morgan 1991]中有一个应用例子,通过发送含有备份硬件地址和故障服务器的IP 地址的免费ARP 请求,使得备份文件服务器可以顺利地接替故障服务器进行工作。这使得所有目的地为故障服务器的报文都被送到备份服务器那里,客户程序不用关心原来的服务器是否出了故障,达到故障即时处理的目的。

3 ARP 欺骗分析与测试

ARP 协议是建立在各主机之间相互信任的基础上的,因此也存在一些安全隐患。ARP 欺骗(ARP Spoofing)也叫ARP 中毒(ARP Poisoning)或者ARP 缓存中毒(ARP Cache Poisoning)。ARP 缓存中毒这个名称更贴切地说明了ARP 欺骗要达到的实际效果,即通过ARP 欺骗使目标网络设备的ARP 缓存发生改变。

3.1 ARP 欺骗原理

ARP 欺骗的核心思想就是向目标主机发送一个伪造了源IP 地址和MAC 地址映射的ARP 应答,使目标主机收到该应答帧后更新其ARP缓存,从而使目标主机将报文发送给错误的对象。如图8所示,利用ARP 欺骗,攻击者借助主机B 使 A 在毫无察觉的情况下将原本要发送至C的报文发送至D。其中D 为任意主机。

①B 向A 发送ARP 应答(请求)报文,将C 的MAC 地址映射为D;②A 正在(或准备)向C 发送报文;③A 接收到B 发送的ARP 欺骗报文后将报文发给D。

ARP 欺骗通过两个途径产生:

(1)发送伪造的ARP 请求报文。攻击者发送一个修改了源IP 地址和MAC 地址的请求报文,使局域网其它接收此报文的主机更新ARP 缓存,来实现欺骗目的。

(2)发送伪造的ARP 应答报文。目前大多数操作系统对应答报文,一旦接收立即更新其ARP 缓存,并不进行是否发出过ARP 请求的验证;即使主机曾经发送过ARP 请求报文并接收到真实的应答报文,也会因后到的伪造应答而再次更新ARP 缓存。因此,直接伪造应答报文即可实现欺骗。

3.2 常见的ARP 欺骗

3.2.1 中间人欺骗

在ARP 欺骗中,中间人(Man-in-the-middle)欺骗是最主要,也是最危险的欺骗方式。常见的情况是攻击者将自己的主机插入网关与目标主机通信路径之间,成为两者通信的中继,为了转发两者的数据报,攻击主机要启动路由转发功能,攻击过程如图9所示:

其中,B 为任意一台主机或整个网段。①A 向网关发送ARP 请求(应答),网关将B 的IP 映射为A 的MAC 地址。②A 向B 发送ARP 请求(应答),B 将网关的IP 映射为A 的MAC 地址。③网关发往 B 的报文,要经A 转发。④B 发往网关的报文,要经A 转发。

如果攻击者在达到了中间人攻击的情况下,使用网络嗅探等方式进行监听,能够成功截取任意一段流经攻击者主机的未加密报文,如EMAIL、Telnet、FTP、HTTP 等内容,从中可分析出重要数据,如密码口令等。通过采用会话劫持的方法,攻击者还可以冒充被攻击者登陆远程主机或服务器、实现网页内容动态挂载木马等操作。

3.2.2 IP 地址冲突

一般而言,出现IP 地址冲突应该发生在某主机开机后检测本网内是否有使用与本机相同的IP 地址的检测阶段,这些使用相同IP 地址的主机会提示IP 地址冲突,导致这些相同IP 的主机不能正常地访问网络。攻击者利用上文提及的免费ARP 及其应答报文的原理,向被攻击者的主机发送修改了的请求或应答报文,此报文中可能使用任意的非攻击者主机的MAC 地址用以隐藏攻击者的真实地址。当被攻击主机接收到此报文后,随即产生IP 地址冲突错误。

3.2.3 一般主机欺骗

对一般主机的欺骗大多是为了限制其上网的流量,为攻击者争取更多的网络资源。攻击者向被攻击主机发送伪造的网关IP 地址和MAC 地址的映射报文,使被攻击主机缓存的网关映射信息改变为错误的映射关系,其MAC 地址往往指向网内一个不存在的主机。这就使得被攻击主机发送的数据无法到达网关,造成被攻击主机无法上网的现象。

3.4 ARP 测试程序—ARPTable

国内大多数主机安装的是微软公司发布的Windows 操作系统。由于Windows 系统是有偿使用,出于对系统的安全性和知识产权的保护,该系统的重要部分没有公布源代码。这就导致了不可能从源代码的角度分析其ARP 协议实现过程,仅能从实验测试角度上总结其特点和规律。

ARPTable 程序是一个使用VC++6.0 制作的基于对话框的应用程序,其目的是获取本地主机上所有网络接口中ARP 缓存内容,并将其在应用程序中以CCtrlList 控件的报表形式显示出来。它是用来配合对Window 系统中ARP 协议的研究而开发的,使用图形界面方式显示信息,以减少用户对命令提示符界面下arp 命令的依赖。

3.5 Windows 环境下的ARP 欺骗测试与分析

为测试Windows 系统环境下的ARP 协议,设置如下实验。实验环境为D-Link 公司的DES-1016R 交换机,主机操作系统为Windows XP SP2 系统。网关及主机IP 地址与MAC 地址如表1 所示:

实验工具为软件WinArpAttacker3.5 和SpyNet 公司出品的软件CaptureNet v3.12 及ARPTable程序,如图10。实验方式是利用软件WinArpAttacker3.5 向目标主机发送各种用例帧,目标主机使用CaptureNet 进行监听,使用ARPTable 程序查看ARP 缓存结果。各种用例帧的格式都采用能满足更新目标主机ARP 缓存的最“不正常”的格式方式发送,以求精确获得更改目标主机ARP 缓存所需最少填写正确内容的关键字段。所做实验均以ARP 缓存中动态映射记录(dynamic 类型)作为研究对象,对静态映射记录不做研究。

3.5.1 IP 地址冲突的ARP 请求和应答实验

(1)产生IP 地址冲突的ARP 请求实验

①实验目的:为获得能够产生IP 地址冲突所需要正确输入的ARP 请求帧中的关键字段。

②实验过程:源主机发送ARP 请求帧如图11 所示,目标主机捕获帧如图12 所示。

图11 ARP 请求帧配置

图12捕获ARP 请求帧

③实验结果:目标主机接收到这个请求帧后,发生IP 地址冲突错误。

④结果分析:与免费ARP 报文相比,此请求帧中仅报文源IP 地址是填写正确的字段,

其他字段均不是格式上应该填写的值,但同样产生了IP 地址冲突。所以产生IP 地址冲突的ARP 请求帧中,仅需在保证目标主机能接收到伪造的ARP 请求的情况下,报文源IP地址和目标主机IP 地址相同,就会使目标主机发生IP 地址冲突。获得的发生IP 地址冲突的请求帧关键字段为帧目标MAC 地址和报文源IP 地址。

(2)产生IP 地址冲突的ARP 应答

①实验目的:为获得能够产生IP 地址冲突所要正确输入的ARP 应答帧中的关键字段。

②实验过程:源主机发送ARP 应答帧如图13 所示,目标主机捕获帧如图14 所示。

图13 ARP 应答帧配置

图14 捕获ARP 应答帧

③实验结果:目标主机接收到这个应答帧后,发生IP 地址冲突错误。

④结果分析:与免费ARP 的应答报文相比,此应答帧中仅报文源IP 地址是填写正确的

字段,其他字段均不是格式上应该填写的值,但同样产生了IP 地址冲突。所以产生IP 地址冲突的ARP 应答帧中,仅需在保证目标主机能接收到伪造的ARP 应答的情况下,报文源IP 地址和目标主机IP 地址相同,就会使目标主机发生IP 地址冲突。获得的发生IP地址冲突的应答帧关键字段为帧目标MAC 地址和报文源IP 地址。

3.5.2 假冒网关欺骗的ARP 请求和应答实验

(1)产生假冒网关欺骗的ARP 请求实验

①实验目的:为获得能够假冒网关欺骗所需要正确输入的ARP 请求帧中的关键字段。

②实验过程:源主机发送ARP 请求帧如图15 所示,目标主机捕获帧如图16 所示:

图15 ARP 请求帧配置

图16 捕获ARP 请求帧

目标主机ARP 缓存如图17 所示:

图17 ARP 缓存内容

③实验结果:目标主机接收到这个请求帧后,网关IP 地址对应的MAC 地址被伪造报文所改写。

④结果分析:与一般ARP 的请求报文相比,此请求帧中仅报文源IP 地址是填写正确的

字段,其他字段均不是格式上应该填写的值,但使ARP 缓存中网关所对应的MAC 地址发生了改变。所以产生假冒网关欺骗的ARP 请求帧中,仅需在保证目标主机能接收到伪造的ARP 请求的情况下,报文源IP 地址和ARP 缓存中网关IP 地址相同,就会使目标主机更新网关的IP 地址和MAC 地址的映射信息。获得的假冒网关欺骗的请求帧关键字段为帧目标MAC 地址和报文源IP 地址。

(2)产生假冒网关欺骗的ARP 应答

①实验目的:为获得能够假冒网关欺骗所需要正确输入的ARP 应答帧中的关键字段。

②实验过程:源主机发送ARP 请求帧如图18 所示,目标主机捕获帧如图19 所示。

图18 ARP 应答帧配置

图19 捕获ARP 应答帧

目标主机ARP 缓存如图20 所示:

图20 ARP 缓存内容

③实验结果:目标主机接收到这个应答帧后,网关IP 地址对应的MAC 地址被伪造报文

所改写。

④结果分析:与一般ARP 的应答报文相比,此应答帧中仅报文源IP 地址是填写正确的

字段,其他字段均不是格式上应该填写的值,但使ARP 缓存中网关所对应的MAC 地址发生了改变。所以产生假冒网关欺骗的ARP 应答帧中,仅需在保证目标主机能接收

相关文档