指定 MTU 值

问题描述

我正在尝试为一个 uni 项目渗透测试一些 IPSEC 实现,并遵循 this 指南,我被困在:

步骤 1(常见):从不受信任的网络伪造 ICMP PTB 数据包攻击者首先必须伪造适当的 ICMP PTB 数据包(单个数据包就足够了)。这是通过从不受信任的网络上的 IPsec 隧道窃听有效数据包来完成的。然后攻击者伪造一个 ICMP PTB 数据包,指定一个非常小的 MTU 值,它等于或小于 576(对于 IPv4)(对于 IPv6,分别为 1280) .例如,攻击者可以使用 0。该数据包欺骗不受信任网络的路由器的 IP 地址(如果检查源 IP 地址),并且为了绕过 IPsec 保护机制防止盲目攻击,它包含作为有效载荷的外部 IP 数据包的一部分刚刚被窃听。这是攻击者需要发送的唯一数据包。以下步骤均不涉及攻击者。

我知道 MTU 是什么,但是粗体是什么意思?

如何使用 scapy 设置数据包的 MTU 大小?

这意味着我必须将IP数据包的大小设置为小于576字节? 它已经设置为 140 B,至少它用 len 命令显示了这一点。 有一些我没有做对,也许我必须设置 fragmentation

解决方法

我对这个主题一无所知,但一些快速搜索似乎表明它指的是 IPv6 ICMP packet with a type of 2 ("packet too big")

然后通过一些 scapy 的探索,这似乎是您创建一个的方式:

from scapy.layers.inet6 import ICMPv6PacketTooBig

icmp_ptb = ICMPv6PacketTooBig(mtu=0)

当然,您需要进行一些测试来验证这一点。