最近有人决定向我展示他发现的使用 SYN/TCP 的新拒绝服务方法的 POC。我认为这完全是胡说八道,但在向他解释了 SYN-SYN/ACK-RST 之后,他让我无语。他告诉我“如果你用来欺骗发送 SYN/ACK 数据包的服务器无法接收 RST 数据包怎么办?”
我不知道。他声称服务器将继续尝试发送 SYN/ACK 数据包,并且数据包率将继续增加。
有没有道理呢?谁能详细说明一下?
显然,它的工作方式是这样的:
他将 SYN 数据包的 IP 欺骗到目标的 IP。然后他将 SYN 数据包发送到一些随机服务器
他们都用他们的 SYN/ACK 数据包回复目标 IP,当然
目标用 RST 响应,正如我们所知,
但他以某种方式阻止目标发送 RST 或保持随机服务器处理它
有了这个,显然服务器将继续尝试发送 SYN/ACK 数据包,从而产生某种“滚雪球”效应。
如您所知,“尝试打开端口”数据包流应该是这样工作的:
“封闭端口”版本很简单:
如果远端不返回 RST 数据包,这是一种非常常见的防火墙配置:
我所说的极其普通是指极其普通。所有 TCP 堆栈都必须处理这种情况,因为它太常见了。
您的某人提出的变体:
他巧妙地发现的“攻击”是SYN Flood攻击,自 1990 年代初就广为人知。由于防火墙阻止了 RST 数据包,这些服务器不会知道关闭连接,因此它们确实会根据正常的 TCP 重试时间重新传输 SYN/ACK 数据包。然而,所有现代 TCP 堆栈都包含一些内置于其中的 SYN-flood 保护的可配置措施。
这仍然是一种有点有效的攻击方法,尽管它造成的主要危害是通过用太多的数据包来淹没外围安全设备来跟踪。没有 SYN 的 SYN/ACK 应该非常便宜地丢弃在地板上,但如果它们的数量足够多,它可能会压倒防火墙。