狄明远
摘要:校园网目前越来越普及,随之而来也出现了很多问题,arp问题已经出现在了许多学校网络中,本文对何为arp攻击进行了简要的论述,并提出了相应的解决办法。
关键词:arp 欺骗 攻击
中图分类号:TP393.04文献标识码:A 文章编号:1006-8937(2009)03-0073-02
最近一段时间,很多校园局域网内的主机出现频繁断网的现象,引起这种现象的主要原因是局域网内部存在ARP 欺骗攻击。以下笔者就针对这种攻击的原理和防范方法进行了简单介绍。
1 ARP 协议的定义
要想了解ARP 欺骗攻击的原理,首先就要了解什么是ARP 协议,ARP(Address Resolution Protocol)是地址解析协议,是一种将IP地址转化成物理地址的协议。从IP地址到物理地址的映射有两种方式:表格方式和非表格方式。ARP具体说来就是将网络层(IP层,也就是相当于OSI的第三层)地址解析为数据连接层(MAC层,也就是相当于OSI的第二层)的MAC地址。
我们知道,二层的以太网交换设备并不能识别32位的IP地址,它们是以48位以太网地址(就是我们常说的MAC地址)传输以太网数据包的。因此IP地址与MAC地址之间就必须存在一种对应关系,而ARP协议就是用来确定这种对应关系的协议。
ARP工作时,首先请求主机发送出一个含有所希望到达的IP地址的以太网广播数据包,然后目标IP的所有者会以一个含有IP和MAC地址对的数据包应答请求主机。这样请求主机就能获得要到达的IP地址对应的MAC地址,同时请求主机会将这个地址对放入自己的ARP表缓存起来,以节约不必要的ARP通信。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用(Windows系统这个时间为2分钟,而Cisco路由器的这个时间为5分钟),就会被删除。通过下面的例子我们可以很清楚地看出ARP的工作机制。
假定有如下五个IP地址的主机或者网络设备,它们分别是:
假如主机A要与主机B通信,它首先会检查自己的ARP缓存中是否有192.168.1.3 这个地址对应的MAC地址,如果没有
它就会向局域网的广播地址发送ARP 请求包,大致的意思是192.168.1.3的MAC地址是什么请告诉192.168.1.2,而广播地址会把这个请求包广播给局域网内的所有主机,但是只有192.168.1.3 这台主机才会响应这个请求包,它会回应192.168.1.2一个ARP包,大致的意思是192.168.1.3的MAC 地址是02-02-02-02-02-02。这样的话主机A 就得到了主机B 的MAC 地址,并且它会把这个对应的关系存在自己的ARP缓存表中。之后主机A与主机B之间的通信就依靠两者缓存表里的MAC地址来通信了,直到通信停止后2分钟,这个对应关系才会从表中被删除。
再来看一个非局域网内部的通信过程。假如主机A需要和主机D进行通信,它首先会发现这个主机D的IP 地址并不是自己同一个网段内的,因此需要通过网关来转发,这样的话它会检查自己的ARP缓存表里是否有网关192.168.1.1 对应的MAC地址,如果没有就通过ARP请求获得,如果有就直接与网关通信,然后再由网关C通过路由将数据包送到网关E,网关E 收到这个数据包后发现是送给主机D(10.1.1.2)的,它就会检查自己的ARP缓存,看看里面是否有10.1.1.2 对应的MAC地址,如果没有就使用ARP协议获得,如果有就是用该MAC地址与主机D通信。
2 ARP欺骗的含义
通过上面的例子我们知道,在以太局域网内数据包传输依靠的是MAC地址,IP地址与MAC对应的关系依靠ARP表,每台主机(包括网关)都有一个ARP缓存表。在正常情况下这个缓存表能够有效保证数据传输的一对一性,像主机B之类的是无法截获A与D之间的通信信息的。
但是主机在实现ARP缓存表的机制中存在一个不完善的地方,当主机收到一个ARP的应答包后,它并不会去验证自己是否发送过这个ARP请求,而是直接将应答包里的MAC地址与IP对应的关系替换掉原有的ARP缓存表里的相应信息。这就导致主机B截取主机A主机D之间的数据通信成为可能。
首先主机B向主机A发送一个ARP应答包说192.168.1.1 的MAC地址是02-02-02-02-02-02,主机A收到这个包后并没有去验证包的真实性而是直接将自己ARP列表中的192.168.1.1的MAC地址替换成02-02-02-02-02-02,02,同时主机B向网关C 发送一个ARP 响应包说192.168.1.2 的MAC 是02-02-02-02-02-02,同样,网关C 也没有去验证这个包的真实性就把自己ARP 表中的192.168.1.2 的MAC地址(下转第95页)(上接第73页)替换成02-02-02-02-02-02。当主机A 想要与主机D 通信时,它直接把应该发送给网关192.168.1.1 的数据包发送到02-02-02-02-02-02 这个MAC 地址,也就是发给了主机B,主机B 在收到这个包后经过修改再转发给真正的网关C,当从主机D返回的数据包到达网关C后,网关也使用自己ARP表中的MAC,将发往192.168.1.2 这个IP 地址的数据发往02-02-02-02-02-02 这个MAC 地址也就是主机B,主机B 在收到这个包后再转发给主机A完成一次完整的数据通信,这样就成功地实现了一次A R P 欺骗攻击。
因此简单点说,ARP 欺骗的目的就是为了实现全交换环境下的数据监听。大部分的木马或病毒使用ARP 欺骗攻击也是为了达到这个目的。
3 如何发现及清除
局域网内一旦有ARP 的攻击存在,会欺骗局域网内所有主机和网关,让所有上网的流量必须经过A R P 攻击者控制的主机。其他用户原来直接通过网关上网,现在却转由通过被控主机转发上网。由于被控主机性能和程序性能的影响,这种转发并不会非常流畅,因此就会导致用户上网的速度变慢甚至频繁断线。另外ARP 欺骗需要不停地发送ARP 应答包,会造成网络拥塞。
一旦怀疑有ARP 攻击我们就可以使用抓包工具来抓包,如果发现网内存在大量ARP 应答包,并且将所有的IP 地址都指向同一个M A C 地址,那么就说明存在A R P欺骗攻击,并且这个MAC 地址就是用来进行A R P 欺骗攻击的主机M A C 地址,我们可以查出它对应的真实IP 地址,从而采取相应的控制措施。另外,我们也可以到路由器或者网关交换机上查看IP 地址与M A C地址的对应表,如果发现某一个MAC 对应了大量的IP 地址,那么也说明存在ARP 欺骗攻击,同时通过这个MAC 地址查出用来ARP 欺骗攻击的主机在交换机上所对应的物理端口,从而进行控制。
4 如何防范
我们可以采取以下措施防范ARP 欺骗。
第一,在客户端使用arp命令绑定网关的真实M A C 地址命令如下:
arp (先清除错误的ARP表)
arp 192.168.1.1 03-03-03-03-03-03 (静态指定网关的MAC 地址)
第二,在交换机上做端口与MAC 地址的静态绑定。
第三,在路由器上做IP 地址与MAC 地址的静态绑定。
第四,使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IPMA C 映射表。
第五,最主要是要提高用户的安全意识,养成良好的安全习惯,包括:及时安装系统补丁程序;为系统设置强壮的密码;安装防火墙;安装有效的杀毒软件并及时升级病毒库;不主动进行网络攻击,不随便运行不受信任的软件。