ARP协议和ARP攻击

ARP协议


介绍

ARP地址解析协议

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取MAC地址的一种TCP/IP协议。在主机和主机之间的通讯物理上,其实就相当于是网卡和网卡之间的通讯,而网卡之间的通讯又只认识MAC地址,所以要想实现主机与主机之间的通信,需要知道对方的IP的地址所对饮的MAC地址,完成这一过程的协议就是ARP协议。

原理

每台主机或路由器都有一个ARP缓存表,用来保存IP地址和MAC地址的对应关系

举个例子,A主机(192.168.1.5)向主机B(192.168.1.1)发送数据。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了MAC地址。然后把它写进发送帧即可

而如果从缓存表中没有找到,那么主机就会在网络上发送一个广播 arp Request,请求包中包含了主机A的IP地址和Mac地址。网络上其他主机并不会响应,只有主机B在接收到A的请求包的时候会以单播方式向A主机做出回应,并且带上自己的ip和mac地址。

同时,B主机会把A主机的IP地址和MAC地址缓存进自己的ARP缓存中,此后A再向B发送数据,就可以直接从缓存表中获取B的地址。

ARP表中设置有生存时间TTL,在一段时间内,如果表中的某一行没有使用,就会被删除,这样可以缩短ARP表的长度,同时提高搜索的速度

补充

ARP攻击

ARP欺骗的运作原理是由攻击者发送的假的ARP数据包到网络上,尤其是送到网关上。目的是要让送至特定的IP地址的流量被错误的送到了攻击者所取代的地方。因此攻击者可以将这些流量另行转送到真正的网关(被动式数据包嗅探)或篡改后再转回去(中间人攻击)或把ARP数据包导到不存在的MAC地址以达到阻断服务器的攻击效果

image

正常情况下,A主机想主机B发送一份数据,而如果攻击者想窃取这份数据那么要怎么做呢?

  1. 首先发送一个伪造主机B的ARP包到主机A告诉主机A,主机B的MAC地址是攻击者自身的MAC地址,这样主机A就会更新自己的ARP缓存表,把B的Ip地址更新成攻击者的MAC地址

  2. 同样的对B主机进行相同的操作。

  3. 之后当主机A还是像往常一样给B发送数据,这个时候主机A首先会从本地的ARP缓存表获取MAC地址,但是此时的MAC地址其实是攻击者的MAC地址,所以数据会先发给攻击者,攻击者可以篡改数据包的内容或者别的操作。这也就完成了ARP攻击

ARP防御

从攻击原理就可以看出来,实现ARP防御关键在于主机信任了伪造的ARP包并且更新了本地路由表。

  1. 最简单的方式,就是使用静态路由表。但是弊端就是如果局域网中主机数量多的时候静态表会很繁杂。

  2. 动态ARP检测DAI(利用交换机,路由器实现)

交换机会记录每个对外连接端口对应的IP地址,以及MAC地址,生成DAI检测表
交换机在接收到ARP包的时候会检测一下你链接的端口绑定的IP地址和MAC地址,如果发现和DAI中绑定的不一致,则回丢弃或者执行相应惩罚

RARP协议

反向地址转换协议,就是将局域网中的某个主机的Mac地址转成IP地址

Mac地址

采用十六进制数标识,共6个字节(48位)。其中前三个字节由IEEE注册管理机构RA负责给厂家分配,后三位是由各厂家自行指派给生成的适配器。

本地路由表

image

数据包结构

image

参考文章:
https://juejin.im/post/6844903506948653070
https://juejin.im/post/6844903506571165703
https://juejin.im/post/6844903878698205191

你可能感兴趣的:(ARP协议和ARP攻击)