16、ARP协议
16、ARP协议
前言
网络层协议:ICMP、IP、ARP
查看ARP表:arp -a
、删除ARP表:arp -d
一、广播
MAC广播地址(二层广播地址):FF-FF-FF-FF-FF-FF(6字节的MAC地址)
IP广播地址:
1 | 本网段的广播IP地址(例如本网段为192.168.1.0):192.168.1.255 |
广播域:可以听到同一个广播的PC集合,称为一个广播域。路由器是广播的终点,交换机遇到广播会无条件的转发。
二、ARP协议概述
需要ARP协议的数据包发送情景:不清楚目标IP地址的MAC地址
三层的IP报文到二层的数据链路层进行下一步MAC地址封装时,发现自己不知道目标IP地址的MAC地址是多少,这时,会将自己只差目标MAC地址的数据帧缓存起来,然后去求助ARP协议 通过目标IP地址来获得MAC地址。网络层会生成一个ARP请求报文帮助询问目标MAC地址,请求报文的内容是介绍自己的IP和MAC询问目标IP的MAC,请求报文在二层数据链路层进行封装时,将目标MAC地址填充为MAC广播地址,通过广播发送去询问,等待目标IP的主机以单播的形式返回一个ARP应答报文,源主机收到这个报文后会先将询问到的目标MAC地址缓存到自己主机内存中的ARP缓存表中,然后填充之前缓存的缺少目标MAC地址的数据帧,成功向目标IP发送。
情景2:不清楚目标IP地址的MAC地址,并且对方是不同网段
此时,目标MAC地址应该填写网关的MAC地址,把数据帧发到网关,网关自然就会查询路由表转发数据帧。因此,如果ARP缓存中没有网关的地址,则会发送一个网络层的ARP请求广播包询问网关的MAC地址,最终得到网关单播回应ARP响应包。最后把网关的MAC地址放到我们前面数据帧的目标MAC地址字段。
网关收到这个数据帧后,首先查看帧头目标MAC地址是不是我,然后查看帧头中的类型是0800还是0806,如果是0806会丢弃,因为ARP协议是内网协议不路由,如果发现是0800IP协议,则会脱掉二层然后把数据帧送到路由器内部,进行路由表查验,寻找下一跳地址,并将数据帧送到下一跳端口位置。如果此时路由器ARP缓存表中没有下一跳IP地址的MAC地址,则会缓存此帧,向该网段发送ARP请求广播包,得到下一跳IP的单播ARP响应包后,缓存ARP地址表,然后重新封装帧头的MAC地址,注意源MAC地址写路由器发出端口的MAC地址,目标MAC地址要刚获得的下一跳IP地址MAC地址,然后发送该数据包到下一跳。以此类推,直到下一跳位置就是目标网段,同样经历以上过程发出。
三、ARP工作原理
ARP工作原理分两个步骤:
1)发送ARP广播报文:内容是:我的IP是XXX,我的MAC是XXX,谁的IP是XXX,你的MAC地址是啥??
2)回应ARP单播报文。
===================================
pc与其他PC通信,ARP原理:
1)首先判断目标IP与自己是否在同一网段
2)如果在同一网段,且ARP缓存表内无此IP,则直接发送ARP广播请求报文询问目标IP地址的MAC
3)如果不在同一网段,且ARP缓存表内无此IP,则发送ARP广播请求报文询问网关的MAC
===================================
四、面试题
1)ARP协议工作在哪一层? 答:网络层
2)ARP协议是干什么的? 答:已知IP地址,解析MAC地址。
3)可以描述一下ARP的工作原理吗? 答:见三、。
4)ARP漏洞在哪里,为什么可以通过ARP漏洞进行攻击?答:ARP收到单播应答数据包时没有身份验证,因此很容易被ARP欺骗。1、断网攻击:受到虚假的不存在的MAC地址,后果可能会中断正常的通信。2、中间人攻击:通信双方收到中间人的MAC地址的ARP响应单播,中间人截取信息后,再转发给正确的对方。
五、ARP断网攻击实验
目标:断网攻击
实验环境:实验环境:中间人攻击方win2003 、 受攻击方任意
使用软件: 网络执法官v3.56
1 | 打开长角牛网络监控机 -》 添加监控范围 -》确定开始扫描 -》 对准攻击目标右键手工管理 -》 选择禁止与所有主机连接,除我的IP外,该网段所有IP欺骗到攻击目标ARP表中(-》 禁止与关键主机进行TCP/IP连接 -》 第1组 -》 关键主机组设置 -》 第1组中加入想欺骗攻击目标ARP表中的一些IP地址) |
六、ARP中间人攻击实验
目标:实现窃取telnet和ftp密码
使用软件:cain
实验环境:中间人攻击方win2003 、 telnet/ftp服务器win2003 、 普通用户win7
1 | 1、配置内网环境,win7:192.168.1.1、 win2003中间人:192.168.1.2、 telnet/ftp服务器:192.168.1.3 |
七、抓包实验
目标:抓取telnet有密码的报文、arp广播请求报文、arp单播应答报文
使用软件:科来网络分析系统
实验环境:win7x64抓包机器、win2003
解决杂乱的数据包显示:实时分析 -》 本地网卡 -》 全面分析 -》 数据包 -》过滤 -》 填写网络协议
1 | 安装科来 -》 打开软件选择实时分析 -》 选择网卡 -》 全面分析 -》 开始 -》 选择数据包功能页面 -》 删除win7的ARP表,然后ping win2003 -》分析数据包可以看到,10个包,2个ARP协议包请求和响应,5个ping来回ICMP包 -》 分析ARP广播数据包,帧头帧尾,ARP请求协议包。 -》 分析telnet数据包,找出明文口令 |
八、如何防御ARP攻击
1、ARP双向静态绑定
两主机静态绑定对方的IP和MAC地址到ARP表中,因为静态绑定优先级大于动态绑定,所以ARP欺骗所获得的动态绑定信息不会生效。
1 | PC: arp -s 网关的IP 网关的MAC地址 |
缺点:工作量太大!必须要双向绑定。
建议:用在公司的主要服务器上!
2、 安装ARP防火墙
ARP防火墙原理(以暴制暴):如果是保护断网攻击,首先自动静态绑定网关的ARP记录。如果攻击方将目标转移到欺骗路由器,一旦遭受路由器ARP攻击,ARP防火墙发现断网,则会像攻击方的手段一样,向路由器高频率发送ARP应答单播数据包,以覆盖路由器上错误的ARP记录。
缺点:增加网络负担!成功率也并不是100%。
360中的ARP防火墙一般默认不开启,在需要的时候手动开启。
3、在企业级交换机上启用DAI技术
通过交换机查DHCP Snooping表的方式,核对ARP协议包源IP和MAC的信息是否正确。从源头防护ARP欺骗!
DHCP Snooping技术:DHCP Snooping是DHCP(Dynamic Host Configuration Protocol)的一种安全特性,监听DHCP ACK、NAK、Offer报文,用于保证DHCP客户端从合法的DHCP服务器获取IP地址。使用DHCP Snooping技术,连接到此路由器的主机必须自动获取IP地址,如果手动则交换机接收不到DHCP ACK、NAK、Offer报文,则会down掉该接口。在企业级交换机上,支持此技术,该技术在交换机中维护一个DHCP Snooping信息表,表中包含了交换机所有端口上主机的IP和MAC地址。获得这些信息的前提是主机与DHCP服务器进行联系,请求IP分配的服务。企业级交换机上的Snooping技术会捕捉该端口上主机请求DHCP服务过程中Discovery数据包带有的MAC地址和ACK数据包带有的IP地址记录到Snooping信息表中。
DAI(Dynamic ARP Inspection)动态ARP检测:DAI 以 DHCP Snooping绑定表为基础,同时开启ARP check功能。ARP check会检测每个端口发出的网络层协议是否是ARP协议,如果是则检测ARP包中发送方的IP地址与MAC地址与DHCP Snooping表中的记录是否匹配。如果匹配则通过,如果不匹配则有两种选择:丢弃或直接down掉该端口,并记录日志。