ARP攻击的分析与防范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发与应用 计算机与信息技术 ·7·
ARP 攻击的分析与防范
吴勇 李祥
(贵州大学 计算机软件与理论研究所,贵州 贵阳 550025)
摘 要 介绍了ARP协议工作原理,分析了ARP协议的弱点,阐述了基于ARP进行网络攻击的主要方式,并给出了应
对措施。提出构造ARP应答包进行ARP欺骗的具体方法。
关键词 ARP协议;ARP欺骗;ICMP重定位;静态ARP表;地址解析;libnet
1 引言
网络上的计算机之间是通过IP地址通信的,但是IP地址是位于网络层的逻辑地址,计算机之间要想真的进行数据交换必须知道它的物理地址,ARP就是将逻辑地址转换成物理地址的一个协议。因此ARP的协议的安全就显的非常重要。现在对ARP攻击最常用的一种方式就是ARP欺骗,在这种攻击方式下,攻击方可以通过伪造ARP请求与应答更新目标主机的ARP缓存从而骗过目标机。使目标机的数据包发给攻击者。攻击者就可以对截获的数据包的内容进行分析破解目标机的信息。
2 ARP 协议
计算机之间主要是通过IP地址通信,IP地址是一个逻辑地址,通过IP地址就可以找到目标网络,但是在一个网络内部的计算机之间进行最终的数据交换时就必须经过物理MAC地址才能识别具体的一台主机,这时我们就需要ARP协议把需要通信的目标主机的IP地址解析为与之对应的硬件物理地址。
2.1 ARP 协议的基本工作原理
一台连入互连网的计算机拥有两个地址。一个是IP地址,它是一个网络层使用的协议并且独立于网络底层。每一台在互联网上的计算机都必须有一个惟一IP地址。IP地址是一个可以通过软件设置的逻辑地址。另一个地址是网卡地址MAC 地址。MAC地址是一个固定在网卡中的全球独一无二的地址。通过MAC地址,以太网就能独立于上层协议收发数据。当两台主机进行通信时,IP数据被封装成以太帧格式的一个个的数据包,这些数据包通过数据链路层进行传送,ARP消息就被封装在以太帧的数据部分。每一台基于TCP/IP协议的主机都有一个ARP缓存表。里面包括硬件类型,硬件地址长度,操作号,源IP地址与MAC地址,目的IP地址与MAC地址。如果一台主机甲要与另一台主机乙进行数据通信,且它们位于一个网段时,它们之间的具体通信过程如下:甲查看自己的ARP缓存表,寻找乙机器的相关信息,如果找到的话,就使用表中与乙的IP地址对应的MAC地址来通信;若查找失败,就会向局域网中发送一个以太网的广播帧,往帧中填充甲主机的IP地址和MAC地址,乙主机的IP地址等字段形成一个ARP请求。此时此网段内的所有机器都会收到此请求,但只有乙主机收到后发现此请求中有自己的IP地址从而作出响应。它先刷新自己的ARP缓存,以便提高以后的通信效率,而后生成一个ARP应答帧将自己的MAC地址填充进去发送给甲主机。甲收到后将乙的ARP信息写入自己的ARP缓存中。若不在同一网段,此过程分为两个阶段,第一阶段甲会广播一个ARP请求来得到本地网关的MAC地址,然后将数据发送到网关。再判断网关与乙是否在同一网段。如果是就进入第二阶段查找IP/MAC,转发数据否则继续广播ARP请求。(如图1) 当一台机器更换了新网卡后,就会通知网内其它主机,使之更新各自的ARP表项使IP地址和新的MAC地址保持一致。因此每台机器在启动时都会发一个以太网广播帧通知其它主机及时更新ARP缓存。
第一阶段 第二阶段
图1 不同网段的ARP攻击
·8· 计算机与信息技术 开发与应用
2.2 ARP协议的弱点
由于ARP缓存表是动态刷新的。根据RFC826规定当主机接收到ARP应答时,主机的ARP表会立刻刷新而无需判断是否事先发过ARP请求。若主机长时间没有收到ARP应答(一般是20分钟)它会自动刷新ARP缓存表,这样可以删掉那些过期的,已经不存在的表项。确保ARP缓存表的正确性。但是这样很容易使主机的ARP缓存表被攻击者修改。使主机的ARP 表项改成攻击者需要的表项。
3 ARP攻击
ARP攻击主要是就基于ARP缓存表的的弱点,攻击者非法篡改目标机ARP缓存表,使目标主机无法正常工作的行为。ARP攻击主要有拒绝服务攻击和ARP欺骗。
3.1 拒绝服务攻击
攻击者可以很容易的将目标主机中IP地址对应的MAC地址改成根本不存在的地址,这样计算机就会往这个根本不存在的地址发送数据包,导致目标机无法接收到数据包,中断了主机与外界网络的通信。
3.2 ARP欺骗
3.2.1 中间人攻击
这种攻击是网络监听的一种方式。攻击者进入两台通信的计算机之间,通过某种手段窃取一台机器给另一台机器发送的数据包,然后将数据包修改再转发给另一台机器,攻击者对这两台计算机来说是透明的。具体过程如下。
假设三台计算机A、B、C。机器C修改A的ARP缓存表,将表中B的IP地址对应的MAC地址改成C的MAC地址。当A给B发送数据时,就使用了B的IP地址与C的MAC地址。使给B 发送的数据全部发给了C。同理修改目标机B的ARP缓存表使A的IP地址对应的MAC地址改成C的MAC地址。最终A与B之间通信的数据就全部经过C,之后C又把数据发给A和B。 3.2.2 克隆攻击
克隆攻击是另外一种ARP欺骗的方式。现在我们已经可以通过硬件或软件工具来修改网络接口的MAC地址,Linux 用户甚至只需要用ifconfig命令修改一个参数就能修改。攻击者通过拒绝服务攻击使目标主机与外界失去联系,然后攻击者将自己的IP和MAC地址改成目标机的IP和MAC地址,这样攻击者的主机就成为和目标机一样的副本。
4 ARP欺骗的防范措施
4.1 MAC地址绑定
MAC地址与交换机绑定。一台高质量的交换机往往有一个功能就是不允许修改与交换机某个端口绑定的MAC地址。当确实需要修改时,只能被网络管理者修改。
4.2 静态缓存表
将ARP缓存表设置成静态,不允许其自动刷新。网络管理员负责对网络上的每台机器进行登记,记录每台机器的IP/MAC。这样在发送一个与ARP静态缓存不一致的请求时目标机将不予理睬。但这种方法不适合于大型的网络,它需要定期维护ARP表,给管理员造成很大的负担。
4.3 RARP
RARP即地址反转协议。RARP协议用于知道一个MAC地址确定它的IP地址。在一个网络内部,主机向网内的所有计算机发送一个RARP请求,这时若一个MAC地址收到多个IP 地址,就说明拥有该MAC地址的机器受到克隆攻击。
4.4 ARPWATCH
ARPWATCH 是一款用于查看IP地址与其对应的物理地址之间变化的软件。在用户启动时,ARP就收集本地网络上所有机器的ARP包并生成一个数据库文件来存储MAC/IP。
当开始运行时就会开始监听网络,将捕获的数据包与数据库中的内容进行比较,如果不一样的话就会发出一份EMAL警告,同时记录现场用来帮助追踪追击者的来源。因此当有一个ARP欺骗发生时,当攻击者试图修改ARP表时ARPWATCH就会发现,并记录下来并发E-mail通网络管理员使其采取相应措施。
5 利用Libnet开发包构造ARP欺骗应答数据包 5.1 ARP报文格式
ARP的报文格式如图2所示。
硬件地址类型 协议地址类型硬件地址长度 逻辑地址长度 操作
发送端硬件地址
发送端硬件地址 发送端IP地址
发送端IP地址 目标硬件地址
目标硬件地址
目标IP地址
图2 ARP的报文格式
图2中每行对应ARP消息32位。前两个16位字段的值用于指定协议地址和硬件地址的类型。例如,当ARP在以太网上时,硬件地址类型字段的值为1,当ARP用在IP地址上时,协议地址字段的值就为0X0800。硬件地址长度和逻辑地址长度,用于指定硬件地址和协议地址中的字节数。操作字段用于指定该消息是请求(值为1)消息还是应答(值为2)消息。
5.2 使用Libnet构造ARP应答数据包
Libnet是一个专业网络数据包构造和开发包。它是一个高层次的API函数库,允许开发者构造和发送网络数据包。Libnet提供了一个对底层网络数据包进行构造,修改和发送的高级接口。Libnet主要提供了在IP层和链路层构造网络数据包的功能和一些非常有用的辅助功能。
构造ARP数据包的步骤如下:
(1)利用函数libnet_init()进行初始化操作。因为ARP协议是在网络层,所以必须先构造ARP协议块,也就是用函数libnet_build_arp()来构造ARP协议块。
(2)利用函数libnet_autobuld_Ethernet() 或
libnet_build_Ethernet() 来构造以太网协议块。
(3)利用libnet_write()发送数据包。