跳转至

ARP

1. 综述

 简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。 比如有些网吧的机器本身没有硬盘,而是通过局域网连接到服务器。从这些机器上看到的磁盘实际上是共享的服务器的磁盘。

arp

2. ARP协议

  在开始之前,我先来个样例。

windows系统中的arp

C:\Users\cmz>arp -a

接口: 192.168.2.112 --- 0x8
  Internet 地址         物理地址              类型
  192.168.2.1           00-1c-54-57-84-9d     动态
  192.168.2.2           74-ea-3a-07-cf-a7     动态
  192.168.2.3           b0-95-8e-80-63-4a     动态
  192.168.2.5           b0-95-8e-80-63-c6     动态
  192.168.2.58          3c-4a-92-bf-18-ee     动态
  192.168.2.60          74-27-ea-f8-bf-cc     动态
  192.168.2.61          04-33-85-03-fa-48     动态
  192.168.2.62          ec-d0-9f-8f-5b-45     动态
  192.168.2.69          f8-0f-41-17-64-e4     动态
  192.168.2.70          2c-4d-54-bc-d7-a9     动态
  192.168.2.71          44-8a-5b-98-e6-ea     动态
  192.168.2.74          3c-fa-43-ac-32-71     动态
  192.168.2.77          90-3c-92-27-b4-ed     动态
  192.168.2.84          b4-0f-b3-c6-f6-e1     动态
  192.168.2.85          e4-ce-8f-61-19-9c     动态
  192.168.2.87          30-f7-c5-35-ed-ea     动态
  192.168.2.91          2c-56-dc-74-3b-e8     动态
  192.168.2.104         c4-8e-8f-44-49-43     动态
  192.168.2.118         e0-94-67-a0-a9-a1     动态
  192.168.2.119         34-97-f6-25-f4-f0     动态
  192.168.2.127         4c-cc-6a-0b-c8-41     动态
  192.168.2.129         f0-1b-6c-d8-63-34     动态
  192.168.2.131         b0-e1-7e-5a-6c-3b     动态
  192.168.2.135         44-8a-5b-98-c5-af     动态
  192.168.2.137         40-6c-8f-2e-73-6d     动态
  192.168.2.139         7c-11-cb-57-c3-bf     动态
  192.168.2.146         c0-3f-d5-5c-3b-ca     动态
  192.168.2.151         44-8a-5b-8d-84-0c     动态
  192.168.2.154         2c-56-dc-74-3b-66     动态
  192.168.2.159         9c-2e-a1-e7-1b-b1     动态
  192.168.2.163         c8-9c-dc-2b-72-0d     动态
  192.168.2.164         f4-31-c3-9b-c1-c5     动态
  192.168.2.169         44-87-fc-f7-a4-25     动态
  192.168.2.174         4c-7c-5f-76-74-93     动态
  192.168.2.176         80-ea-96-7c-dc-e3     动态
  192.168.2.192         2c-20-0b-1e-f3-f1     动态
  192.168.2.194         80-ed-2c-bc-a3-e5     动态
  192.168.2.196         74-51-ba-66-a1-25     动态
  192.168.2.255         ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

接口: 192.168.254.1 --- 0x13
  Internet 地址         物理地址              类型
  192.168.254.255       ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

接口: 192.168.186.1 --- 0x16
  Internet 地址         物理地址              类型
  192.168.186.254       00-50-56-e1-35-be     动态
  192.168.186.255       ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

接口: 192.168.182.1 --- 0x18
  Internet 地址         物理地址              类型
  192.168.182.254       00-50-56-e9-db-78     动态
  192.168.182.255       ff-ff-ff-ff-ff-ff     静态
  224.0.0.22            01-00-5e-00-00-16     静态
  224.0.0.251           01-00-5e-00-00-fb     静态
  224.0.0.252           01-00-5e-00-00-fc     静态
  239.11.20.1           01-00-5e-0b-14-01     静态
  239.255.255.250       01-00-5e-7f-ff-fa     静态
  255.255.255.255       ff-ff-ff-ff-ff-ff     静态

2.1 ARP介绍

 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。

 以太网协议是目前最流行的通信协议之一。从底层到高层协议家族非常庞大。今天为您介绍一下经常用到却比一定知道的协议。

  • 在链路层上,主机和路由器用他们的物理地址来标志,即48位的物理地址,也是是我们通常所说的网卡地址(MAC地址)。
  • 在网络层上,主机和路由器用逻辑地址来标志,逻辑地址在本地是唯一的,但在全局上不一定。在TCP/IP协议族中称为IP地址,现在常用的版本是IPv4,长度是32位。

 因此需要能够将逻辑地址和相应的物理地址之间进行映射,完成这样的映射可以使用静态映射和动态映射。 静态映射:创建一个表,存储逻辑地址和物理地址之间的关联关系。然后将网络上的每个主机都存储这张表。缺点是映射表必须周期的更新,增加了 网络的开销。 动态地址映射,地址解析协议ARP和逆地址解析协议RARP。地址解析协议ARP,负责完成逻辑地址向物理地址的动态映射,将32位逻辑地址(IP地址)转换为48位的物理地址(MAC地址)。

ARP/RARP在TCP/IP协议族中的位置

ICMP IGMP
   IP
ARP RARP
 ARP是通过一个查找表(ARP缓存)来执行这种转换的。当在ARP缓存中没有找到地址时,则向网络发送一个广播请求,网络上所有的主机和路由器都接收和处理这个ARP请求,但是只有相同IP地址的接收到广播请求的主机或路由器,发回一个ARP应答分组,应答中包含它的IP地址和物理地址,并保存在请求主机的ARP缓存中。其他主机或路由器都丢弃此分组。

2.2 ARP Cache

 缓存的思想无处不在。IP地址对应MAC物理地址,ARP Cahe中存储的就是这些mappings。有缓存自然就会有timeout,当过了某个时间间隔后,缓存就会被清除,否则缓存无限制增长是件非常可怕的事。如果需要,可以用arp命令的-s选项来添加一个永久的缓存条目。

 ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址→MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

 为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。静态项目一直保留在缓存中,直到重新启动计算机为止。

2.3. ARP功能

 OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。

2.4. ARP原理

  • 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
  • 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;

当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:

  • 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
  • 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
  • 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
  • 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
  • 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。

2.5 ARP欺骗

  ARP协议是Address Resolution Protocol(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。所以说从某种意义上讲ARP协议是工作在更低于IP协议的协议层。这也是为什么ARP欺骗更能够让人在神不知鬼不觉的情况下出现网络故障,他的危害更加隐蔽。

2.6 ARP欺骗原理

 首先我们可以肯定一点的就是发送ARP欺骗包是通过一个恶毒的程序自动发送的,正常的TCP/IP网络是不会有这样的错误包发送的,而人工发送又比较麻烦。也就是说当黑客没有运行这个恶毒程序的话,网络上通信应该是一切正常的,保留在各个连接网络计算机上的ARP缓存表也应该是正确的,只有程序启动开始发送错误ARP信息以及ARP欺骗包时才会让某些计算机访问网络出现问题。接下来我们来阐述下ARP欺骗的原理。

  • 第一步:假设这样一个网络,一个Hub或交换机连接了3台机器,依次是计算机A,B,C。
A的地址为:IP:192.168.1.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.1.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.1.3 MAC: CC-CC-CC-CC-CC-CC
  • 第二步:正常情况下在A计算机上运行ARP -A查询ARP缓存表应该出现如下信息。
Interface: 192.168.1.1 on Interface 0x1000003 
Internet Address Physical Address Type 
192.168.1.3 CC-CC-CC-CC-CC-CC dynamic
  • 第三步:在计算机B上运行ARP欺骗程序,来发送ARP欺骗包。

 B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A可不知道被伪造了)。而且A不知道其实是从B发送过来的,A这里只有192.168.10.3(C的IP地址)和无效的DD-DD-DD-DD-DD-DD mac地址。

  • 第四步:欺骗完毕我们在A计算机上运行ARP -A来查询ARP缓存信息。你会发现原来正确的信息现在已经出现了错误。
Interface: 192.168.1.1 on Interface 0x1000003 

Internet Address Physical Address Type 

192.168.1.3 DD-DD-DD-DD-DD-DD dynamic

 从上面的介绍我们可以清楚的明白原来网络中传输数据包最后都是要根据MAC地址信息的,也就是说虽然我们日常通讯都是通过IP地址,但是最后还是需要通过ARP协议进行地址转换,将IP地址变为MAC地址。而上面例子中在计算机A上的关于计算机C的MAC地址已经错误了,所以即使以后从A计算机访问C计算机这个192.168.1.3这个地址也会被ARP协议错误的解析成MAC地址为DD-DD-DD-DD-DD-DD的。问题也会随着ARP欺骗包针对网关而变本加厉,当局域网中一台机器,反复向其他机器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,另外由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了。

3. RARP

3.1 产生

 ARP(地址解析协议)是设备通过自己知道的IP地址来获得自己不知道的物理地址的协议。假如一个设备不知道它自己的IP地址,但是知道自己的物理地址,网络上的无盘工作站就是这种情况,设备知道的只是网络接口卡上的物理地址。这种情况下应该怎么办呢?RARP(逆地址解析协议)正是针对这种情况的一种协议。 RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。

3.2 原理

 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址; 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址; 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用; 如果不存在,RARP服务器对此不做任何的响应; 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

反向地址转换协议(RARP:Reverse Address Resolution Protocol) 反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN

3.3 工作过程

RARP的工作过程如下

  • 1、网络上的每台设备都会有一个独一的硬件地址,通常是由设备厂商分配的MAC地址。PC1从网卡上读取MAC地址,然后在网络上发送一个RARP请求的广播数据包,请求RARP服务器回复该PC的IP地址。
  • 2、RARP服务器收到了RARP请求数据包,为其分配IP地址,并将RARP回应发送给PC1。
  • 3、PC1收到RARP回应后,就使用得到的IP地址进行通讯。

rarp
rarp