注入数据包以终止TCP连接

时间:2010-03-09 08:43:04

标签: c security ip packet-sniffers packet-injection

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

  

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

有人可以在第二部分给我一些想法吗? 我是否应该劫持会话,对其中一个用户进行DoS攻击?

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

4 个答案:

答案 0 :(得分:1)

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

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

无论哪种方式,你都没有在课堂上引起注意。看来,分配的全部内容是让您了解IP数据包的原始布局以及可能的TCP / UDP。我建议你购买一本关于这个主题的教科书(毫无疑问是你的讲师推荐的)和/或阅读维基百科。

答案 1 :(得分:1)

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

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

答案 2 :(得分: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

举个例子。

答案 3 :(得分:0)

您可以使用libpcap来帮助进行数据包嗅探。 libpcap是由tcpdump团队开发的。