解决ARP欺骗导致小区用户无法上网

2008/12/3 来源:www.arpun.com 作者:小白

近日某小区有用户反映上网经常出现掉线现象, 而当工程人员上门检修时并未发现用户所说的故障现象。 后来几天内又多次接到该用户电话反映故障, 同时陆续接到该小区其他用户反映有同类故障出现, 这时感觉到了事态的严重性。

该小区有一百余户住户, 采用光纤+五类线入户方式开通宽带上网, 一直比较正常, 日常问题均是线路故障或用户操作引起的问题。 这次出现的问题影响到该小区的大部分用户, 故障出现的时间无任何规律性, 并且往往又能自动恢复正常。

并非病毒所致

因为有多个用户反映出现该故障, 可以排除用户的线路和机器故障的原因, 根据以往经验怀疑是某用户机器中毒, 开机后病毒发作发送大量数据包导致局域网通信拥塞使得用户掉线。 于是我们将一台电脑安装上Sniffer软件后接入小区局域网, 试图找出中毒机器。 经过长时间观测, 并未发现有任何机器的连接数或发出的数据包异常增多, 可仍有用户在我们观测时反映有掉线现象。

查找IP地址冲突点

我们分别更换了位于小区第一级的光纤收发器和交换机, 问题仍没有得到解决。 既然小区局域网没有发现问题, 我们将目光转向了位于机房内的汇聚交换机, 怀疑接入该小区的端口性能不良, 准备更换端口。 该小区接在一台huawei-s3526的16号端口上, 登录到交换机上以后, 看到出现下面一些提示信息:

 

%1/15/2006 18:32:30-SYSM-5-IP COLLISION:Rcv src IP 10.4.1.50 arped 

00-00-6a-60-78-a3 By 00-03-47-52-43-10 resided in port 16

%1/15/2006 18:32:32-SYSM-5-IP COLLISION:Rcv src IP 10.4.1.42 arped

00-00-93-64-48-d2 By 00-03-47-52-43-10 resided in port 16

……

%1/15/2006 18:32:35-SYSM-5-IP COLLISION:Rcv src IP 10.4.1.26 arped

00-00-34-3d-20-65 By 00-03-47-52-43-10 resided in port 16

信息中提示出现IP地址冲突, 显示的端口号正是该小区的接入端口。 莫非问题的结症在这里?仔细观察, 发现所有提示均表示一个MAC地址为00-03-47-52-43-10的机器与其他机器在IP地址与MAC地址转换的过程中发生了冲突, 即所有IP地址均被改成了与00-03-47-52-43-10地址相对应。 因为该小区用户采用的是DHCP方式分配IP地址, 通过认证计费系统查找MAC地址为00-03-47-52-43-10的用户, 到该用户家与用户进行沟通, 该用户反映从未手动更改过IP地址, 上网一直很正常, 日常使用中也未感觉到机器有何异样。

我们在其机器上用Netstat等命令查看, 也未发现有任何异常连接或过多连接, 不同于一般机器中毒状况。 后经与用户协商断开该用户与楼栋交换机的连接, 长时间观察, 小区不再有用户反映掉线, 看来掉线的确是由该用户引起的。

木马欺骗ARP缓存表

该现象应该是软件方面的问题。 将该用户机器硬盘拆下, 挂接到另外一台机器上进行扫描杀毒, 发现存在十余种病毒, 通过查找资料, 最终发现肇事者是一个隐藏在外挂中的木马程序。 通常来说, 木马程序仅仅窃取用户的信息, 而这个木马为何会导致其他用户掉线呢?

我们知道, 用户访问因特网的数据包必须通过多次路由才能到达目的服务器, 目的服务器返回用户的数据包也必须通过多次路由才能回到用户端。 数据包路由的第一步是用户机器上填写的默认网关, 如果网关出现问题, 那么用户是无法上网的。 默认网关填写的是IP地址, 而用户机器与网关通信时采用的是MAC地址, 问题就发生在这里。

我们先了解一下ARP协议。

ARP协议是“Address Resoluti

on Protocol”(地址解析协议)的缩写, 在局域网中, 网络中实际传输的是“帧”, 帧里面有目标主机的MAC地址。 在以太网中, 一个主机要和另一个主机进行直接通信, 必须要知道目标主机的MAC地址。 但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。 所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 ARP协议的基本功能就是通过目标设备的IP地址, 查询目标设备的MAC地址, 以保证通信的顺利进行。

采用以太网方式接入上网的电脑里都有一个ARP缓存表(见表1), 表里的IP地址与MAC地址是一一对应的。

表1 ARP缓存表

 

主机

IP地址

MAC地址

主机

网关

192.168.16.254

xx-xx-xx-xx-xx-xx

网关

A

192.168.16.1

aa-aa-aa-aa-aa-aa

A

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

仔细观察, 发现所有提示均表示一个MAC地址为00-03-47-52-43-10的机器与其他机器在IP地址与MAC地址转换的过程中发生了冲突, 即所有IP地址均被改成了与00-03-47-52-43-10地址相对应。 因为该小区用户采用的是DHCP方式分配IP地址, 通过认证计费系统查找MAC地址为00-03-47-52-43-10的用户, 到该用户家与用户进行沟通, 该用户反映从未手动更改过IP地址, 上网一直很正常, 日常使用中也未感觉到机器有何异样。

我们在其机器上用Netstat等命令查看, 也未发现有任何异常连接或过多连接, 不同于一般机器中毒状况。 后经与用户协商断开该用户与楼栋交换机的连接, 长时间观察, 小区不再有用户反映掉线, 看来掉线的确是由该用户引起的。

木马欺骗ARP缓存表

该现象应该是软件方面的问题。 将该用户机器硬盘拆下, 挂接到另外一台机器上进行扫描杀毒, 发现存在十余种病毒, 通过查找资料, 最终发现肇事者是一个隐藏在外挂中的木马程序。 通常来说, 木马程序仅仅窃取用户的信息, 而这个木马为何会导致其他用户掉线呢?

我们知道, 用户访问因特网的数据包必须通过多次路由才能到达目的服务器, 目的服务器返回用户的数据包也必须通过多次路由才能回到用户端。 数据包路由的第一步是用户机器上填写的默认网关, 如果网关出现问题, 那么用户是无法上网的。 默认网关填写的是IP地址, 而用户机器与网关通信时采用的是MAC地址, 问题就发生在这里。

我们先了解一下ARP协议。

ARP协议是“Address Resoluti

on Protocol”(地址解析协议)的缩写, 在局域网中, 网络中实际传输的是“帧”, 帧里面有目标主机的MAC地址。 在以太网中, 一个主机要和另一个主机进行直接通信, 必须要知道目标主机的MAC地址。 但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。 所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 ARP协议的基本功能就是通过目标设备的IP地址, 查询目标设备的MAC地址, 以保证通信的顺利进行。

采用以太网方式接入上网的电脑里都有一个ARP缓存表(见表1), 表里的IP地址与MAC地址是一一对应的。

表1 ARP缓存表

 

主机

IP地址

MAC地址

主机

网关

192.168.16.254

xx-xx-xx-xx-xx-xx

网关

A

192.168.16.1

aa-aa-aa-aa-aa-aa

A

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

 

网友评论
评论(...
全部评论