一种不同的反病毒方法。我正朝着正确的方向前进吗?

时间:2010-01-16 08:09:20

标签: c#

我目前正在设想一个像防病毒一样的系统,但也使用白名单,即

通过拥有已知合法程序的数据库来防止病毒运行

是的,有Windows UAC,但仍有许多病毒“解决”它。我正在计划一个更可靠的系统。

我的系统还有一个已知威胁数据库(加密哈希)。

这种方法是否可行,

此方法可能存在哪些循环漏洞

据我所知,已经有很多尝试。但我还想尝试一下。

我打算使用C#和.Net作为原型,我可能会继续使用C ++来获得性能

更新: 谢谢大家的时间和想法。 在实际设计之前我决定在这个领域做更多的研究 特别是在Zeroday威胁问题下面指出

4 个答案:

答案 0 :(得分:4)

可执行文件使用的DLL怎么样?你也哈希吗?病毒可以替代DLL。

答案 1 :(得分:2)

之前已经提出过,有些产品可以做到这一点。 (Faronics Anti-Executable就像这样工作)

这种方法存在两个主要问题:

  1. 病毒可以将自身嵌入任何文件中;不仅仅是EXE。程序可以加载DLL和其他代码(宏,脚本等),程序可能包含可被恶意文档和其他文件利用的错误(例如缓冲区溢出)。

  2. 每次修补系统或以其他方式合法修改软件时,您还需要更新白名单。

答案 2 :(得分:2)

Appsense Application Manager等产品已经实现了这一目标。它暂时作为安全产品投入使用,但他们改变了机智,并专注于许可。我认为这是因为它作为安全产品效果不佳。

答案 3 :(得分:1)

如果您计划使用一组有限的应用程序,并且可以与应用程序开发人员合作,则可以使用代码签名模型。您可以在大多数移动操作系统中找到类似的方法。您必须签署所有可执行模块,包括库,并且需要验证它们是否具有有效签名,而不是使用根证书进行修改。

如果您只计划根据其哈希值列出白名单应用程序,则需要确保列出白名单的应用程序在加载之前验证它们使用的任何模块。即使应用程序/安装文件经过数字签名,也不能保证以后以恶意方式修改库。

实际上,仅仅验证可执行文件和库是不够的。例如,Xbox Linux hack使用恶意保存文件。它是一个专门准备的保存文件,会导致合法且已签名的应用程序以意外方式运行。而且,当然不可能根据哈希值白名单保存文件。

保留数据库的另一个问题是zero day attacks。您需要领先于为新攻击创建哈希值并将这些更新传播给您的用户,否则他们将容易受到所有新攻击。除非您只允许执行白名单的应用程序,否则这将是非常严格的限制。

恕我直言,在开放的平台上构建这样一个系统真的很困难。祝你好运。