一、ARP协议
1.广播与广播域
-
广播:将广播地址做为目的地址的数据帧
-
广播域:网络中能接收到同一个广播所有节点的集合(表示一个范围)
-
广播地址:
-
MAC广播地址:FF-FF-FF-FF-FF-FF
交换机也可以发送广播,但是如果只有IP广播地址,由于交换机是二层设备,不知道第三层的IP包头中的IP广播地址,所以还需要一个二层广播地址FF-FF-FF-FF-FF-FF告诉二层设备该帧是需要广播的
-
IP广播地址:①255.255.255.255;②该网段的最后一个地址属于广播IP地址—如192.168.1.255/24
-
-
目前为止,我们学过哪些情况需要广播:①DHCP协议自动获取IP时,需要发送广播包,②交换机收到帧,MAC地址表中没有对应的MAC地址记录时,需要广播
-
广播域越小越好:为什么呢?因为如果一个广播域中有很多台PC,假如每台PC都会发广播,那么在这个广播域中的每台主机会受到很多无用的广播信息,无非加大工作量去处理无效的信息。所以如果在一个大型公司内部规划网络,是需要考虑广播域的划分大小的
-
交换机无法控制广播,路由器可以隔绝广播,即路由器可以隔绝广播域,所以广播只能在内网中传播
-
如何隔绝广播域:
- 使用物理隔离:由于路由器可以有隔绝广播域的作用(后面会学习原理),所以如果大型网络中有很多PC,可以购买多个路由器来隔离广播域,但是开销巨大且费时费力,不推荐
- 通过vlan技术隔绝广播域
2.ARP协议概述
1)什么是ARP协议
- Address Resolution Protocol,地址解析协议
- ARP协议只能在内网传播,属于内网协议
2)为什么需要ARP协议
- 我们前面学习TCP/IP五层协议栈的数据封装时,讲到当第三层将封装好的报文传到第二层数据链路层,数据链路层需要封装帧头和帧尾,帧头中包含信息:自己的MAC地址,目标的MAC地址,类型。只有知道这全部的信息,才能封装好发到物理层,从网卡发出去。那么电脑是如何得知对方的MAC地址的,就要用到ARP协议!
3)ARP协议作用
- 将一个已知的IP地址解析成MAC地址
3.ARP协议原理
1)ARP广播请求
-
在同一个局域网中有两台PC,PC1想向PC2通信,PC1将信息传到第四层在首部添加TCP/UDP头封装成数据段,发到第三层在首部添加IP包头封装成报文通过IP协议发到第二层,第二层现在无法将报文封装成帧,因为帧头中应该包含目标MAC地址,而此时还不知道PC2的MAC地址。
-
那么三层会通过ARP协议(跟IP和ICMP无关)直接生成一个ARP请求解析报文,又称ARP请求报文,ARP请求报文中内容为:①我的IP是xx,②我的MAC地址是xx,③谁是目标IP,④你的MAC地址是多少。再将ARP请求报文发到第二层
-
第二层一看是ARP请求报文,所以会将ARP请求报文通过广播发送,即封装成帧时,帧头中目标MAC地址为FF-FF-FF-FF-FF-FF(MAC广播地址),源MAC为自己的MAC,类型值为0x0806。将封装好的帧从网卡通过物理层发送到交换机
-
交换机收到帧后解封装得知目标MAC地址为MAC广播地址,所以会将此帧广播出去
-
当PC2收到此帧后,传到第四层得到目标MAC地址为MAC广播地址且类型值为0x0806,所以会继续解封装送到网络层的ARP协议,通过ARP协议得到ARP请求报文的内容,发现目标IP是自己
当其他不相干的PC收到这个帧,传到第四层得到目标MAC地址为MAC广播地址且类型值为0x0806,所以会继续解封装送到第三层的ARP协议,第三层通过ARP协议解析到ARP请求报文的内容,发现IP地址不是自己,所以此时会将此报文丢弃
2)ARP单播应答
- PC2得到ARP请求报文内容后发现IP是自己,那么会通过ARP协议再生成一个ARP单播应答报文,内容为:①我的IP就是你要找的IPxx,②我的MAC地址为xx。将此报文发到第二层,第二层将ARP单播应答报文封装成帧,帧头的目标MAC即为对方的(收到时ARP广播请求报文中含有对方的MAC地址),源MAC为自己,类型值为0x0806。再从网卡通过网线发送给交换机
- 交换机收到后,通过MAC地址表将此帧转发给PC1
- PC1收到帧后第四层得到目标MAC地址为自己的MAC,且根据类型值0x0806将帧解封装送到第三层的ARP协议,第三层通过ARP协议解析得到了ARP单播应答报文中对方的MAC地址为xx,那么此时会将对方的MAC地址告诉第四层,第四层将目标MAC地址封装到帧头,此时一个完整的帧就生成了,那么会经过网卡将帧发出去
ARP协议通过广播来实现的,所以ARP协议碰到路由器就被干掉了,ARP为内网协议,只能在内网传播。
3)形成ARP缓存
- 当PC1收到ARP单播应答后,会将学习到的对方的MAC地址存到缓存中,以后与目标IP主机通信,就不会再去请求。此时得到的缓存为ARP缓存(只要没到老化时间、保持通信、没有关机,缓存就会一直存在)
4.windows中ARP相关命令
arp -a
:查看本机ARP缓存表arp -d
:清除ARP缓存arp -s
:ARP绑定(其实绑定了再关机开机也会消息)
二、ARP攻击和欺骗
1.ARP攻击或欺骗的原理
- 通过发送伪造虚假的ARP报文(广播或单播),来实现的攻击或欺骗!
- 如虚假报文的mac是伪造的不存在的,实现ARP攻击,结果为中断通信/断网!
- 如虚假报文的mac是攻击者自身的mac地址,实现ARP欺骗,结果可以监听、窃取、篡改、控制流量,但不中断通信!
2.易于用ARP攻击的原因
- ARP协议没有验证机制,所以ARP攻击者易于通过发送虚假伪造的arp报文对受害者进行ARP缓存投毒
3.ARP攻击举例
1)伪造虚假的ARP单播应答报文
-
阻断局域网内双发的通信
- 现在小周想与小白通信,小周会发送ARP请求报文:问谁是小白(IP),你的MAC地址是多少?当交换机收到后会将此帧在局域网内广播,如果现在老王想搞破坏,收到ARP请求广播后,使用一些工具,发送一个伪造的ARP单播应答报文,当中的MAC地址是伪造的,内容是:我是小白,我的MAC地址是xxx(伪造MAC)。真正的小白也会发送ARP单播应答。两个ARP单播应答都会通过交换机发送到小周的主机
- 现在小周的主机收到两个ARP应答,两个都说自己是小白,但是MAC地址不同,PC会把后接收到的ARP应答中的MAC地址作为对方的MAC地址封装到帧头中。所以如果老王的ARP应答晚于小白的ARP应答到达,那么小周就会用老王伪造的虚假的MAC地址与小白通信。小白就永远收不到小周的消息。由此可见ARP攻击可以阻断局域网内两个人之间的通信
- 也可能小周的主机后收到小白的ARP应答,那么就可以正常通信。但是如果老王不断的发送伪造的ARP应答,那么也会阻断两者之间的通信
-
阻断与网关的通信–断网
- 当主机要与某设备通信,会先判断目标IP地址与自己是否是同一网段,如果是直接向对方发送ARP请求广播;如果不在同一网段,那么主机要与网关通信,通过网关将数据转发到其他的网段。假如现在小周想上百度,就要和百度的网页服务器通信,主机先判断目标IP地址与自己不在同一网段,所以会发送ARP请求报文,目标IP为网关,向网关通信询问网关的MAC地址。交换机收到后也会将帧在局域网内广播,如果现在老王伪造一个ARP应答报文:我就是网关,我的MAC地址是xxx(伪造的)。同样的网关收到后也会发送ARP单播应答。两个ARP应答都通过交换机发送到小周主机
- 假如现在小周后收到老王伪造的ARP应答,那么就会把伪造的MAC地址作为网关的MAC地址封装到帧头,然后发送给一个不存的MAC地址,那么小周的主机就无法和百度服务器通信,其他的上网活动也都无法进行
2)伪造虚假的ARP请求广播报文
- 现在老王伪造ARP请求报文,内容是:我是网关(IP),我的MAC地址是xx(虚假的),谁是xxx(IP),你的MAC地址是。然后封装好发送出去给交换机,交换机收到后会将此帧广播出去
- 局域网内的人收到广播后,会解封装将ARP请求报文送到三层ARP协议解析,虽然自己的IP不是此报文中的目标IP,但是得到网关的IP和虚假的网关的MAC地址,那么在主机上形成ARP缓存。那么此后所有的主机要想上网都会去和网关通信,但是现在ARP缓存中的网关的MAC地址是老王伪造的,那么此局域网内的所有主机都无法上网了
4.ARP欺骗举例
- 原理与ARP攻击类似,只是将虚假的MAC地址换成了自己的MAC地址。现在小周与小白通信,小周发送ARP请求广播,通过交换机将帧在局域网内广播,此时老王收到了你的ARP请求,伪造一个ARP单播应答报文,MAC地址写自己真实的MAC地址,然后再经过交换机发送到小周的主机,将老王的MAC地址作为小白的MAC,那么所有帧都会发到老王的主机上去
- 老王收到后可以对帧的内容等信息做监听,篡改,控制等。然后再将此帧发给真正的小白。同理小白发送给小周的信息也可以被老王截获做相关操作,再转发给小周。那么老王就成为了中间人。