2024年5月8日发(作者:)

Arp攻击原理及防范

1.ARP协议简介

在局域网中,一台主机要和另一台主机进行通信,必须要知道另一台主机的IP地址,

但是最终负责在局域网中传送数据的网卡等物理设备是不识别IP地址的,只能识别其MAC

地址。MAC地址是48位的,通常表示为12个16进制数,每2个16进制数之间用“-”

或者冒号隔开,如:FF-FF-FF-FF-FF-FF就是一个MAC地址。每一块网卡都有其全球唯一

的MAC地址,网卡之间发送数据,只能根据对方网卡的MAC地址进行发送,这时就需

要一个将数据包中的IP地址转换成MAC地址的协议,而这个重要的任务将由ARP协议

完成。

ARP全称为Address Resolution Protocol,即地址解析协议。所谓“地址解析”就

是主机在发送数据包前将目标主机IP地址转换成目标主机MAC地址的过程。ARP协议的

基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进

行。 这时就涉及到一个问题,一个局域网中的电脑少则几台,多则上百台,这么多的电脑

之间,如何能准确的记住对方电脑网卡的MAC地址,以便数据的发送呢?这就涉及到了

另外一个概念,ARP缓存表。在局域网的任何一台主机中,都有一个ARP缓存表,该表

中保存这网络中各个电脑的IP地址和MAC地址的对照关系。当这台主机向同局域网中另

外的主机发送数据的时候,会根据ARP缓存表里的对应关系进行发送。

下面,我们用一个模拟的局域网环境,来说明ARP欺骗的过程。

2.ARP欺骗过程:

如图(1)所示(在相册)局域网中有三台主机与交换机相连接,主机名分别为A、B、

C,交换机为网关命名为S,IP如图所示。现在A与C进行通信,正常情况下通信过程如

下:A将自身的数据打包目地IP为C的IP,因为不知道C的MAC,所以A向全网发出

ARP请求要求得到C的MAC, C收到广播报文后将自身的MAC地址发送给A, A得到

C的MAC后将数据打包,封装目的为C的IP和MAC,然后将数据包发送给S;S收到该

包后拆包得到C的MAC,然后再对照自身的ARP缓存表,将数据包发送给C,一次通信

完成。

这样的机制看上去很完美,似乎整个局域网也天下太平,相安无事。但是,上述数据

发送机制有一个致命的缺陷,即它是建立在对局域网中电脑全部信任的基础上的,也就是

说它的假设前提是:无论局域网中那台电脑,其发送的ARP数据包都是正确的。那么这样

就很危险了!因为局域网中并非所有的电脑都安分守己,往往有非法者的存在。此时A想

得到C的MAC向全网发送广播,C将自己的MAC发给A,而此时一直沉默的B也向全

网发出广播报文,说自已的IP为192.168.0.4MAC为B的MAC即MAC_b,原本A得到

的C的MAC是正确的,由于B不停的发送广播报文,但A不知道B的MAC是伪造的,

导致A重新动态更新自己的ARP缓存表,此时A的ARP缓存表里记录了一条错误的记录,

这就导致了A以后要发送给C的数据全部发给了B。这就是ARP欺骗中冒充主机的方式。

如果B冒充网关又会是什么情况呢?大家知道局域网中所有电脑上网都要通过网关转

发数据才能登陆互联网。此时如果B向全网发送广播说我的IP为192.168.0.1 MAC为

MAC_b即B自己的MAC,由于局域网通信的前提条件是信任任何电脑发送的ARP广播

包。这样局域网中的其它电脑都会更新自身的ARP缓存表,记录下192.168.0.1-MAC_b

这样的记录,这样,当它们发送给网关,也就是IP地址为192.168.0.1这台电脑的数据,

结果都会发送到MAC_b这台电脑中!这样,B就将会监听整个局域网发送给互联网的数

据包!