C# 一种不同的反病毒方法。我走的方向对吗?

C# 一种不同的反病毒方法。我走的方向对吗?,c#,C#,我目前正在构思一个像反病毒一样工作的系统,但也使用了白名单,即 通过拥有已知合法程序的数据库防止病毒运行 是的,有Windows UAC,但仍然有许多病毒“绕过”它。我正在计划一个更可靠的系统 我的系统还有一个已知威胁的数据库(加密哈希) 这个办法可行吗, 此方法中可能存在哪些循环漏洞 我知道有很多人试图这样做。但我还是想尝试一下 我计划使用C++和.NET作为一个原型,也许我会继续执行C++,以后的性能 更新: 谢谢你们的时间和想法。 在实际设计之前,我决定在这方面做更多的研究 特别是正如下面

我目前正在构思一个像反病毒一样工作的系统,但也使用了白名单,即

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

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

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

这个办法可行吗,

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

我知道有很多人试图这样做。但我还是想尝试一下

<>我计划使用C++和.NET作为一个原型,也许我会继续执行C++,以后的性能

更新: 谢谢你们的时间和想法。 在实际设计之前,我决定在这方面做更多的研究
特别是正如下面指出的零日威胁问题

那么可执行文件使用的DLL呢?你也把它们炒了吗?病毒可以替换DLL。

可执行文件使用的DLL呢?你也把它们炒了吗?病毒可以替换DLL。

这是以前提出的,现在有一些产品可以做到这一点。(Faronics反可执行文件的工作原理如下)

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

  • 病毒可以嵌入任何文件中;不仅仅是前任。程序可以加载DLL和其他代码位(宏、脚本等),并且程序可能包含可被恶意文档和其他文件利用的bug(如缓冲区溢出)

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


  • 这是以前提过的,有一些产品可以做到这一点。(Faronics反可执行文件的工作原理如下)

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

  • 病毒可以嵌入任何文件中;不仅仅是前任。程序可以加载DLL和其他代码位(宏、脚本等),并且程序可能包含可被恶意文档和其他文件利用的bug(如缓冲区溢出)

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


  • 有些产品像Appsense应用程序管理器已经做到了这一点。它暂时被宣传为一种安全产品,但他们改变了策略,将重点放在授权上。我认为这是因为它作为一种安全产品没有发挥太大的作用。

    像Appsense Application Manager这样的产品已经做到了这一点。它暂时被宣传为一种安全产品,但他们改变了策略,将重点放在授权上。我认为这是因为它作为一种安全产品的效果不太好。

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

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

    实际上,仅仅验证可执行文件和库是不够的。例如,利用恶意保存文件。这是一个特别准备的保存文件,它会导致合法和已签名的应用程序以意外的方式运行。当然,不可能根据散列值将保存文件列为白名单

    保存数据库的另一个问题是。在为新攻击创建哈希值并将这些更新传播给用户方面,您需要走在前面,否则用户将容易受到所有新攻击的攻击。除非您只允许执行白名单上的应用程序,这将是非常严格的


    嗯,在开放平台上构建这样一个系统真的很困难。祝您好运。

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

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

    实际上,仅仅验证可执行文件和库是不够的。例如,利用恶意保存文件。这是一个特别准备的保存文件,它会导致合法和已签名的应用程序以意外的方式运行。当然,不可能根据散列值将保存文件列为白名单

    保存数据库的另一个问题是。在为新攻击创建哈希值并将这些更新传播给用户方面,您需要走在前面,否则用户将容易受到所有新攻击的攻击。除非您只允许执行白名单上的应用程序,这将是非常严格的


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

    不。只有可执行文件和脚本,因为只有可执行文件才能渗透到系统中。散列DLL会使数据库变大,这在我的应用程序中会适得其反approach@vivek:但是病毒也可以存在于DLL中。典型的软件安装会下载一个.exe和几个DLL,其中一些会转到windows/s