科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道ARP欺骗的原理、危害及几种解决方式

ARP欺骗的原理、危害及几种解决方式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在局域网中,是通过ARP协议来完成IP地址转换为第二层物理地址的。ARP协议对网络安全具有极其重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。

作者:zdnet安全频道 来源:论坛整理 2008年6月21日

关键字: 攻击 ARP欺骗

  • 评论
  • 分享微博
  • 分享邮件
ARP原理

在局域网中,是通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的。ARP协议对网络安全具有极其重要的意义。通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞。
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。

主机 IP地址 MAC地址
A 192.168.1.1 aa-aa-aa-aa-aa-00
B 192.168.1.2 bb-bb-bb-bb-bb-11
C 192.168.1.3 cc-cc-cc-cc-cc-22
D 192.168.1.4 dd-dd-dd-dd-dd-33

  我们以主机A(192.168.1.1)向主机B(192.168.1.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.2的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.16.2的MAC地址是bb-bb-bb-bb-bb-11”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。

  从上面可以看出,ARP协议的基础就是信任局域网内所有的人,那么就很容易实现在以太网上的ARP欺骗。

出现ARP欺骗攻击时的现象


1、网上银行、游戏及QQ账号的频繁丢失
  一些人为了获取非法利益,利用ARP欺骗程序在网内进行非法活动,此类程序的主要目的在于破解账号登陆时的加密解密算法,通过截取局域网中的数据包,然后以分析数据通讯协议的方法截获用户的信息。运行这类木马病毒,就可以获得整个局域网中上网用户账号的详细信息并盗取。

2、网速时快时慢,极其不稳定,但单机进行光纤数据测试时一切正常
  当局域内的某台计算机被ARP的欺骗程序非法侵入后,它就会持续地向网内所有的计算机及网络设备发送大量的非法ARP欺骗数据包,阻塞网络通道,造成网络设备的承载过重,导致网络的通讯质量不稳定。

3、局域网内频繁性区域或整体掉线,重启计算机或网络设备后恢复正常
  当带有ARP欺骗程序的计算机在网内进行通讯时,就会导致频繁掉线,出现此类问题后重启计算机或禁用网卡会暂时解决问题,但掉线情况还会发生。


ARP欺骗攻击的原理

  一个入侵者想非法进入某台计算机,他知道这台主机的防火墙只对192.0.0.3(假设)这个IP开放23口(telnet),而他必须要使用telnet来进入这台主机,所以他要这么做:
1、他先研究192.0.0.3这台计算机,发现这台95的机器使用一个oob就可以让他死掉。
2、于是,他送一个洪水包给192.0.0.3的139口,于是,该机器应包而死。
3、这时,主机发到192.0.0.3的IP包将无法被机器应答,系统开始更新自己的arp对应列表。将192.0.0.3的项目除去。
4、这段时间里,入侵者把自己的IP改成192.0.0.3
5、他发一个ping(ICMP 0)给主机,要求主机更新主机的arp转换列表。
6、主机找到该IP,然后在arp列表中加入新的IP-->MAC对应关系。
7、防火墙失效了,入侵的IP变成合法的MAC地址,可以telnet了。
  现在,假如该主机不只提供telnet,它还提供r命令(rsh,rcopy,rlogin等)那么,所有的安全约定将无效,入侵者可以放心的使用这台主机的资源而不用担心被记录什么。
  有人也许会说,这其实就是冒用IP嘛。是冒用了IP,但决不是IP欺骗,IP欺骗的原理比这要复杂的多,实现的机理也完全不一样。
  上面就是一个ARP的欺骗过程,这是在同网段发生的情况。但是,提醒注意的是,利用交换集线器或网桥是无法阻止ARP欺骗的,只有路由分段是有效的阻止手段。(也就.是IP包必须经过路由转发。在有路由转发的情况下,ARP欺骗如配合ICMP欺骗将对网络造成极大的危害。从某种角度讲,入侵者可以跨过路由监听网络中任何两点的通讯,如果设置防火墙,请注意防火墙有没有提示过类似“某某IP是局域IP但从某某路由来”等这样的信息。
  在有路由转发的情况下,发送到达路由的IP的主机其arp对应表中,IP的对应值是路由的MAC。
  比如: 我pingwww.xxxx.com后,那么在我的计算机中,www. xxxx.com的IP对应项不是xxxx的MAC,而是我路由的MAC,其IP也是我路由的IP。(有些网络软件通过交换路由ARP可以得到远程IP的MAC)。
有兴趣做深入一步的朋友可以考虑这样一种情况:
  假设这个入侵者突然想到:我要经过一个路由才可以走到那台有防火墙的主机!!!
  于是这个入侵者开始思考:
1、我的机器可以进入那个网段,但是,不是用192.0.0.3的IP。
2、如果我用那个IP,就.算那台正版192.0.0.3的机器死了,那个网络里的机器也不会把IP包丢到路由传给我。
3、所以,我要骗主机把IP包丢到路由。
  通过多种欺骗手法可以达到这个目的。所以他开始这样做:
1、为了使自己发出的非法IP包能在网络上活久一点,开始修改ttl为下面的过程中可能带来的问题做准备。他把ttl改成255。 (ttl定义一个IP包,如果在网络上到不了主机后在网络上能存活的时间,改长一点在本例中有利于做充足的广播)
2、他掏出一张软盘,这张软盘中有他以前用sniffer时保存的各种IP包类型。
3、他用一个合法的IP进入网络,然后和上面一样,发个洪水包让正版的192.0.0.3死掉,然后他用192.0.0.3进入网络。
4、在该网络的主机找不到原来的192.0.0.3的MAC后,将更新自己的ARP对应表。于是他赶紧修改软盘中的有关ARP广播包的数据,然后对网络广播说"能响应IP为192.0.0.3的MAC是我"。
5、好了,现在每台主机都知道了,一个新的MAC地址对应IP 192.0.0.3,一个ARP欺骗完成了,但是,每台计算机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的IP包丢给路由。于是他还得构造一个ICMP的重定向广播。
6、他开始再修改软盘中的有关ICMP广播包的数据,然后发送这个包,告诉网络中的主机:“到192.0.0.3的路由最短路径不是局域网,而是路由。请计算机重定向你们的路由路径,把所有到192.0.0.3的IP包丢给路由哦。”
7、计算机接受到这个合理的ICMP重定向后,于是修改自己的路由路径,把对192.0.0.3 的IP通讯都丢给路由器。
8、入侵者终于可以在路由外收到来自路由内的主机的IP包了,他可以开始telnet到主机的23口,用IP 192.0.0.3。
注意,这只是一个典型的例子,在实际操作中要考虑的问题还不只这些。
现在想想,如果他要用的是Sniffer会怎样? 可见,利用ARP欺骗,一个入侵者可以:
1、利用基于IP的安全性.不足,冒用一个合法IP来进入主机。
2、逃过基于IP的许多程序的安全检查,如NSF,R系列命令等。
他甚至可以栽赃嫁祸给某人,让他跳进黄河也洗不清!

ARP欺骗的危害

作为一名网络管理员,应该明确的知道网络中的ARP列表,收集ARP列表信息。或者,为每台机器手工绑定IP地址,不允许客户机随意更改IP地址,将每台机器的 IP --> MAC 信息保存为文件。
MAC地址:通过一些方法可以使网卡的MAC地址发生改变。所以不允许修改网卡的MAC地址。
IP地址与主机相对应。
xxxx_001 为系统保留,通常就是网关了。IP地址为xxx.xxx.xxx.1
例如:xxxx_002 这台主机的IP地址为局域网地址 xxx.xxx.xxx.2

ARPtable
主机名 部门 IP地址 C地址
xxxx_002-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_003-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_004-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_005-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_006-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_007-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_008-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_009-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_011-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_012-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx
xxxx_013-xxx.xxx.xxx.xxx-xx-xx-xx-xx-xx-xx

ARP协议:

#### 源IP地址 --> 源MAC地址 ##### 将源IP地址解析为源MAC地址
#### 目标IP地址 --> 目标MAC地址 #### 将目标IP地址解析为目标MAC地址

RARP协议:

#### 源MAC地址 --> 源IP地址 #### 将源MAC地址解析为源IP地址
#### 目标MAC地址 --> 目标IP地址 #### 将目标MAC地址解析为目标IP地址

ARP攻击检测:

#ARP–a
查看本机ARP缓存 ,正常情况下第一栏打印本机IP地址,第二栏返回当前网关的IP地址和MAC地址。
正常模式:网络中只有一个网关,客户机ARP缓存只有一条ARP记录,并且这条记录是当前网关的IP --> MAC 的映射。

混杂模式:当ARP缓存中有多条IP -->MAC 的记录,说明当.前为混杂模式,网的网关不是唯一的。

排除:在 SuSE Linux 系统中,如果使用ping命令ping网络中的另一台主机,再用ARP-a 的命令查看本机ARP缓存会多出一条ARP记录。这条记录的源IP地址就是刚才ping的那台.主机的IP地址,源MAC地址就是刚才ping的那台主机的MAC址址。

获取网络中的ARP信息:使用ping命令ping网络中的另一台主机,然后再使用ARP-a 或者是ARP-na 的命令可以查看到刚才ping的那台网络中的主机的 IP和MAC地址的映射关系。注意,使用此方法获得的ARP信息不代表网.络一定为混杂模式。如果网关路由工作正常,且有合法的公网地址

sled10:~ #ARP-na
(192.168.1.241) at 00:01:01:02:02:39 [ether] on eth0
(192.168.1.150) at 00:E0:4C:3A:1D:BC [ether] on eth0
(192.168.1.1) at 00:14:78:A1:7F:78 [ether] on eth0
sled10:~ #

能够访问广域网的情况下:
使用ping命令ping广域网上的一个域名

> 正常的现象 :
# pingwww.qq.com

# pingwww.baidu.com

# pingwww.yahoo.com
sled10:~ # pingwww.yahoo.com
PINGwww.yahoo-ht2.akadns.net(209.131.36.158) 56(84) bytes of data.
64 bytes from f1.www.vip.sp1.yahoo.com(209.131.36.158): ICMP_seq=1 ttl=51 time=1183 ms
64 bytes from f1.www.vip.sp1.yahoo.com(209.131.36.158): ICMP_seq=2 ttl=51 time=1458 ms
64 bytes from f1.www.vip.sp1.yahoo.com(209.131.36.158): ICMP_seq=3 ttl=51 time=1287 ms
64 bytes from f1.www.vip.sp1.yahoo.com(209.131.36.158): ICMP_seq=4 ttl=51 time=1185 ms
64 bytes from f1.www.vip.sp1.yahoo.com(209.131.36.158): ICMP_seq=5 ttl=51 time=934 ms

> 非正常情况:
分析ARP欺骗的原理
sled10:~ # pingwww.qq.com
PINGwww.qq.com(61.172.240.44) 56(84) bytes of data.
From 192.168.1.241: ICMP_seq=237 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 61.172.240.45: ICMP_seq=237 ttl=53 time=25.6 ms
From 192.168.1.241: ICMP_seq=238 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 61.172.240.45: ICMP_seq=238 ttl=53 time=25.3 ms
From 192.168.1.241: ICMP_seq=239 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 61.172.240.45: ICMP_seq=239 ttl=53 time=25.6 ms
From 192.168.1.241: ICMP_seq=240 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 61.172.240.45: ICMP_seq=240 ttl=53 time=25.8 ms
From 192.168.1.241: ICMP_seq=241 Redirect Host(New nexthop: 192.168.1.1)
64 bytes from 61.172.240.45: ICMP_seq=241 ttl=53 time=26.0 ms
From 192.168.1.241: ICMP_seq=242 Redirect Host(New nexthop: 192.168.1.1)

From 192.168.1.241: ICMP_seq=240 Redirect Host(New nexthop: 192.168.1.1)
上面的 pingwww.qq.com后,从局域网的192.168.1.241返回一条ICMP包。
>>>
64 bytes from 61.172.240.45: ICMP_seq=239 ttl=53 time=25.6 ms
接着,从广域网返回一条ICMP包。

注意,正常的的情况下ping广域网的域名或IP地址应该只会收到广域网地址返回的ICMP包。
同时反覆的高频率的从局域网的一台主机返回的ICMP包属于非正常的情况。
.......................................................................................................
From 192.168.1.241: ICMP_seq=240 Redirect Host(New nexthop: 192.168.1.1)

Redirect: [ 'ri:di'rekt ]

a. 再直.接的
v. 重新传入,重新寄送

英英解释:
动词redirect:

注意!!
上面的英文解释是 “再连接的” ,也就是说每次ping广域网的一个域名都会先收到这个局域网内的机器的ICMP包。
这个ICMP包是 “再连接的”,也就是说不是始终连接的。只有当有网络请求时才会 “再次连接”,而不需要访问网络时就断开了连接或者说连接不起作用。每次访问网络都需要和这台局域网中的机器连接,每发送一个ping包到广域网的一个域名(主机)都要通过这台局域网中的主机,每收到广域网的一个域(地址)的ICMP包之前都必须通过这台局.域网中的机器。都要通过这台局域网中的主机。那么这台主机就相当于网关了。但是,实际的网关并不是这台主机。
正常工作的网关,不会出出如此高频率的 “重新传入” 、 “再次连接” 。
合理的解释:本机的ARP缓.存正在被高频率的刷新。
造成本机的ARP缓存高频率刷新的原因就在于局域网中的这台主机使用了不断的高频率.的向局域网中发送ARP包,不断的高频率的向网络中的机器告白:“大家好!我就是网关,你们跟着我就能够有吃有喝了。”

传统的几种解决ARP问题的方式

方案一:
过滤局域网的IP,关闭高.危险的端口,关闭共享。升级系统补丁,升级杀毒软件。
安装防火墙,设置防ARP的选项。
微软ISA防火墙功能强大,可是很占系统资源。
配置服务器是Linux的强项,当然能阻止部分ARP危害网络。但是从根本上并没有解决掉ARP的问题,长时间超负荷运转对硬件的损害也显而易见。

方案二:
发现乱发ARP包的主机后,即通过路由器、硬件防火墙等设备在网关上阻止与其它主机通信。迅速找到主机,断开其网络连接。检查机器是因为病毒木马发送ARP包破坏网络环境,还是人为的使用ARP的网络管理软件。既然是使用的网络管理软件,先得询问使用者是否有管理网络的特权。既然没有特权又为何管理、控制网络呢?

方案三:
通过高档路由器进行双向绑定,即从路由器.方面对从属客户机IP-MAC地址进行绑定,同时从客户机方面对路由器进行IP-MAC地址绑定,双向绑定让IP不容易被欺骗。这.种方案的实施比较烦琐,在客户机器或路由器更改硬件时,需要对全网进行重新的MAC地址扫描并重新绑定,工作量巨大。所取得的效果,仅仅可以防御住一些低端的ARP欺骗,对于攻击型ARP软件则无任何作用。

方案四:
使用ARP防护软件,针对ARP欺骗攻击的软件在网络中很多,但具体的效果却一.直不理想。多数软件单单针对ARP欺骗攻击的某一方面特性进行制作抵御软件的原理,并没有从根本上去考虑ARP欺骗攻击的产生与传播方式。所以,这些软件在ARP防范领域影响甚微。

针对上述几种常见的传统防范ARP的方法,都有各自的优点,但是也都曝漏了其局限性,并不都可以完全解决ARP欺骗攻击。网络中多台主机同时高频率的发送ARP广播,会很轻易的造成网络瘫痪、路由器死机,使其它主机.响应迟缓,甚至造成系统停止响应(假死)。如果是ARP木马,还会进行传播,同时感染其它网络中的.其它主机,产生众多主机同时中毒的现象。

附两个小工具软件:
1.防ARP欺骗攻击工具(354 K)http://www.xtzj.com/read-htm-tid-68970-keyword-arp.html

2.ARP保护软件ArpFix(434 K)http://www.xtzj.com/read-htm-tid-114589-keyword-arp.html

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章