前面提过,ARP能否有效运转的关键在于对ARP高速缓存表的维护。可是,正因为主机在任何时候收到ARP报文,都将再次更新ARP缓存表,所以导致了另外一个令人头疼的事情发生。
如果现在一台有恶意的主机C想要窃取网络中主机A发给主机B的数据,那么这时它就可能向A发送一个ARP应答报文,报文中目标IP地址为主机B的IP地址,而目标MAC地址却为主机C的MAC地址。当主机A收到这个ARP应答报文后,就更新ARP缓存表中主机B的MAC地址为报文中的目标MAC地址,实际上就是更新为主机C的MAC地址。当它要和主机B进行通信时,就会在MAC帧中填写主机C的MAC地址,这样,主机A就会把本来要发给主机B的数据错误地发给了主机C,被主机C窃取成功。这时,在C收到的MAC帧中,封装的IP数据报的IP地址仍是主机B的。
更进一步,主机C为了掩人耳目,“看”过数据后,再把IP数据报发给主机B,从而不影响主机A和主机B之间的正常通信。但如果前面主机C发给主机A的ARP应答报文中的MAC地址不是自己的,而是伪造的根本不存在的MAC地址,那么这时主机A和主机B之间就不可能再正常通信了。
在ARP病毒中,ARP修改的是网关的MAC地址。虽然局域网内部的通信是主机与主机之间直接通信,但是,如果要与外网的主机通信,这时,还需要用到网关或路由器(很多情况下,一个局域网的路由器就直接充当网关的角色)。当局域网内的某台主机A想要与外网的主机通信,它在对数据包进行封装时,目标MAC地址需要写成网关的MAC地址,再交由网关代为转发,发到网外去。如果这台主机A在使用ARP请求报文查询网关的MAC地址时,病毒主机就向主机A回应一个ARP应答报文,报文中将这台病毒主机或者根本不存在的MAC地址告诉主机A。这时,主机A发给远程网络的数据要么经由病毒主机“中转”了一下,造成数据被窃听,要么因为错误的目标MAC,而最终没有网关给数据进行转发,导致与外网不能正常通信。这就是ARP病毒造成局域网内的主机不能与外网通信的原因。(www.daowen.com)
ARP病毒是在什么时候让路由器的ARP缓存产生混乱的呢?当局域网内的主机向外网发送数据时,要通过ARP请求报文来得到网关或路由器的MAC,这时就有可能遭到ARP欺骗。然后,当网关或路由器收到来自外网的数据包要发到本地网络时,它同样要把这些数据包的目标MAC地址改写成最终接收主机的MAC地址。它首先是查自己的ARP缓存表,如果存在它需要的表项,就直接封装MAC帧发出去。如果缓存表里没有,就用ARP广播来请求目标的MAC地址。这时,路由器就会收到病毒主机发来的假冒ARP应答,让路由器在数据包中封装了错误的目标MAC地址,从而造成数据包不能正确到达目的地,或被病毒主机窃取。
另一方面,对于随时收到的ARP应答报文,路由器都会把新的MAC和原来的IP地址对应起来,写入缓存表。因此,ARP病毒可以通过假冒的ARP应答报文响应ARP请求,也可以通过随时发送假冒的ARP应答报文造成主机和路由器的ARP缓存表错误。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。