使用 IP 选项,我们可以指定 IP 数据包在连接到服务器时要采用的路由。如果我们知道某个服务器根据 IP 地址提供了一些额外的功能,我们能否通过伪造 IP 数据包来利用这一点,以便源 IP 地址是特权 IP 地址,而源路由上的其中一个主机是我们自己的。
因此,如果特权 IP 地址是 x1,服务器 IP 地址是 x2,我自己的 IP 地址是 x3。我从 x1 向 x2 发送一个数据包,该数据包应该经过 x3。x1 实际上并没有发送该数据包。只是 x2 认为该数据包来自 x1 并经过 x3。现在,如果 x2 使用相同的路由策略(出于对 x1 的尊重),那么所有数据包都将由 x3 接收。
目的地是否通常会使用与路由头中指定的相同 IP 地址序列,以便来自服务器的数据包通过我的 IP,从而我可以获得所需的信息?
在上述情况下,我们不能欺骗 TCP 连接吗?
这种攻击在实践中有用吗?有人用过吗?
答案1
现在有一些好的想法。但不要害怕,这已经是已知的攻击:
- http://www.citi.umich.edu/u/provos/papers/secnet-spoof.txt
- http://technet.microsoft.com/en-us/library/cc723706.aspx
由于源路由数据包通常在组织边界处被阻止,并且源路由在服务器操作系统(例如 FreeBSD 和 OpenBSD,以及至少一些 Linux 发行版,例如 Arch Linux)中默认处于禁用状态,因此其危险性有所降低。引用第一个链接:
由于大量组织阻止源路由数据包和地址位于其网络内的数据包,此通报的影响大大减弱。因此,我们向技术人员提供此信息,作为“提醒”信息,并重申 TCP 序列号的随机化不是应对此攻击的有效解决方案。