arp协议

ARP协议(Address Resolution Protocol)

ARP(既:地址解析协议)协议,是根据IP地址获取物理地址的一个TCP/IP协议。将动态Internet协议地址(IP address)映射到局域网(LAN)中的永久物理机器地址的过程。物理机器地址也称为媒体访问控制或 MAC地址。

ARP的工作实质上是将32位地址转换为48位地址,反之亦然。这是必要的,因为在当今使用的最常见的Internet协议(IP)版本IP版本4(IPv4)中,IP地址的长度为32位,而MAC地址的长度为48位。

ARP在开放系统互连模型(OSI模型Open Systems Interconnection model)的网络第2层和第3层之间工作。MAC地址存在于OSI模型的第2层(数据链路层)上,而IP地址存在于第3层( 网络层)上。

ARP还可以用于基于其他LAN技术的IP,例如令牌环,光纤分布式数据接口(FDDI)和基于ATM的IP 。

在使用128位地址的IPv6中,ARP协议已被Neighbor Discovery protocol取代。

工作原理

当新计算机加入LAN时,将为其分配一个唯一的IP地址,以用于标识和通信。当发往特定LAN上的主机的传入数据包到达 网关时,网关会要求ARP程序查找与IP地址匹配的MAC地址。称为ARP缓存的表维护着每个IP地址及其对应的MAC地址的记录。

IPv4以太网中的所有操作系统均保留ARP缓存。每次主机请求一个MAC地址以便将数据包发送到LAN中的另一个主机时,它都会检查其ARP缓存以查看IP至MAC地址转换是否已存在。如果是这样,则不需要新的ARP请求。如果转换尚不存在,则发送对网络地址的请求并执行ARP。

ARP向LAN上的所有计算机广播请求数据包,并询问是否有任何计算机知道它们正在使用该特定IP地址。当机器将IP地址识别为自己的IP地址时,它将发送答复,以便ARP可以更新缓存以供将来参考并继续进行通信。

不知道自己IP地址的主机可以使用反向ARP(RARP)协议进行发现。

ARP缓存的大小是有限的,并且会定期清除所有条目以释放空间。实际上,地址倾向于仅在缓存中保留几分钟。频繁的更新允许网络中的其他设备查看物理主机何时更改其请求的IP地址。在清理过程中,将删除未使用的条目以及与当前未开机的计算机进行任何不成功的尝试。

代理ARP

代理ARP使网络代理可以回答ARP查询以获取网络外部的IP地址。这样可以将数据包成功地从一个子网传输到另一个子网。

广播ARP查询数据包时,将检查路由表以查找LAN上哪个设备可以最快到达目的地。该设备通常是路由器,它成为网关,用于将网络外部的数据包转发到其预期的目的地。

ARP欺骗和ARP缓存中毒
任何使用ARP的局域网都必须警惕ARP欺骗,也称为ARP毒药路由或ARP缓存毒害。ARP欺骗是一种设备攻击,黑客通过LAN广播错误的ARP消息,以便将攻击者的MAC地址与网络中合法计算机或服务器的IP地址链接起来。一旦建立了链接,目标计算机就可以将发送给原始目的地的帧首先发送给黑客的计算机,以及发送给合法IP地址的任何数据。

ARP欺骗会严重影响企业。以最简单的形式使用时,ARP欺骗攻击可以窃取敏感信息。但是,这些攻击还可以超越此范围,并促进其他恶意攻击,包括:

中间人攻击

MITM,全称为Man In The Middle,即中间人。地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷。ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关 系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。

ARP请求为广播形式发送的,网络上的主机可以自主发送 ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。

ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器。攻击者再对目标和网关之间的数据进行转发,则可作为一个“中间人”,实现监听目标却又不影响目标正常上网的目的。
具体攻击实现
具体的中间人攻击,大体上可以分为以下几个步骤:

  1. 对目标主机进行ARP欺骗,声称自己是网关。

  2. 转发目标的NAT数据到网关,维持目标的外出数据。

  3. 对网关进行ARP欺骗,声称自己是目标主机。

  4. 转发网关的NAT数据到目标主机,维持目标的接收数据。

  5. 监听劫持或者修改目标的进入和外出数据,从而实现攻击。

其中1,3都是ARP欺骗;2,4都是转发,下面会分别说到。

ARP欺骗

  ARP欺骗又叫ARP投毒(ARP poisoning),实现方式有很多,但其原理都是通过不断向攻击目标发送ARP replies,从而实现重定向从一个主机(或所有主机)到另一个主机的数据包的目的。

这里以dsniff工具集的arpspoof命令为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
#  arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host

其中,

-i 指定使用的接口。

-c 指定当还原arp配置时t使用的MAC地址,默认为使用原来的MAC。(即当停止arpspoof命令后,默认取消毒化)

-t 指定要毒化的主机,如果不指定的话默认为局域网下所有主机。

-r 双向毒化(host和target),从而双向扑捉数据。(仅当同时指定 -t的时候才有效)

host 为你想要伪装成的主机,通常是本地网关。所有从target到host的数据包都被重定向到本机。

拒绝服务攻击

这是新呈现的一种攻击办法,D.O.S又称拒绝服务攻击,当大量的衔接请求被发送到一台主机时,因为主机的处理才能有限,不能为正常用户提供服务,便呈现拒绝服务。这个过程中假如运用ARP来躲藏自己,在被攻击主机的日志上就不会呈现真实的IP攻击,也不会影响到本机。

会话劫持

arp攻击的防护办法

ARP 高速缓存超时设置

在ARP高速缓存中的表项一般都要设置超时值,缩短这个这个超时值能够有用的避免ARP表的溢出。

IP+MAC访问操控

单纯依托IP或MAC来树立信赖联系是不安全,抱负的安全联系树立在IP+MAC的根底上,这也是咱们校园网上网有必要绑定IP和MAC的因素之一。

静态ARP缓存表

每台主机都有一个暂时寄存IP-MAC的对应表ARP攻击就经过更改这个缓存来到达诈骗的意图,运用静态的ARP来绑定正确的MAC是一个有用的办法,在命令行下运用arp -a能够检查当时的ARP缓存表。

自动查询

在某个正常的时间,做一个IP和MAC对应的数据库,以后定时检查当时的IP和MAC对应联系是否正常,定时检查交流机的流量列表,检查丢包率。

ARP本身不能形成多大的损害,一旦被关联使用,其风险性就不可估量,因为ARP自身的缺陷,使得防备ARP的攻击很棘手,经常检查当时的网络状况,监控流量对一个站长来说是个很好的指标。

ARP报文格式

ARP消息格式旨在容纳各种大小的第二层和第三层地址。此图显示了最常见的实现,该实现将32位用于第三层(“协议”)地址,将48位用于第二层硬件地址。这些数字当然对应于以太网使用的Internet协议版本4和IEEE 802 MAC地址的地址大小。

组成ARP消息后,将其向下传递到数据链路层进行传输。消息的全部内容成为实际在网络上发送的消息(例如以太网帧)的有效负载。请注意,ARP消息的总大小是可变的,因为地址字段的长度是可变的。但是,通常这些消息很小:例如,对于在IEEE 802 MAC地址中承载IPv4数据报的网络,它们只有28个字节。

属性 大小(bytes) 描述
HRD 2
PRO 2 Protocol Type: This field is the complement of the Hardware Type field, specifying the type of layer three addresses used in the message. For IPv4 addresses, this value is 2048 (0800 hex), which corresponds to the EtherType code for the Internet Protocol.
HLN 1 Hardware Address Length: Specifies how long hardware addresses are in this message. For Ethernet or other networks using IEEE 802 MAC addresses, the value is 6.
PLN 1 Protocol Address Length: Again, the complement of the preceding field; specifies how long protocol (layer three) addresses are in this message. For IP(v4) addresses this value is of course 4.
OP 2
SHA (Variable, equals value in HLN field) Sender Hardware Address: The hardware (layer two) address of the device sending this message (which is the IP datagram source device on a request, and the IP datagram destination on a reply, as discussed in the topic on ARP operation).
SPA (Variable, equals value in PLN field) Sender Protocol Address: The IP address of the device sending this message.
THA (Variable, equals value in HLN field) Target Hardware Address: The hardware (layer two) address of the device this message is being sent to. This is the IP datagram destination device on a request, and the IP datagram source on a reply)
TPA (Variable, equals value in PLN field) Target Protocol Address: The IP address of the device this message is being sent to.

arp常用命令

1
2
3
arp -a 查所有记录
arp -d 清除
arp -s 绑定IP和MAC

抓包工具

  • mac Debookee
  • windows Fidder

常见问题

ARP缓存

当网络中一台提供服务的机器宕机后,当在其他运行正常的机器添加宕机的机器的IP时,会因为客户端的ARP table cache的地址解析还是宕机的机器的MAC地址。从而导致,即使在其他运行正常的机器添加宕机的机器的IP,也会发生客户依然无法访问的情况。

解决办法是:当机器宕机,IP地址迁移到其他机器上时,需要通过arping命令来通知所有网络内机器清除其本地的ARP table cache,从而使得客户机访问时重新广播获取MAC地址

Author: suce
Link: https://haoubox.cn/2021/04/27/arp协议/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.