ARP:Address Resolution Protocol,地址解析协议

目的:建立IP地址与MAC地址之间的映射关系,使这两种寻址方案之间的联合称为可能。

大白话就是:我知道你名字但我不知道你坐哪里,所以我会在该网段中喊你

传统ARP

  • 根据已知IP地址解析到未知MAC地址

ARP请求:

因为ARP请求报文基于广播地址传递,所以你会发现它具有网络层的以太网包头,而且所以不能传递到其他广播域

协议类型:0806;IPv4为0800;IPv6为8600.

操作码:1为请求,2为响应。

目的地址和目标MAC地址:因为目前只知道目标的IP,所以目的地址填广播的,MAC无意义的。

ARP应答:

操作码:2响应

目的地址和目标MAC地址: 填为应答者,那么发送方就知道目标的MAC地址了。

且当目标PC收到发送的ARP请求时会将发送方的信息记录到ARP缓存表中。

ARP缓存表:

  • 用于存储IP地址及经过解析的MAC地址的对应关系
  • 动态类型的ARP条目就是通过ARP学习而来,具有一定的超时时间。

Windows相关命令

  • arp -a:查看ARP缓存表
  • arp -d:清空ARP缓存表

代理ARP

  • 当一个节点代表另一个节点响应ARP请求这个行为称为代理ARP。
  • 代理ARP的最初设计考虑是帮助解决子网掩码配置错误的主机间通信问题。
  • 此时B掩码配置错误导致B辨析和D在同一网段,但过不了”网关“。
  • 但此时若该路由器在某一接口开启”代理ARP“,它会用该接口的MAC地址去回复B的ARP请求。
  • 随后B的封装:目标IP为D的,目标MAC为路由器该接口的。

若此时:当B、D都配置错误时,路由器B这边口开,D那边关;则当B ping D时,ping不通。

原因为:包从D到B会不来了,因为无法ARP。

但代理ARP不会什么时候都帮,及当该路由器的路由表中无到达另一个网段的信息时不会帮。

ARP探测与免费ARP

ARP探测:ARP Probe

  • 用来检测IP地址冲突,也称为DAD。

ARP探测是设备在网络中主动发送 ARP请求 (ARP Request)的过程,目的是检测某个IP地址是否已被其他设备占用,或验证目标设备的存在。它通常用于初始化网络连接、维护ARP缓存,或在动态IP分配(如DHCP)时检测IP地址冲突。

免费ARP:Gratuitous ARP

  • 主要作用:检测IP地址冲突、更新ARP缓存表、宣告节点存在、冗余切换。

免费ARP是设备主动发送 ARP请求 (而非应答),但请求的目标IP地址是自身IP地址

免费ARP请求:

  • 一般也称为ARP公告,用来正式”声明“使用该IP地址。

免费ARP响应

注意:免费ARP的报文特征[Sender IP=Target IP],即发送者IP地址=目标IP地址。

ARP攻击

ARP攻击是一种利用ARP协议漏洞进行的网络攻击行为。

在这种攻击中,攻击者会发送虚假的ARP消息,将其自身的MAC地址与其他设备的IP地址关联起来,误导网络中的设备将数据发送给攻击者,而不是正确的目标。

ARP攻击可能会导致以下后果:

  • 网络通信中断或异常,受攻击的设备可能无法正常与目标通信。
  • 信息泄露,攻击者可能截取本应发送给其他设备的数据。

一些常见的ARP攻击手段包括:

  • ARP欺骗:发送虚假的ARP响应来篡改ARP缓存。
  • ARP泛洪:发送大量无效的ARP请求或响应,导致网络拥塞和混乱。

为了防范ARP攻击,可以采取以下措施:

  • 使用静态ARP映射,手动配置关键设备的IP与MAC地址映射的关系。 如windows中用arp -s添加静态项。
  • 安装网络安全防护软件,监测和阻止ARP攻击行为。
  • 定期检查网络设备的ARP缓存,发现异常及时处理。

以科莱做ARP攻击演示:

1.我们先抓到网关向目标主机回的ARP包,即ARP_Response:

2.将网关的MAC地址,即发送者MAC地址做修改,从而使目标主机找不到网关,从而实现欺骗。

3.将做好的欺骗的包发送出去

完成