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

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

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

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

这种方法可行吗?

这种方法中可能存在哪些漏洞

我知道已经有很多尝试。但我仍然想尝试一下。

我计划将C#和.Net用于原型,也许稍后我将继续使用C ++以获得更高的性能

更新:
谢谢大家的时间和想法。
在实际设计某些东西之前,我决定在这方面做更多研究
特别是在“零时差”威胁问题下方指出的问题

最佳答案

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

如果仅计划根据哈希值将应用程序列入白名单,则需要确保白名单中的应用程序在加载之前验证其使用的任何模块。即使对应用程序/安装文件进行了数字签名,也不能保证以后会以恶意方式修改库。

实际上,仅验证可执行文件和库还不够。例如,Xbox Linux hack利用了一个恶意保存文件。它是一个特别准备的保存文件,它导致合法的和经过签名的应用程序以意外的方式运行。并且,当然不可能根据其哈希值将保存文件列入白名单。

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

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

关于c# - 反病毒的另一种方法。我朝着正确的方向前进吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2076653/

10-10 22:37