ARP为什么会产生泛洪和攻击
- 什么时候会泛洪?
当主机或者路由器封装帧时,如果不知道目的IP的mac地址会进行泛洪。
为什么是主机和路由器封装帧?
因为ARP是IP和mac的映射,而二层设备不处理ip所有只有三层设备具有封装帧的功能。
主机封装帧是因为要发数据或接受数据解封装。
路由器封装帧是因为在接收网关数据帧时会进行解封装,发现目标ip地址不是自己会进行路由表查询,此时没有目的mac会进行泛洪,有就会进行再封装,进行转发。
2. 为什么会攻击?
我把攻击分为两种:
第一种:接受不该接收的数据,盗窃
第二种:攻击其他主机,主动攻击
第一种:
我们知道,当PC1对PC2正常通信的时候(先别管攻击者PC3),PC2、PC1会先后建立对方的IP和MAC地址的映射(即建立ARP缓存表),同时对于交换机而言,它也具有记忆功能,会基于源MAC地址建立一个CAM缓存表(记录MAC对应接口的信息),理解为当PC1发送消息至交换机的Port1时,交换机会把源MAC(也就是MAC1)记录下来,添加一条MAC1和Port1的映射,之后交换机可以根据MAC帧的目的MAC进行端口转发,这个时候PC3只是处于监听状态,会把PC1的广播丢弃。
正常的PC3会把广播包丢弃,同样的PC3可以抓住这一环节的漏洞,把不属于自己的广播包接收,同时回应一个虚假的回应包,告诉PC1我就是PC2
(IP2-MAC3),这样PC1会收到两个回应包(一个正确的IP2-MAC2,一个虚假的IP2-MAC3),但是PC1并不知道到底哪个是真的,所以PC1会做出判断,并且判断后到达的为真,那么怎么让虚假的回应包后到达呢,PC3可以连续不断的发送这样的回应包,总会把哪个正确的回应包覆盖掉。
而后PC1会建立IP2-MAC3这样一条ARP缓存条目,以后当PC1给PC2发送信息的时候,PC1依据OSI模型从上至下在网络层给数据封装目的IP为IP2的包头,在链路层通过查询ARP缓存表封装目的MAC为MAC3的数据帧,送至交换机,根据查询CAM表,发现MAC3对应的接口为Port3,就这样把信息交付到了PC3,完成了一次ARP攻击(盗窃)。
第二种:
如果ARP攻击严重话,会导致同一个局域网(也是同一个广播域)的所有主机的ARP缓存表中都存放着错误的IP和MAC的映射,如上图,每台主机的ARP缓存表中,不论哪个IP,都会映射到攻击者的MAC地址MAC1上,这样该局域网内的所有主机的消息都发送到Hacker的主机上。