4

在过去,我编写了 C++ 插件,这些插件绕过了 Winsock 中的 recvfrom() 函数,并丢弃/操纵了来自主应用程序的传入流量。

我现在希望编写一个独立的应用程序,它监听所有接口,读取传入的 UDP 数据包,如果数据包结构与用于攻击我们的已知漏洞匹配,则丢弃它们。

最好的方法是什么?这将在 Windows Server 2008 机器上使用,这些机器具有大量分配给 NIC 的静态 IPv4 地址。我正在考虑可能绕道 Winsock,但由于这不是一个功能丰富的应用程序,所以无论是什么最简单的方法来实现它都会很棒。

注意我开始使用 Pcap.Net 实现这个,但意识到我不能那样丢弃数据包,所以我不确定如何处理这个问题。

4

2 回答 2

3

这可能不是 C# 中的一项简单任务,因为过滤网络可能会将您绑定到在 OS 内核中运行的低级代码。

Windows Server 2008中还有一些 API用于设置您的自定义数据包过滤器。

虽然可能可以包装在 p/invoke 中,但我建议使用 C++ 和本机代码。

您可能会感兴趣的其他阅读材料在 codeproject 上

于 2012-03-04T14:27:20.717 回答
1

您想使用 EasyHook。如果您说它实际上只是您需要担心的一个主要应用程序,您可以创建一个简单的用户模式挂钩来挂钩 send() 和 receive()。您可以查看 oSpy 是如何做到这一点的(尽管 oSpy 的项目非常大)。EasyHook 使挂钩非常容易。

于 2012-03-05T07:48:50.457 回答