IPv6中取代ARP的NDP邻居发现协议

墨言 04-22 1.45 K阅读 1评论

首先咱先来谈谈ARP

官话:

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。


通俗点说:

就是在局域网中通信时使用的是MAC地址,而不是常见的IP地址。所以在局域网的两台主机间通信时,必须要知道对方的MAC地址,这就是ARP协议要做的事:将IP地址转换为MAC地址。

从以太网帧来看,以太网帧分为:以太网首部、上层数据部分、以太网尾,三部分。在物理层传输的数据都是使用以太网帧来封装起来传输的(通俗的说就是在数据包头加上以太网首部,数据包尾加上以太网尾),而网络传输是分层进行的,也就是物理层只处理物理层的数据,对于以太网帧中的上层数据部分并不关心。在以太网帧中,以太网首部中存放了目的主机的MAC地址和源主机的MAC用于在以太网中传输数据。所以,在以太网通信中,只知道对方的IP地址是不可以通信的,因为IP地址属于第三层(网络层)的地址,对于物理层的以太网帧来说IP地址属于上层数据部分,以太网是无法识别的,所以就要使用ARP协议获取到对方的MAC地址进行通信。


ARP中存在的安全问题

1、ARP攻击和ARP欺骗

所谓ARP攻击,就是伪造IP和MAC地址进行的攻击或者欺骗。但是在我看来,ARP攻击和ARP欺骗应该是两个概念,ARP攻击所产生的效果就是使目标主机(当然这里默认的是局域网,倘若你处在外网,涉及到内网渗透,以后在具体说内网渗透)断网,这种行为从某种意义上来说是,是损人不利己的,因为攻击者并没有得到什么好处,只是让对方不能上网,但是如果在ARP攻击的基础上,通过嗅探对方的流量,非法获取一些隐私信息,那就大大不同了。


  • 什么是ARP欺骗? 举个例子:

微信截图_20220423205144.png

1.主机A要和主机C通信,主机A发出ARP包询问谁是192.168.1.3?请回复192.168.1.1

2.这时主机B在疯狂的向主机A回复,我是192.168.1.3,我的地址是0A-11-22-33-44-02

3.由于ARP协议不会验证回复者的身份,造成主机A错误的将192.168.1.3的MAC映射为0A-11-22-33-44-02。

  • ARP欺骗的分类

  • 1.主机欺骗,如同上面的栗子,主机B欺骗局域网中的主机A。

    2.网关欺骗,局域网中的主机欺骗网关,从而获取其他主机的进流量。

  • ARP攻击的危害

  • 1.造成局域网中的其他主机断网。

    2.劫持局域网中其他主机或网关的流量,获取敏感信息等。


2、MAC泛洪

跟踪哪些MAC地址在哪些物理端口上的转换表的内存量有限。这样可以通过充斥转换表来利用开关。不知道如何处理多余数据的原始交换机将“无法打开”并将所有网络帧广播到所有端口。


3、MAC复制

在MAC复制攻击中,交换机会误以为两个端口具有相同的MAC地址。由于数据将被转发到两个端口,因此不需要IP转发。



IPv6 中的DNP

12175753b9b7495832.jpg

NDP(neighbor Discovery protocol):是ICMPv6的子协议是IPV6协议体系中一个重要的基础协议,邻居发现协议替代了IPV4的ARP,ICMP路由器发现。它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现,以及重定向等功能。


  • 地址解析:从IP地址解析到数据链路层,地址解析过程中使用了两种ICMPv6报文;邻居请求报文NS(neighbor solicitation)type=135,code=0类似IPV4中ARP请求报文。邻居通告报文NA(neighbor advertisemen type=136,code=0类似IPV4中ARP应答报文)。

  • 跟踪邻居状态:通过邻居到达邻居的通信,会因为各种原因中断,如果目的地失效,则恢复是不可能的,通信失败,如果路径失效,则恢复是可能的。因此节点需要维护一张邻居表,每个邻居都有相应的状态,状态之间可以迁移。

  • RFC2461中定义了五种邻居状态,分别是:未完成(Incomplete)、可达(Reachable)、陈旧(stale)、延迟(Delay)、探查(Probe)。

  • 重复地址检测:DAD(Duplicate Address Detect),是在接口使用某个IPV6单播地址之前进行的,主要是为了探测是否有其他节点使用了该地址。类似IPV4中的免费ARP。在通过DAD检测之前,该接口分配的单播地址不能用于单播通信,成为实验地址,但是仍然会加入两个组播组ALL-NODES组播组和试验地址所对应的Solicited-Node组播组。

  • 路由器发现:用来发现与本地链路相连的路由器,并获取与地址自动配置相关的前缀和其他配置参数。依靠RA type=134(路由器通告),RS type=133(路由器请求)来实现。

  • 重定向:当网关路由器发现报文从其他网关路由器转发更好,就会发送重定向报文告知报文的发送者,让报文发送者选择另一个网关路由器。type=137.报文中携带更好地路径下一跳地址和需要重定向转发的报文的目的地址等信息。



微信截图_20220423210933.png

无状态自动配置是IPv6的一个亮点功能,它使得IPv6主机能够非常便捷地接入到IPv6网络中,即插即用,无需手工配置繁冗的IPv6地址,无需部署应用服务器(例如DHCP服务器)为主机分发地址。无状态自动配置机制使用到了ICMPv6中的路由器请求报文(Router Solicitation)及路由器通告报文(Router Advertisement)。


地址解析过程中使用了两种ICMPv6报文:邻居请求(Neighbor Solicitation)和邻居通告(Neighbor Advertisement)。


重复地址检测使用ICMPv6 NS和ICMPv6 NA报文确保网络中无两个相同的单播地址,所有接口在使用单播地址前都需要做DAD。



现在来好好说说为什么ARP会被DNP取代


它为IPv6提供了改进和附加功能



NDP如何防御ARP欺骗/中毒?

它使用安全邻居发现(SEND)协议。加密生成的地址可确保所要求的NDP消息源是所要求的地址的所有者。

IPv6邻居发现协议(NDP)的功能之一是   将网络层(IP)地址解析为链路层(例如,   以太网)地址,在IPv4中按地址执行的功能   解析协议(ARP)。安全邻居发现(SEND)   协议阻止攻击者访问广播段   从滥用NDP或ARP欺骗主机以发送攻击者   发往其他人的流量,一种称为ARP中毒的技术。      防止ARP中毒和其他针对NDP的攻击   功能,应将SEND部署在阻止访问   广播段可能是不可能的。      SEND使用RSA密钥对产生加密生成的   RFC 3972中定义的地址,是通过密码生成的   地址(CGA)。这样可以确保声称的NDP来源   邮件是所声明地址的所有者。


ARP欺骗如何工作?

ARP欺骗也称为ARP中毒路由(APR)或ARP缓存中毒。

ARP欺骗是一种攻击,恶意行为者通过局域网发送伪造的ARP(地址解析协议)消息。这导致攻击者的MAC地址与网络上合法计算机或服务器的IP地址链接。      一旦攻击者的MAC地址连接到真实IP   地址,攻击者将开始接收任何预期的数据   该IP地址。      ARP欺骗可以使恶意方拦截,修改甚至   停止传输中的数据。 ARP欺骗攻击只能在本地   利用地址解析协议的区域网络。


ARP欺骗攻击如何工作?

步骤   ARP欺骗攻击通常包括:         攻击者将打开ARP欺骗工具,并设置该工具的IP地址以匹配目标的IP子网。流行的ARP的示例   欺骗软件包括Arpspoof,Cain&Abel,Arpoison和   Ettercap。   攻击者使用ARP欺骗工具来扫描目标子网中主机的IP和MAC地址。   攻击者选择目标,然后开始通过LAN发送ARP数据包,其中包含攻击者的MAC地址和   目标的IP地址。   当LAN上的其他主机缓存欺骗的ARP数据包时,这些主机发送给受害者的数据将转给攻击者。   从这里,攻击者可以窃取数据或启动更复杂的数据   后续攻击。
攻击者可能选择检查数据包(间谍),而   将流量转发到实际的默认网关以避免   发现,在转发数据之前修改数据(中间人   攻击),或通过引起部分或全部攻击来发起拒绝服务攻击   网络上要丢弃的数据包的数量。



IPV6 NDP 协议替代 ARP 功能

IPV6 设备通过 NDP 协议,可以实现类似 ARP 协议的功能,如下图所示


121819b9892e046362.jpg


从图中描述中可看到,发送方 A 发送了一个 ICMP 报文,类型为 135,该数据的三层源地址为 A 的 IPV6 地址,目标三层 IPV6 地址为一个请求节点组播地址。


我们在上一节中有介绍到关于请求节点地址的特点,它是一个由 FF02开头的地址,地址一般为 FF02::1:FFXX:XXXX,其中 X 位是 IPV6 地址的后 24 位。图中所示的目标地址则是FF02::1:FF(B 主机的后 24 位),通过构造这样的地址来将 ICMP 类型为 135 的报文发送给接收方 B。

 

可能你会有疑问,那我怎么知道 B 主机 IPV6 地址的后 24 位?请注意,你要访问一个目标,不可能出现目标地址不知道的情况的,你在知晓目标的 IP 地址后才会有相应的访问。因此,ICMP 报文的目标 IP 地址就是 FF02::1:FF(B 主机的后 24位)。

 

那这个报文的二层 MAC 地址又分别是什么呢?源 MAC 地址是 A 的地址,目标 MAC 地址是一个 ICMPv6 的组播地址 33:FF:FF:00:02,要注意的是,不同厂商的产品,这个二层目标 MAC 地址可能不一样。最后接收方收到这样的请求报文后则会把自己的 MAC 地址回复给发送方。这样,发送方就获得了接收方的实际 MAC 地址了。


ICMPv6 报文解决自动化配置

在没有设置 DHCP 功能的前提下可为 PC 或客户机自动配置 IP 地址这个功能算是 IPV6 地址的特有功能了。如下示意图描述了 IPV6 地址的无状态配置过程:

12193689f0d6807570.jpg


首先,自动配置 IP 地址需要有路由器的前提下 PC 才可能自动配置,因此路由器才是关键。如上图所示,路由器会通告 RA 报文,当 PC 收到 RA 报文后则开始了自动配置。在 RA 报文中,包含了路由器设置的地址前缀,自动配置标记等信息,当 PC 收到 RA 包时查看报文中的自动配置信息后再按前缀进行有规则地自配置 IP。RA 报文是一个类型为 134 的报文,该报文的源 IP 地址为路由器的对应接口的 Link-Local 地址,目的地址为所有节点的组播地址,地址是 FF02::1。

 

关于 RA 报文,路由器每 200 秒发送一个,这个时间同样的不同厂商的产品可能时间间隔不太一样,但不管如何,这个报文通告给了 PC,PC 必须要接收到 RA 报文才能开始自动配置 IP。若按 200 秒来看,此时路由器刚发送完 RA 报文,此时 PC 才刚上线,错过了这个 RA 报文,那这样 PC 就要等待下一个 RA 报文,那一等就是 200 秒,这样长的时间我想并不是每个人都这么有耐心的,那怎么解决这个问题呢?RS 报文可以解决这个问题。



RS 报文解决 PC 错过 RA 报文的尴尬

12195287e420182422.jpg

由如上示意图描述可知,RS 报文由 PC 发送,当 PC 连接到网络时,PC 设置为自动获得 IP 则会发送 RS 报文,该报文为 ICMP 类型值 133,源地址为 PC 的 Link-Local 地址,目标地址为所有路由器的节点组播地址,地址为FF02::2。当路由器接收到 RS 报文后立即向 PC 发送 RA 报文,以此让 PC 马上自动配置一个 IPV6 地址。


解决复制地址检测功能

在 IPV4 网络中使用免费 ARP 来检测网络中 IP 地址是否冲突,在 IPV6 网络中则使用 ICMP 类型为 135 的报文来检测 IP 地址冲突,如下图:


122012c6e93a344145.jpg

如图所示,该报文源地址为全 0 的特殊地址,目标地址为源主机的请求节点组播地址,即如图示目标地址为 A 的节点组播地址,这样的报文发送到网络中,如果没有主机回应则代表网络中没有 IP 冲突,若有主机回应则代表了网络中有其他主机配置了与源主机相同的 IPV6 地址。

 

最后总结一下,IPV6 中使用 ICMPv6 报文来解决 ARP 等问题,其中类型值为 135、136 的报文用来取代 ARP功能及检测重复地址,使用 133、134 类型的报文来解决自动配置 IP 地址。

文章版权声明:除非注明,否则均为莫不过一饮溪云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (有 1 条评论,1453人围观)
网友昵称:墨言
墨言 V 博主 Google Chrome 100.0.4896.127 Windows 10 x64 沙发
04-23 回复
文章内容后期若发现有不足之处会慢慢更新[Yellowdog]

目录[+]

取消
微信二维码
微信二维码
支付宝二维码