互联网的水很深,作为一名网民,日常生活中几乎都避免不了网上的各种陷阱。所以,对于互联网攻击的各种手段,我们虽然不可能全部学会,但是起码应该做到心中有数,了解其原理。这样在生活中遇到问题时,就能进行理智的分析,即使不去攻击别人,也能保障自身的上网安全。
这次就为大家科普一种常见的攻击手段:arp欺骗。不要觉得这个词很高深,我会从原理到实现逐步为大家讲解。看完之后,相信大家不仅不会觉得难,反而会觉得十分有趣。
言归正传。前面的文章已经为大家介绍过网络通讯的分层结构,而arp协议,就是网络层的一种协议。它是为ip协议服务的。
我们回想一下局域网通讯的过程,假设所有设备用交换机进行连接,在设备之间相互通讯时,需要在数据链路层写上mac地址。在写mac地址之前需要做什么呢?当然是要先知道对方的mac地址了。arp协议正是用来解析目标设备的mac地址的。假设设备A要向IP地址为10.0.0.3的设备发送数据,那么就会用arp协议发送广播,询问10.0.0.3的mac地址是多少。这是,交换会把广播向所有设备发出(这是重点),当目标设备收到广播,就知道“别人”在询问它的mac地址,就会回复。这时设备A就会记下目标设备的mac地址,封装时就用这个mac地址。
跨网段通讯时,原理相同,这时询问的就是网关的mac地址。所以,arp协议是数据通讯之前的工作,为ip协议服务。
这里再告诉大家一点,arp只能解析本网段的设备,因为路由器有隔绝广播的功能。如果不隔绝广播,当一台设备发送广播时,全球都能收到,带宽就被广播淹没了。
下面重点来了,arp欺骗是如何实现的呢?假设本网段有3台计算机,mac地址分别为m1,m2,m3。m2的IP地址为10.0.0.3。当m1想与m2通讯时,就会发送广播询问mac,刚才已经说过,这个广播其实m2、m3都能够收到,只不过正常情况下,m3一看不是询问自己,就会装没听见。但是这次情况不一样,m3想进行arp欺骗。当m2告诉m1,10.0.0.3的mac地址是m2,这时m3立刻也告诉m1,10.0.0.3的mac地址是m3,那么m1就会把刚才缓存的关于m2的数据删掉,把数据发给m3,至此,m3成功截获了本不属于自己的数据。m3为了不被发现再以自己为源mac,m2为目标mac,将数据转发给m2,就神不知鬼不觉了。因为网络设备有缓存功能,这样成功欺骗一次之后,今后m1向m2发送数据时,不再用arp协议,而是已经记住了上次的mac,所以m1发给m2的所有数据实际都发给了m3,m3截获了全部数据。同样的方法,可以截获局域网内任何计算机之间的通讯。
用arp欺骗不仅可以截获通讯信息,还可以阻止局域网内设备进行通讯。方法更简单。m1与m2通讯时,用arp欺骗把m2的mac地址故意解析成解析成m4,而局域网中根本就没有m4这个mac地址,交换机找不到设备,就把数据包扔掉了。
理解了以上原理,我再讲一个arp欺骗更高级的用法—控制设备上网流量。当局域网内设备m1、m2、m3访问外网时,都需要询问路由器网关的mac地址。这时,m3利用arp欺骗将网关的mac地址改成自己的mac地址m3,那么当设备m1、m2需要访问外网时,实际都经过了m3。那么m3就可以为m1、m2分配带宽甚至阻止它们上网了。
好了,相信看懂以上这些,大家就会觉得arp欺骗没什么神秘的了。下一讲我再为大家讲解如何有效防止arp欺骗。敬请大家关注!