arp欺骗超详细过程Word下载.docx
- 文档编号:17966709
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:12
- 大小:1.29MB
arp欺骗超详细过程Word下载.docx
《arp欺骗超详细过程Word下载.docx》由会员分享,可在线阅读,更多相关《arp欺骗超详细过程Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
从[EthernetHeader]可以看出,ARP请求的目标地址是全F,也就是广播地址;
因为在请求之前,本PC不知道对方的MAC地址,为了确保ARPRequest能够让对方收到,以广播形式方式是很自然的选择。
在[ARP]中可以看到,发送的源IP和源MAC都是本PC的网卡设置值,这是已知参数;
目的IP地址是我要请求的地址,而目的MAC地址是全0,用于表示本PC不知道该参数,暂时忽略/ignore。
网关设备在收到ARPRequest之后,会首先读取Sender的IP和MAC地址,并在存入自己的缓冲中,以备后用。
因为ARP请求毕竟是广播性质的,如果每次通讯都要完成一个ARP的流程,对于以太网的压力是非常巨大的,为了尽可能减少这种广播的负面影响,这里引入了缓冲机制,这就是ARPTable。
ARPResponse又是怎样回应的呢?
先看[EthernetHeader],可以看到以太网目的MAC地址为PC的MAC地址,因为网关设备只要把回应的信息发送给请求者即可,局域网内的其他主机是没有必要同步知道的,这很好理解。
在[ARP]中,网关设备把自己的MAC地址填充在ARPResponse中,发送给原请求者。
当然收到ARPResponse之后也会把这个ARP信息缓存下来,这样一个ARP的过程就完成了。
从中可以看出,无论是哪方先发起ARPRequest,最终双方都会得到对方的MAC地址信息的。
这也是处于减少网络上不必要流量的考虑。
2免费ARP
整个ARP的体系里基本上就是由ARPRequest和Response组成的,从上面的描述中,可以看出Request就是告知对方“我要什么”,而Response是回答“我是什么”。
但有些时候也会例外,他们虽然从形式上还是Request和Response的,但它们通常不会不是一问一答的,而是只有其中的一部分,所以通常被称为免费ARP或无为ARP(GratuitousARP)。
从作用而言,它们主要是可以分为两类:
1、以ARPRequest的形式发送广播,请求自己的MAC地址,目的是探测局域网中是否有跟自己IP地址相同的主机,也就是常说的IP冲突,如下:
正常情况下,这样的报文是不会有回复的,如果有,则说明有冲突发生。
2、以ARPResponse的形式发送广播,它通常只是为了把自己的ARP信息通告/更新给局域网全体,这种Response不需要别人请求,是自己主动发送的通告。
报文结构如下。
这两种ARP帧虽然都是广播发送的,但目的不同,从帧结构上来说,前者注重的是TargetInternetAddress,而后者注重的是SenderHardwareAddress和SenderInteernetAddress。
RGNBR系列路由器就采用上述第二种方式来发布自己的免费ARP,来防止网内PC机被其它中毒机器恶意修改其ARPCache中保存的网关正确MAC地址信息;
3触发ARP动作的事件
当然,如果windows的应用需要通过IP与别的IP地址进行通讯,而且本机ARPTable中没有对方的相应cache时,就会触发ARP自动学习。
另外,通过实验观察,我们发现Wind2K/XP在设置/修改IP、网卡禁用/启用、网线拔插、系统重启的时候,都会连续发送三次免费ARPRequest,目的显然是为了判断网络上是否存在IP地址冲突。
对于RGRouters和Layer3Switch来说,如果存在上层IP通讯,那么自然需要触发ARP学习过程,这一点跟windows是完全相同的。
在以太网端口设置/修改IP时,路由器、Layer3Switch会自动发送免费ARPRequest报文来探测是否有IP冲突;
而在端口shut/noshut、端口线缆拔插、系统重启的时候,路由器又会自动发送免费ARPResponse报文,用以把自己的ARP信息通告全体主机。
同时,无论是那种免费ARP,路由器、Layer3Switch都只发送一次。
很显然,windows的ARP触发事件跟路由器、Layer3Switch是有差别的:
1、Windows/PC作为网络上的一个主机,它可能只是跟少数的几个PC进行信息交互,所以它在非必要情况下不(通过免费ARPResponse)把自己的ARP信息广播给所有主机是合理、也是明智的。
路由器、Layer3Switch虽然不直接参与应用层的处理,但它通常是一个局域网的网关,肩负则所有主机的数据转发任务,也就是说几乎所有的主机跟路由器、Layer3Switch之间都会存在ARP交互,与其被动的响应ARP请求,还不如主动的把自己的ARP信息广播给所有主机,这对于降低路由器、Layer3Switch的工作负荷、减少网络带宽占用都是有好处的。
2、从免费ARP报文的发送数量来看,Windows发送的免费ARP都是3次,这有利于确保对方成功收到,同时也有利于减少其他主机的免费ARP干扰;
而RG路由器、Layer3Switch仅仅发送一次,而且任何情况都不再重复,这显然是不够的。
4异常情况下的ARP处理机制
常见的局域网异常状况有:
IP地址冲突、MAC地址冒用、ARP欺骗等,极端情况下还可能IP+MAC同时冒用,下面我们就来具体分析。
4.1IP地址冲突
1、网关Router设置IP成某PC的地址
有些时候,如用户网络使用windows做代理(NAT),现在要用一个路由器、Layer3Switch(IP地址与网关windows相同)来替换当网关;
当两者共存时,就会出现WindowsIP地址与路由器、Layer3Switch冲突的情况。
当然还有其他的可能性。
这里,如果路由器、Layer3Switch是调试完之后接入局域网的,按照前面的描述,RG路由器、Layer3Switch直接发送1个免费ARPResponse,这样就强制局域网内的PC学习到路由器、Layer3SwitchSVI接口的ARP信息,此时原有Windows网关没有任何响应,工作也正常;
但此时局域网内的PC关于网关IP的ARP内容却发生了改变,路由器、Layer3Switch的SVI接口成为了实际意义上的网关。
如果路由器、Layer3Switch是接入局域网之后才开始配置和调试的,那么路由器、Layer3SwitchSVI接口设置IP之后会先发送1个免费ARPRequest报文,探测有无地址冲突,如果有,则强制发送免费ARPResponse;
此时Windows主机提示地址冲突,网卡变为不可用状态,而路由器、Layer3SwitchSVI接口则成为了实际的网关。
2、Windows设置IP成网关路由器、Layer3SwitchSVI的IP地址
在网吧、企业网环境中,上点后,路由器工作正常,局域网中的PC学习到的网关ARP信息就是路由器、Layer3Switch对应端口的IP和MAC;
假设此时内网中有一个WindowsPC修改自己的IP地址,不慎和网关IP冲突,会发生什么呢?
从这个抓包情况看,PC修改IP之后,发送免费ARPRequest,看是否有地址冲突,这显然是有的,从第二个包就可以看出来,RGRouter、Layer3SwitchSVI回复了一个ARPResponse;
此时PC桌面上提示IP地址冲突,网卡处于不正常工作状态,用户一般会修改IP地址再次尝试;
而紧随其后的是,路由器、Layer3Switch发送了1个免费ARPRequest包,用来判断冲突是否继续存在?
当然由于Windows对于网卡的管理,导致冲突自动消失,路由器、Layer3Switch也就不再有后续动作了。
但如果此时冲突继续存在呢?
从上面的实验来看,路由器、Layer3Switch会强制发送1次免费ARPResponse,用以让局域网的主机确认,我才是真正的网关。
显然,应付普通的非恶意的IP地址冲突,路由器、Layer3Switch现行的机制应足够了。
4.2MAC地址冒用
不管是处于什么目的,用户可能通过某种手段重新烧录自己网卡的MAC地址,如果这个地址正好和路由器、Layer3Switch的网关IP相同,会出现什么情况呢?
由于条件的限制,这个实验没有做成,但我们可以分析一下:
根据前面的分析,网络设备是通过发送免费ARPRequest报文,查询自己IP的对应MAC地址来确认是否存在冲突的,在单纯的MAC地址冒用的情况下,上述机制是探测不到任何异常的。
但是当两个设备的MAC地址相同时,最直接的影响就是局域网交换机(通常为二层)的MACTable中,有两个端口学习到的MAC地址是完全相同的,这有点类似环路发生的现象;
但这确实不是环路,因为交换机生成树的BPDU报文不可能从其中的一个端口发出,从另外一个端口收到,所以STP是探测不出什么的,也就是说这两个端口还是会正常工作的。
此时交换机会做的就是,把发往该MAC地址的以太网帧同时发送到两个端口上,以求尽可能的数据丢失;
这看起来有点象“端口镜像”。
看来,单纯的MAC地址冒用/冲突是不会到路由器、Layer3Switch造成什么直接的影响的,不过它会把所有经过网关路由器的流量复制一份到某个特定的端口,如果这个端口连接的某个主机别有所图的话,后果还是很严重的。
不过这属于信息安全的范围了,这里不再详细讨论。
4.3ARP欺骗
ARP自动学习的目的,就是通讯的双方主机互相请求/告知MAC地址,并以此完成二层的以太网帧交换,由于通讯的双向性,很显然如果任何一方的ARP信息是空或者错误的,那么通讯就会失败。
而ARP欺骗的目的就是频繁的发送错误消息欺骗网络通信的任何一方,最终导致不能正常通信。
那么怎样防止ARP欺骗呢?
从根本上说就是双方的IP-MAC地址对应信息要正确,之前我们说过,ARP是自动学习的,是通过ARPRequest和Response报文的交互,由别人告知的,正是这个特性让ARP欺骗有了可乘之机,显然最有效的方法就是不采用“学习”机制,现在很多设备厂商都是这么实现的,但配置静态ARP工作量非常大,后期维护也极不方便,假设局域网内主机数量为N,那么最少要配置的ARP条目有N+(N-1)=2N-1个;
如果N=200,也就是说最后总共要配置400条,这还不算原始IP、MAC地址信息的收集、校对和维护工作。
如果要全网ARP绑定的话,总条目可达N(N-1),那就更惊人了。
是否可以避开静态ARP绑定这种烦琐的方式呢?
对Windows主机是没有办法的;
但我们可以从路由器、Layer3Switch上着手,要回答这个问题,首先要弄清ARP欺骗的具体过程,先看实验拓扑结构:
由于很难找到合适的病毒重现真正的ARP欺骗,我们采用安装聚生网管(也叫Netsense、P2P终结者)来模拟,其实现的基础就是进行ARP欺骗。
在这个环境中,使用路由器作为网关,进行NAT操作,内网中连接两个PC,其中一台安装聚生网管,进行ARP欺骗。
开始时,PC的ARP表中192.168.1.6对应的MAC地址是正确的,然后启动聚生网管,来看看现象:
1、第一阶段,ARPCheater会发送大量ARPRequest来逐个扫描内网中的PC:
正常情况下局域网PC会回应ARPRequest,ARPCheater就是靠这个来确认并收集内网中已经启动的PC的,并在本地形成一个数据库。
2、第二阶段,Cheater就开始进行实质的欺骗了,其过程为就是向真实网关和PC同时发送免费ARPResponse,强行更新其ARPTable。
其中,发送给PC的为:
显然,Cheater强行通告给PC的ARP内容是错误的,因为00-0D-60-8C-0D-C9和192.168.1.6分别是Cheater的MAC地址和路由器的网关IP。
其次,发给网关路由器的为:
在这个信息中,00-00-E2-58-AC-EA和192.168.1.158都是对应的普通PC,是一个正确的信息,Cheater代替PC向网关发送ARP强制更新信息,是为了确保通讯能够正常完成。
欺骗完成之后,局域网中的所有PC都根据错误的ARP信息把数据包发给ARPCheater,Cheater再通过路由器转发到公网真正的服务器上;
当数据包从公网返回到路由器之后,路由器会把数据包直接返回到PC,中间不再经过ARPCheater(如果需要,也可以经过ARPCheater),参阅前面的拓扑结构图。
这样,ARP欺骗就完成了,PC上面关于网关的ARP信息发生了改变;
不过为了“巩固”成果,聚生网管每隔2秒再次进行欺骗。
当然,聚生网管不算是一种病毒、木马或者恶意程序,只是它利用了ARP欺骗,把所有的局域网所有的主机流量都导入的自己的网卡上,籍此,聚生网管就可以进行相应的过滤和限制了。
现在比较流行的窃取密码的木马程序就是按照这个原理来实现的,当然密码只是在用户登陆的时候才输入的,所以木马程序会故意让自己的网卡失效又立刻恢复,此时,内网的用户以为是网络质量不好掉线,接着就是重新登陆、输入密码……
上面两种情况虽然是ARP欺骗,但多数时间网络还是正常运行的;
如果只是要让网络中断,那么ARPCheater只需频繁发送免费ARPResponse即可,当然里面包含的SenderAddress是错误的。
4.4如何应对ARP欺骗?
前面提到,ARP欺骗可能会欺骗网关路由器或者内网的PC,下面我们就分这两种情况来分析一下。
4.4.1避免ARP欺骗PC
要找到应对方法,必须先识别出ARP欺骗的特点:
1、ARP欺骗发生时
无论出于什么目的,ARP欺骗最开始、也是最关键的一步就是通过免费ARPResponse信息,发送错误的网关ARP信息给局域网主机,其方法不外乎两种:
n在本网段首先发送大量的ARPRequest扫描,通过Response报文收集当前活动的主机,随后给每个主机发送免费的ARPResponse;
在这种情况下,路由器只能看到从一个固定的MAC地址发出大量ARP请求广播,而且这个过程可能会周期性重复。
n第二,ARPCheater不需要逐个找局域网的主机IP,它直接冒充网关,通过免费ARPResponse广播通告全网;
在这种情况下,路由器上应该可以观察到免费ARPResponse报文,其SenderInternetAddr信息就是自己的IP地址,而且从上面的实验中可以看到,这种免费ARPResponse广播报文是非常频繁的。
无论是那种情况,其目的都是欺骗PC,路由器虽然可能通过某些特征判断ARP欺骗的发生,但是根本无法制止,因为路由器对该PC是没有控制权的。
2、ARP欺骗发生后
ARP欺骗发生后的情况是怎样呢?
当然是PC的ARP表被篡改了,当然我们可以通过手工方式来清除ARP表项重新学习,但ARP欺骗是不断的重复进行的,人工维护的工作量恐怕远远大于前面说的“静态ARP”,显然可行性为零。
既然手工方式不行,那么自动方式怎么样呢?
跟ARPCheater一样,我们可以考虑让网关路由器或者其他专用主机来发送免费ARP广播,把正确的网关ARP信息通报给全网。
如果网内的ARP欺骗不是很频繁,这种是方法可行;
但如果象聚生网管这样的情况,ARP欺骗为每2秒一次,要让PC的ARP表正确,路由器或专用主机发送的免费ARPResponse广播必须更频繁,即便如此,内网PC的ARP表可能还会处于频繁变动的过程中,导致其正常通讯也会随之而产生丢包情况,同时整个网络上会因此而充满大量的以太网广播,我想这事谁也不愿看到的。
RGRouter的内网口上arpgratuitousintervalxx的配置实际上就是定期向网内发送arpResponse;
综上,可以得出结论,对于内网主机的ARP欺骗,作为路由器本身基本上是无能为力的,至少效果非常有限。
所以在对付ARP欺骗的时候,PC还是乖乖的进行静态ARP绑定措施。
比如在PC机上配置autoexec.bat批处理文件:
@echooff
Arp–d
Arp–s192.168.1.100-d0-0f-23-44-89
使得在PC机上能够静态绑定网关的正确MAC地址,防止网关欺骗;
在RG2126G交换机上可以采用在端口下,anti-arp-spoofingipxxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx是网关地址;
RG2126G将阻止源IP是本网段网关地址的报文从这个端口进入;
达到防止该端口上连接的PC发出对其它PC进行网关欺骗的ARPResponse、ARPRequest报文;
4.4.2避免ARP欺骗路由器
跟PC的情况不同,由于路由器、Layer3Switch是一款三层设备,几乎没有什么上层应用会跟内网主机直接通讯,所以它的ARP表项通常不是主动请求获得的,而是被动学习到的,比如收到ARPRequest或者免费的ARPResponse前者是正常情况,不在我们讨论范围之内;
而后者就是ARPCheater欺骗网关路由器的手段。
还是分为两个阶段来分析:
通常情况下下,ARPCheater是通过单播性质的免费ARPResponse把错误的主机ARP信息强制通告路由器、Layer3Switch的,而且由于内网的主机数量众多,路由器、Layer3Switch每次会收到大量的免费ARPResponse单播报文。
它们的SenderInternetAddr分别是局域网的主机IP地址,但是SenderHardwareAddr却都是ARPCheater的网卡MAC地址。
显然,路由器、Layer3Switch完全可以通过免费ARPResponse报文的特征来确定欺骗是否发生,但当确定的同时,ARP欺骗的结果是已经造成了的。
由于路由器、Layer3Switch的ARP表项是被动学习的,所以在ARP欺骗发生之后,路由器、Layer3Switch必须自己主动的去查询正确的ARP信息,方法恐怕只有一种:
就是根据现有ARP表项中的IP地址列表,强制性的逐一发送ARPRequest,通过对方的Response信息来更新校正自己的ARPTable。
显然这个工作量是很大的。
尤其是在ARPCheater的欺骗非常频繁的时候,路由器、Layer3Switch的ARP“自我校正”机制显得太苍白无力了。
4.5应对ARP欺骗的其他方法
从前面的分析来看,单纯的通过ARP机制本身来防止ARP欺骗,几乎是不可能完成的任务。
那么还有什么方法来避免呢?
4.5.1硬件角度
路由器毕竟是一种三层设备,对于ARP二层协议的支持和处理总是有限的;
我们是否可以从局域网交换机来入手呢?
因为ARP发生之后的结果(错误的ARP信息)是存储在网关路由器和主机中的,跟交换机没有任何关系,所以要通过交换机来处理,重点就是一个字:
“防”。
从前面的分析来看,无论怎样欺骗,其关键的特征就是发送免费ARPResponse报文,而且ARP字段的Sender信息与其自身MAC地址不相符合,如果二层以太网交换机能够进行ARP报文合法性的判断,那么就自然可以进行相应的屏蔽了;
这个技术看起来不是很难事先,但涉及到交换机ASIC芯片的支持和软件功能的增加,其可行性和性价比还需要考证;
同时需要把宽带路由器和交换机作为一个整体推给使用者。
现在锐利网络在网吧等宽带市场中的路由交换一体化解决方案就是基于这个原理的。
这种思路应该可以从源头上解决ARP欺骗的发生,但对于交换机的要求比较高,不仅是功能方面,还同时涉及到性能、稳定性和性价比等特性。
在RG27、29系列交换机上就是从硬件架构上进行设计,使得交换机能够根据报文类型,比如对报文类型Type是0X0806的ARP报文会检查其SourceIP和SourceMAC,根据在该端口上绑定的IP地址与相应的MAC地址来将攻击者的欺骗性ARPResponse过滤掉,从而达到从根源上防止了ARPAttacking的实现;
4.5.2软件角度
单纯的利用ARP特性是解决不了ARP欺骗的问题的,那么在软件上还有什么出路呢?
方法还是有的,可以看一下艾泰的解决方案:
既然ARP欺骗最终影响的是ARP表项的内容,而表中的内容又是动态学习的,所以ARP机制才不安全,那么我为何不摒弃ARP自动学习这种机制呢?
当然我们说的不是进行手工静态ARP绑定。
其具体处理方法是把ARP表项的相关信息放到NAT的表项中一起处理。
原来NAT表项中的主要内容有:
NAT转换前源IP地址、转换前源TCP/UDP端口、转换后源IP地址、转换后TCP/UDP端口、目的IP地址、目的端口等6项信息,而转换前IP地址和MAC地址的对应关系是靠ARP的动态学习机制来实现的。
现在,NAT表项的内容调整为:
NAT转换前源IP地址、转换前源MAC地址、转换前源TCP/UDP端口、转换后源IP地址、转换后TCP/UDP端口、目的IP地址、目的端口等7项信息。
这个新增加的源MAC地址可以不作为NAT判断的依据,其作用是让数据包从公网一侧回到路由器,经过NAT转换之后,能够送回到正确的PC主机。
那么如何才能保证PC主机的数据包不受ARP欺骗的影响,正确的送到路由器呢?
很简单,进行手工的静态ARP绑定。
前面分析过,对于ARP欺骗PC主机的情况,路由器是无能为力的。
这样,PC可以根据静态(正确)的ARP信息把数据包发到网关路由器,路由器在记录必要的信息转存为NATcache的时候,把该以太网帧的源MAC地址也异同记录,写到NATcache中,作为数据包返回时的参考。
这种方式的优点是不用一来交换机,避免ARP的欺骗,但PC主机还是需要进行手工的ARP绑定。
可以说这是“硬件角度”的一种折中方案。
其缺点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arp 欺骗 详细 过程