如何伪造 udp 数据包的源 IP 地址?

Posted

技术标签:

【中文标题】如何伪造 udp 数据包的源 IP 地址?【英文标题】:How to fake source ip-address of a udp-packet? 【发布时间】:2011-01-30 09:44:26 【问题描述】:

考虑以下问题: 您的 ISP 为您提供动态 IP 地址(例如 123.123.123.123)。

我的问题很简单(答案可能不是):

是否可以将带有外部源 IP(例如 124.124.124.124)的单个 udp 数据包发送到固定 IP 服务器?我不需要从服务器得到答案。我只是想知道是否/如何使用伪造的源 IP 地址进行这种单向通信。

服务器和其他人应该无法找出真正的客户端ip。

【问题讨论】:

【参考方案1】:

UDP 数据包实际上没有源(您的)IP 地址。源 IP 地址是发送它的数据包的一部分。所以你必须修改它所包含的数据包。所以虽然它很重要,但它是可能的。 UDP 的数据包结构,enclosing packets 供参考。

【讨论】:

所以我需要设置hole ipv4数据包(包含伪造的ip)并将其发送到服务器? 没错。本质上,您创建一个包含 UDP 信息的假数据包,然后发送它。请问您为什么要这样做? 如果我能够建立一个可以执行任务的原型,我可能会编写一个安全应用程序作为我最后一年的项目,它允许多个客户通过互联网交换数据,而其他人不知道合作伙伴之间存在联系。您对如何实现发送假数据包有什么建议吗? 老实说,我不确定如何做到这一点,只是因为我目前正在学习网络安全课程而知道这一点。也许对此提出另一个 SO 问题,您可能会从其他人那里得到一些建议。 @Alex,您的 ISP 恰好知道您的 IP 地址?如果他们过滤 UDP 数据包,那么他们可以很容易地确保它来自您并丢弃其他任何东西。【参考方案2】:

这是 IP 欺骗。除非你的 ISP 是一个狡猾的俄罗斯人,否则它可能会阻止你这样做(第一个路由器会丢弃数据包,因为它是可疑的)。

如果您不想被识别,您应该尝试找到支持 UDP 的代理...

或者你可以buy a botnet. :)

(如果你没听懂,那是个玩笑,不要那样做)

【讨论】:

有趣。我提出这个问题的原因是因为我试图向西方国家的主要 ISP 证明他们实际上根本不是包过滤,他们不相信我。 这里是another question,带有指向current spoofability trends 的链接。事实证明,超过 10% 的……某些东西是可欺骗的! @Jules,你知道 SE 上有很多俄罗斯人吗? @tu-ReinstateMonica-dorduh 四年后,如果您发现实际上没有过滤,我很感兴趣? :D【参考方案3】:

如果您是 ISP 使用 Egress filtering 并且他们不控制 124.124.124.124 所在的地址块,那么不会。

如果他们确实控制了它并期望它是一个有效的 IP 离开他们的网站,可能。他们可能会将 IP 绑定到 MAC 地址并阻止它。也许不吧。

您可以将电脑的 IP 更改为该地址,然后使用程序发送 udp 数据包。没有“假IP”之类的东西。它们最终都存在。它们要么是合法分配的,要么不是合法分配的。

最后我不建议采取这种行动。

【讨论】:

【参考方案4】:

您需要访问您的 ISP 路由器才能执行此操作。如果您将包含所有信息的原始 UDP 数据包发送到其他服务器,路由器将使用您的真实 IP 将其封装在另一个数据包中。

【讨论】:

所以你认为不可能? 正如@jschoen 所说,这并非小事,而且可能违反了您的 ISP 的服务条款。 你知道如何使用 C# 或 C/C++ 发送一个封闭的数据包(如 jschoen 所说)吗? 路由器只是转发它收到的数据包。它可能(取决于配置)丢弃具有明显虚假源的数据包,但作为规则,路由器不会更改源地址。 NAT 网关和透明代理会。但实际上只有 *** 端点会进一步封装数据包。 @Alex: Reverse path filtering

以上是关于如何伪造 udp 数据包的源 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

确定哪个 IP 地址收到了数据包

更新分段数据包中的UDP校验和

包过滤防火墙无法处理UDP、RPC的协议

SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址

55.伪造UDP数据包

设置 UDP 套接字的源 IP