ARP协议(地址解析协议)原理及攻防
0 摘要
本节主要介绍了ARP协议的工作原理与流程、ARP攻击与欺骗的原理、以及如何防御ARP攻击与欺骗。
1 ARP协议
1.1 广播与广播域
(1)广播:将广播地址作为目标地址的数据帧。
(2)广播域:网络中能接收到同一个广播的所有结点的集合。
- 1)注意,交换机隔离不了广播域,路由器隔离广播域。
- 2)广播域越小越好。
(3)MAC广播地址:FF-FF-FF-FF-FF-FF。
(4)IP广播地址:ARP广播属于指向子网的广播。IP广播地址为IP地址网段的广播地址,即主机位全为255,如192.168.1.255/24。
- 1)受限广播(全局广播):IP地址的网络字段和主机字段全为1就是地址255.255.255.255,该地址用于主机配置过程中IP数据包的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。
- 2)指向网络:指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择。
- 3)指向子网:指向子网的广播地址为主机号为全1且有特定子网号的地址。作为子网直接广播地址的IP地址需要了解子网的掩码。例如,如果路由器收到发往128.1.2.255的数据报,当B类网络128.1的子网掩码为255.255.255.0时,该地址就是指向子网的广播地址;但如果该子网的掩码为255.255.254.0,该地址就不是指向子网的广播地址。
- 4)指向所有子网:指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1。例如,如果目的子网掩码为255.255.255.0,那么IP地址128.1.255.255是一个指向所有子网的广播地址。然而,如果网络没有划分子网,这就是一个指向网络的广播。
tips:
当公司很大,人很多时,若想控制广播域,是否可以多买些路由器?用路由器隔离属于物理隔离,但是这种方法代价大,需要买大量路由器,这种方法比较low。后续将学习既不用过多的路由器,又能比较巧妙得将广播域隔离。
1.2 ARP协议原理
(1)定义:Address Resolution Protocol,地址解析协议。工作在第三层(网络层)。
(2)功能:将一个已知的IP地址解析成MAC地址。
(3)简要原理:发送ARP广播请求,接收ARP单播应答。
(4)工作流程:
- 1)当A(10.1.1.1)已知B的IP地址要向B发送数据时,首先检查自己的ARP缓存表中有没有B的MAC地址,发现没有B的MAC地址时,数据帧无法完整封装,此时,ARP协议发送ARP请求报文(我是A(如10.1.1.1),我的MAC地址是AA,谁是B(如10.1.1.3),你的MAC地址是?)
- 2)ARP报文从A的第三层送到第二层,网卡发现是ARP报文,对该报文进行封装时,目标地址写FF-FF-FF-FF-FF-FF,源MAC地址写AA,类型是0x0806,发送给交换机。
- 3)交换机收到报文,发现目标MAC地址是FF-FF-FF-FF-FF-FF,向广播域内所有主机广播。
- 4)所有主机收到报文后,数据链路层解读出A的MAC地址、目标MAC地址是FF-FF-FF-FF-FF-FF、类型是0x0806,哦,发现是ARP请求报文,将帧头帧尾解封装,将IP包送到第三层的ARP协议,解读出A的IP和MAC地址(更新到自己的ARP缓存表中),如果发现询问是我自己,则回复信息(我是B,MAC地址是BB);如果不是我自己,则不搭理。
- 5)B将信息传递到数据链路层,进行封装,目标MAC地址是AA,源MAC地址是BB,类型0x0806,发送给交换机。
- 6)交换机收到数据帧解析后,单播发给A。
- 7)A收到数据帧解析后,就知道了B的MAC地址,将其记录在自己的内存中,形成ARP缓存表。
- 8)上述是B的IP与A的IP处于同一网段的情况,当不在同一网段时,arp找到与A所处网段路由器的mac地址。因此在发送ARP广播请求时,PC首先判断目标IP与自己是否处于同一网段,若处于同一段网段,ARP广播报文请求的是目标IP的mac地址;若不在同一个网段时,ARP广播报文请求的是网关的MAC地址。
(5)天然逻辑漏洞:该协议没有身份验证机制,ARP缓存中学到的东西无法验证真伪。
tips:
1)ARP缓存表具有一定的时限,当一定时间不通信后,会自动消失;另外关机或重启后ARP缓存也会消失。
2)ARP协议属于内网协议,只能在同一个局域网内起作用。
3)当10.1.1.1想访问百度(设IP为200.1.1.1)时,PC首先判断目标IP与自己是否处于同一网段,由于不在同一个网段,ARP不可能直接问谁是200.1.1.1,路由器隔绝广播域,没人搭理它。因此需要先将帧送到网关。
1.3 ARP相关命令
(1)新开两台虚拟机win7与win2003,进入cmd窗口进行ARP相关命令操作,先清空两个电脑的arp缓存表;
(2)再利用win7ping通win2003,最后查看两个电脑的arp缓存表,发现win7中出现了win2003的arp缓存条目,win2003也出现了win7的缓存条目,说明接到信息就会更新缓存表。由于ARP缓存在内存中,保存不下来,过一会不通信就自动消失,通信后就会更新缓存。
arp -a #查看ARP缓存表
arp -d #清除ARP缓存表
arp -s IP地址 MAC地址 #ARP静态绑定
2 ARP攻防
2.1 ARP攻击
(1)原理:通过发送伪造虚假的ARP报文(广播或单播),目标是把捏造的MAC塞到别人的ARP缓存表。
- 1)发送虚假的广播请求报文:C发送一个虚假广播请求(我是A,MAC地址是捏造的,谁是SB,MAC地址是?),交换机将该请求广播给所有主机,则所有主机都修改了A原本对应的MAC地址,将导致所有主机无法主动与A通信。如果此处的A是网关,则所有人断网。
- 2)发送虚假的单播应答报文:在收到A请求B的ARP报文后,C伪造虚假的ARP报文,其中MAC地址是捏造的,单播给A后,A将B的IP与捏造的MAC地址记录下来,将导致A后续想发给B的信息在封装时采用的是假的MAC,该消息没有人能收到。如果此处的B是网关,则A无法上外网;如果此处的B是局域网内部其他主机,则当B主动联系A后,A才能与B联系。
(2)结果:中断通信/断网。
(3)实验:后续将在学习kaili时再完善相应实验。windows系统可用”网络执法官“进行ARP攻击。
(4)APR缓存更新原则:后到后得,来一个更新一个,更新最新的。
2.2 ARP欺骗
(1)原理:通过发送伪造虚假的ARP报文(别人的IP与自己的MAC),C骗A说“我是B,我的MAC地址是CC”,同时骗B说“我是A,我的MAC 地址是CC”。
(2)结果:中间人监听、窃取、篡改、控制流量。(干掉一些帧,TCP具有重传机制,导致流量变慢,或不给受害人转发)。
(3)实验:后续将在学习kaili时再完善相应实验。windows系统可用”Cain“进行ARP欺骗。
2.3 防御ARP攻击
一般的计算机是默认没有ARP防御
(1)静态ARP绑定:
- 1)操作:手工绑定,在客户机与路由器的网关上,双向静态绑定。
- 2)命令:
//windows客户机,cmd窗口
arp -s IP地址 MAC地址 #ARP静态绑定
//交换机与路由器
conf t
arp IP地址 MAC地址 arpa 接口号 #将IP、MAC绑定到对应的接口上
- 3)缺点:工作量特别大,主要体现在:①需要收集公司所有人的IP与MAC地址;②员工PC的IP是自动获取,经常更新;③即使是手工配置,也是临时载入内存中,一关机就没了。
- 4)用途:一般用在服务器与网关之间。
(2)ARP防火墙:
- -1) 原理:客户机一打开ARP防火墙,ARP防火墙自动绑定静态ARP(绑定网关的),另外可以ARP防火墙主动进行防御(与攻击者同样的做法,不断应答自己的IP和MAC地址)。
- 2)缺点:网关负担不了。在公司建议不用用
(3)硬件级ARP防御:
- 1)原理:①采用企业级管理型交换机,支持端口做动态ARP绑定(配合DHCP服务器)。企业级管理型交换机,可以自动识别DHCP包,收到ACK包后,在端口做动态ARP绑定(将ACK包中的IP与源MAC地址进行绑定)。当收到ARP报文,会对ARP报文进行检查,检查绑定的动态ARP报文与PC发送的ARP报文内容是否一致。当不一致时,交换机可以干掉这个ARP报文或down掉该端口。这种方式用的比较多。不过当坏蛋手动配置IP时,要看交换机是否能识别非DHCP包。
②企业级管理型交换机,或做静态ARP绑定,一般银行采用。 - 2)相关命令:
//交换机
conf t
ip dhcp snooping #开启DHCP监听功能
int range f0/1 - 48 #进入一组端口,“-”前后都有空格。注意,思科是这样,不同的品牌,命令不一样。
switch(config-if-range)#
参考文章
[1] 《第33节 ARP协议原理及攻防》
[2] 视频传送门