如何在 TCP 会话期间实现源伪造?

How implement source faking during TCP session?

想法是两台不同的机器(在两个不同的 NAT 后面)连接到 public-server。

他们尝试与这样的 public 服务器建立 TCP 连接... 那么在代理数据流期间可能会发生魔法! 在此会话期间更改整个 tcp/ip 堆栈上的源地址和目标地址。

目标 - 将此第三方作为代理人排除在进一步沟通之外...

首先,您需要一个服务器,Peer 将向其发送数据或其他内容,以告知服务器需要向其发送 syn-ack。

然后首先Peer A 发送一个数据包到Peer B 的低TTL 值的地址,以便它在中间被丢弃并且不会到达B 的NAT。它将继续发送此数据包,直到来自服务器的数据包到达它,其中包含 B 的源地址(源伪造)的 syn-ack。 A 将与服务器握手,但 A 会认为他正在与 B 握手。

B 会发生完全相同的事情。B 将与服务器握手,但会认为它已与 A 完成。在两端的握手完成后,数据传输开始在 A 和 B 之间作为 P2P 连接。

这是源伪造,因为服务器正在与假装其中一个对等点的对等点握手。这就是两个对等 NAT 相互开放的方式。