1

我必须编写一个嗅探网络数据包的程序(第 1 部分 - 简单部分)。
而且我必须更新程序(第 2 部分),以便它能够终止连接。
具体要求如下:

通过指定数据链路层和网络层信息(包括适当的源和目标 MAC 和 IP 地址)来构造原始数据包。这些数据包旨在终止连接。为此,您应该使用 SOCK_RAW 作为套接字类型,以便能够自己设置标头信息。

谁能给我一些关于第二部分的想法?
我应该劫持会话,对其中一个用户应用 DoS 攻击吗?

我需要的只是一些关于如何终止连接的提示。我正在使用 C 编程语言,这是安全课程的课程作业。

4

4 回答 4

1

取决于终止连接的含义。您可能意味着为 TCP 电路或 UDP 流提供端点。

或者您可能意味着在 TCP 流中间发送可接受的 RST 以指示流的结束。要实现这一点,您必须知道对方期望的序列号。

无论哪种方式,很明显你在课堂上没有专心。看来,这项任务的全部目的是让你了解 IP 数据包的原始布局,可能还有 TCP/UDP。我建议您购买有关该主题的教科书(无疑是您的讲师推荐的)和/或阅读 Wikipedia。

于 2010-03-09T08:48:47.483 回答
1

对于这个任务,我将使用pypacp,它是一个 python 数据包捕获和注入库。Pypcap 使用原始套接字来伪造数据包。如果由于某种奇怪的原因您被迫使用 C,那么这个项目将更加困难。在这种情况下,您应该使用 libpcap 来嗅探该行,原始套接字库将取决于您开发的平台。

您可以嗅探寻找 TCP 序列 ID 的行。基于此 ID,您可以伪造 RST 或 FIN 来断开连接的一侧。困难的部分将是尝试使用原始套接字来维护 TCP 连接。维护应用层连接几乎是不可能的,HTTP 将是一个更容易维护的协议,但如果它是 http,那么劫持 cookie 会更容易。

于 2010-03-09T16:43:50.140 回答
0

对于 C 库,我无法为您提供帮助——不是我的强项,但似乎应该有一些东西在那里。

但似乎您在第 2 部分中尝试做的是防止 DOS,而不是导致 DOS!

在这里检查:

http://en.wikipedia.org/wiki/Denial-of-service_attack

有关 DoS 攻击的内容。正如 PP 所说,有许多与连接滥用有关的攻击,所以你想弄清楚你的任务是关于哪一个 - 你需要和你的教授核实一下。例如,上面的 Wiki 页面提到了 SYN Floods - 但几乎任何面向连接的协议都将面临攻击的风险,即用太多的连接请求填满连接池,然后永远不会关闭它们。

我假设,阅读作业,你的工作是弄清楚如何通过关闭攻击者打开的连接来解决这个问题。这意味着你们都必须弄清楚攻击是如何工作的,然后弄清楚如何从中恢复。

提示:用大量关闭连接请求攻击服务器不是攻击。这也不是很有用,因为您不一定要关闭打开的连接。但是损坏是由开放连接请求引起的。看这里:

http://en.wikipedia.org/wiki/SYN_flood

举一个例子。

于 2010-03-09T18:25:10.127 回答
0

你可以使用 libpcap 来帮助嗅探数据包。libpcap 由 tcpdump 团队开发。

于 2010-03-09T18:35:56.907 回答