IPv4 分段 - 重叠分段

网络工程 ipv4 碎片化
2021-08-03 11:10:50

什么时候创建重叠片段,为什么?是否有任何合法的场景使用它们,或者它们只是被攻击者使用,比如在泪珠攻击中?接收器如何重新组装这些片段(因为有不止一种方法可以做到这一点)?

2个回答

对于“正常”流量,不应出现重叠片段。它们通常表明有人试图绕过某些安全系统。

你是对的,有不同的方法可以重新组装它们。不同的实现方式不同,这就是为什么可以使用攻击来绕过防火墙并使这些不同的系统“看到”不同的东西。

另一种没有重叠片段的方法是发送一个 TCP 数据包,该数据包的 TTL 太低而无法到达目标主机,但又足够高以通过防火墙。防火墙会看到数据包,但目标主机不会。如果防火墙在其实现中很幼稚,它将缓存它所看到的。然后,如果您重新传输相同的 TCP 数据包,但具有不同的数据,防火墙会认为这是一次正常的重新传输,不会再次检查数据包,但对于主机,它将是第一次收到 TCP 数据,它将使用第二个版本。

有很多方法可以误导防火墙。重叠片段就是其中之一。一个好的防火墙应该检测到这种行为并阻止会话。

Sander Steffann 提供了一个现代现实的场景。然而,一个悬而未决的答案是,如果重叠片段只是邪恶的,那么为什么它们会得到支持?

从理论上讲,IPv4 是通用的(读起来很慷慨),足以支持多种上层协议和不同的第 2 层技术。因此,它表示存在可以通过给定第 2 层技术的最大传输单元 (MTU) 大小。例如,一般以太网的 MTU 为 1500 字节。

现在在网络中,来自应用程序的连续 IP 数据包可以通过不同的路径,即使它们具有相同的目的地。这些并行路径可能具有不同的 MTU 大小。然而,重组必须只发生在目的地。因此,两个不同的片段可能已经遍历了两条不同的路径,进而被进一步分割成更小的数据包。现在当它们到达目的地时,将会有多个不同大小的片段相互重叠,并且由目的地重新组装算法来处理这种情况。

如果重新传输的数据包采用不同的路径,而原始数据包尚未完全重组,也会发生同样的情况。