内网安全_arp的攻击与防御
(本文图片和斜体内容来源于互联网,其他均为原创,转载引用请注明出处,qa.taobao.com )
之前写过一篇小分享,现在沉淀一下,本文首先介绍ARP原理,ARP攻击原理与危害,最后给出在内网中的攻击实例以及防御方法。
时间关系,许多内容并没有详细介绍,譬如交换机集线器传输差别,ARP协议字段解释等,需要了解这方面的信息又google不明白的同学可以旺旺联系我,云林。
由于本人水平有限,这段时间都不曾接触网络协议,文中难免错误,敬请各位大侠不吝指教。
ARP原理:
ARP协议(Address Resolution Protocol),或称地址解析协议。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。他是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被icmp v6所替代。 假设局域网内有以下两台主机,主机名、IP地址、MAC地址分别如下:主机名 IP地址 MAC地址
A 192.168.0.1 AA-AA-AA-AA-AA-AA
B 192.168.0.2 BB-BB-BB-BB-BB-BB 当主机A需要与主机B进行通讯时,它会先查一下本机的ARP缓存中,有没有主机B的MAC地址。如果有就可以直接通讯。如果没有,主机A就需要通过ARP协议来获取主机B的MAC地址,具体做法相当于主机A向局域网内所有主机喊一嗓子:“喂~谁是192.168.0.2?我是192.168.0.1,我的MAC地址是AA-AA-AA-AA-AA-AA。你的MAC地址是什么,快告诉我”,这时候主机A发的数据包类型为:广播-请求。 当主机B接收到来自主机A的“ARP广播-请求”数据包后,它会先把主机A的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,然后它会给主机A发送一个“ARP非广播-回复”数据包,其作用相当于告诉主机A:“嘿,我是192.168.0.2,我的MAC地址是BB-BB-BB-BB-BB-BB”。当主机A接收到主机B的回复后,它会把主机B的IP地址和MAC地址对应关系保存/更新到本机的ARP缓存表中,之后主机A和B就可以进行通讯。
图1 ARP原理
根据上图解释一下:
在上图中服务器A如果想向服务器C传递数据,(这里不仅仅指服务器,所有遵守OSI七层模型的网络主机都应该是这样做)首先A向他所在的网段广播一个ARP包,询问C的MAC地址,(在二层网络中,主机间只有通过MAC才能通信,异构网络才需要三层的IP地址)C收到A的广播包,查看到该包中的IP地址与自己的一直,于是就回复ARP应答包给A,这个时候回复包为单播包,即只发给A。
整个过程就是这么简单,但是其中有几个需要注意的点。首先,A发不发这个广播的ARP包给网段中的其他主机取决于他需要传递信息的主机跟他在不在一个网段中,通过掩码与IP的对比可以完成这个判断,否则A只会将信息发送给网关。其次,传统的共享网络和交换网络在处理ARP的时候发送的机制并不相同,这个具体体现在使用传统的集线器和交换机时候的差别。
ARP攻击原理与危害
图2 ARP攻击原理
ARP攻击的原理在于他没有对ARP请求或者应答的来源做判断,即相信局域网内所有人说的都是真话,其实这样一个判断在二层交换网络中是个很大的资源浪费,在七层模型中,二层最大的作用是快速交互转发报文,如果加上对来源的认证,对效率将会是一个极大的考验,对更上层的应用来讲,传输速度也将大大降低。所以,由此产生的这样一种无差别信任的模式导致了ARP攻击的产生。
具体来讲,以上面的原理举例,如果A向全网发送广播包询问C的MAC地址,这时候我们的黑客控制了主机B,在收到A的广播报文之后,通过构造ARP Response报文,可以假冒C的MAC地址给A,这里假冒的MAC地址可以是任意地址,也就是说,B可以构造自己的MAC地址给A,告诉A这是C的MAC地址,由于ARP的无差别信任,A会将B的MAC地址当成C的,那么之后A发给C的所有信息都会发送给B。
这里有一个点需要注意,即使B发送了应答包,他也不能改变A中对C IP地址的映射存储,因为ARP协议传递的是MAC地址的询问,即ARP协议中,唯一能够确定的即是询问的IP地址。所以不能能骗取A更改C的IP地址,只能更改C的MAC地址。
那么ARP欺骗到底有什么危害呢,首先是不言而喻的,可以获取他人传递的信息,并且可以在他人不知情的情况下,再次转发信息给正确的接受者,这样就不会有人知道,信息中间曾经被窃取过。第二是使他人断网,其实做法很简单,将一个不存在的MAC地址设为网关的IP之后发送给被攻击者,那么被攻击者除了能够发送内网信息之外,将不能同外网通信。还有一种ARP攻击办法类似DOS攻击,洪泛大量ARP包,抢占网络流量,导致不能上网。
攻击实例以及防御方法
这里,我的攻击实例是通过ARP欺骗使得某台主机上不起网。
需要通过ARP攻击攻击同一网段中的某台主机时,首先需要知道被攻击者的IP地址,可以通过很多中方法获取,我这里选择的方法是通过QQ或者旺旺传递文件,之后在抓包软件中获取。
获得到主机的IP地址之后,我们需要做的是构造伪造ARP请求包给被攻击者。
构造包:
l 源IP 网关IP
l 源MAC 我的MAC或者一个不存在的MAC
l 目的IP 被攻击者的IP
l 目的MAC 被攻击者的MAC
图3 arp 攻击
构造完成之后发送 以每秒100个报速度发送给被攻击者,很快被攻击者网卡便会接受到我们的信息,将外网通信的信息发送给我们,就算有正确的包传递过来,也会很快被我们的攻击包所覆盖。如果继续增加每秒的包传输量,就会恶意抢占带宽,也能导致被攻击者不能上网。
之后,我们在深入一步,被攻击者下载了某防火墙来应对(需要知道什么防火墙的可以旺旺我)。
抓包之后可以发现,某防火墙原理就是向网关发送ARP请求包 ,每秒10个左右 并且拦截非网关发来的请求(应答)包
那么只要欺骗网关即可
告知网关 被攻击者 的MAC地址是我
那么所有网关发送给被攻击者的包都会发给我 导致被攻击者还是上不了网
构造包
l 源IP :我的IP或者不存在的IP
l 源MAC :被攻击者MAC
l 目的IP :网关IP
l 目的MAC :网关MAC
结果还是成功,某防火墙即失效了 。。。
对于ARP攻击的防御则可以从三个方面来入手,即主机方和网关方和第三方
首先从主机方入手,可以采取的方法为:
1、 静态绑定网关MAC或固化ARP表(重启后失效)存在的问题是只能单向绑定。
从网关方入手可以采取的方法为:
1、网关绑定IP和MAC(需要网关支持)存在的问题还是只能单向绑定
第三方可以采用的方法为
1、使用ARP服务器,在局域网内架设ARP服务器,代替主机应答ARP包,存在的问题是这样搭建非常费时。
2、802.1X认证登陆时绑定MAC,这样做在使用身份认证服务器的时候非常方便,大型网络的建议方式。
3. QINQ方式,QINQ能提供一定的局域网内防止ARP洪泛攻击。
4. 主机安装ARP防火墙。
Thanks all
By 云林 yulin