通过 hping3 建立 TCP 连接

通过 hping3 建立 TCP 连接

当客户端通过 hping3(非欺骗)发送 10 个 TCP SYN 数据包时,服务器会响应并发送 10 个 TCP SYN+ACK 数据包。现在客户端应该应答服务器并通过发送 10 个 ACK​​ 数据包来建立连接,但客户端发送 10 个 RST 并终止半开连接(我猜这是因为 linux 内核响应)。

我如何才能每秒发送 10 个 SYN 数据包(到具有不同源端口的同一目的地)并响应 SYN+ACK,发送 ACK 并建立连接?非常感谢

答案1

您不能在本机 TCP/IP 堆栈之外的用户空间中制作数据包,并期望内核接受未经请求的 SYN/ACK 数据包作为响应。内核按照以下方式 RST 数据包是正确的RFC 标准。我怀疑 hping3 能否实现您所寻找的功能。

如果你熟悉 Python,你可以看看斯卡皮这将允许你发送在用户空间接收数据包。下面是一个简单的例子在 Scapy 中创建三次握手。

答案2

hping3 通常用作攻击工具,试图破坏正常的做事方式(在所述情况下为三次握手),以对目的地造成损害。

拥有建立大量 TCP 连接的工具可能被归类为压力测试工具而不是攻击工具。

-S这是 hping3 最流行的选项,指的是 SYN 泛洪攻击,我猜你用的就是这个。在这种模式下,hping3 会发送大量 SYN 消息,但会故意不发送三方握手的最后一条消息。连接保持“半开”状态,受害者已经为所有这些连接投入了大量资源(理论上)。

在您的案例中,攻击机器的内核几乎立即发出 RST 消息,从而阻止攻击完成。@MarkoPolo 提到了原因。如果攻击成功,您实际上应该会看到受害者对每个 SYN 对应的 SYN-ACK 消息进行多次重传尝试。

如果您的计划实际上是成功执行攻击,那么我建议您输入防火墙规则以有效地删除传出的 RST 消息。

iptables –A OUTPUT –p tcp –s 192.168.56.101 --tcp-flags RST RST –j DROP

相关内容