ARP协议的叙述(需要了解一些基本知识)
ARP协议是我们得PC用来获取目标MAC地址所需要的一种协议,举个例子,如果我们在ping同一局域网某一台PC时,我们所发的ping的请求是以帧的形式通过交换机,然后再由交换机发往所ping的PC。我们如果想要实现ping通一台PC就需要目标PC的MAC地址和IP地址,通常我们在ping的时候就已经知道目标IP地址,但不知道MAC地址,所以在我们的ping的帧从我们的PC发出之前,我们必须得要知道目标PC得IP地址,所以这时候据需要发送APR请求用来获取目标的MAC地址而过程大致为:(以源IP10.1.1.1,目标IP10.1.1.2)
我们先发送一个广播,广播中的目标MAC地址为广播地址也就是12个F,广播内容大致为:我是10.1.1.1,我的MAC地址为AA,谁是10.1.1.2,请把你的MAC地址给我,然后在这个局域网中的所有PC都会收到这个广播,然后将这个广播报文进行帧头和帧尾的去除,然后每一个PC利用ARP协议将目标IP与自己的IP进行比对,如果正确,则会通过单播应答的方式,对回发自己的MAC地址,10.1.1.1在收到这个回包之后就会将10.1.1.2的MAC地址放到目标MAC地址处,发到交换机处,在由交换机转发到目标PC
ARP的相关注意事项
ARP的报文只能在局域网之间转发,不同的局域网不能转发。
在我们接收ARP报文的时候我们的PC会在自己本机形成一个ARP缓存,这个ARP缓存可以通过cmd或者powershell来查看,命令为
arp -a
我们的ARP缓存会在我们的PC上存在一段时间(毕竟是缓存),当然我们PC上的静态ARP缓存不会消失。ARP协议有一个弊端就是如果收到两份相同的ARP回包它只会学习最新收到的回包,将原有的相同的MAC地址缓存进行更新。(这就是中间攻击原理)
中间人攻击
在上边我已经说了ARP的弊端,接下来就要说怎么利用了,在同一局域网中,有三台机器地址分别为10.1.1.1,10.1.1.2,10.1.1.3,我以10.1.1.2为攻击者,其他两个为被攻击者,10.1.1.2向10.1.1.1发送ARP报文内容大致为:我是10.1.1.3,我的MAC地址为AA,同时也向10.1.1.3发送ARP报文内容大致为:我是10.1.1.1,我的MAC地址为AA,此时10.1.1.1和10.1.1.3两台PC上的ARP缓存都接受ARP报文并进行了更新,此时如果10.1.1.1向10.1.1.3发送信息就会先流经10.1.1.2然后转往10.1.1.3,同样10.1.1.3发往10.1.1.1的信息也是如此,然后我们就可以利用相关软件来进行信息的窃取或者修改,具体软件我就不多说了(kali的ettrecap)