带有内置 AV 的编译器 = 没有病毒开发?

Posted

技术标签:

【中文标题】带有内置 AV 的编译器 = 没有病毒开发?【英文标题】:Compiler with built-in AV = No virus development? 【发布时间】:2010-11-16 21:43:07 【问题描述】:

是否可以生成启发式检查恶意软件行为的编译器?如果可能,为什么没有实施?这不是非常有助于防止此类病毒的产生吗,我的意思是为什么要等到它们出现后才阻止它们?

即使这些人使用的编译器不使用内置 AV 的“建议”,个人 AV 也可以检测到该文件并将文件评级为有风险(有点像 SSL 证书)

【问题讨论】:

【参考方案1】:

你做了很多假设:

病毒编写者无法禁用任何开源(甚至闭源)编译器的内置 AV。鉴于 DRM 是如何持续快速地被破坏的,这似乎不太可能。 病毒编写者不能简单地使用现有的 pre-AV 编译器。 病毒编写者无法创建自己的非 AV 编译器。 没有合法的程序会触发编译器的反病毒启发式算法。 今天的编译器编写者可以准确地预测和建模所有当前和未来的 AV 行为,以便生成甚至远程有效的启发式方法。

在我看来,这不是首发。

您对使用非 AV 编译器的评论本质上是“代码签名”,并且多年来(几十年?)一直是一种常见做法。然而,那里的障碍是证书的分发,并提出一个合理的可信签名者列表。它们是足够大的问题,没有人找到解决它们的方法,同时又不严重限制计算机的实用性。

有关与此主题密切相关的更多信息,请参阅this paper by Ken Thompson。

【讨论】:

公平积分哥们。对于前 4 点——这就是我说的原因——如果最终的“程序”没有被扫描,那么他们就不会得到某种加密的“通行证”。如果该文件以“未经检查”的方式发布,则证书将丢失或不准确,然后接收端的另一个 AV 可能会将其标记为 risky,从而导致更彻底的扫描。 即使你解决了证书分发问题和信任谁的问题,你仍然会遇到病毒编写者禁用编译器的病毒检查部分的问题,但是不是标记为干净的部分。 是的,这实际上是另一个好点,不过感谢您的建设性批评:) 解决上述许多问题的一种可能的解决方法是让编译器运行它对代码的分析,然后将机器可读的证明嵌入到可执行文件中,以证明代码符合某些标准。不需要证书,用户 AV 只需检查证明。这适用于程序可以声称展示的各种属性。如果一组标准属性变得普遍,恶意软件通常会因疏忽而引人注目。 如何防止人们编写一个编译器(或更改现有的编译器)来嵌入所需的证明而不运行任何分析?【参考方案2】:

现有的 AV 通常采用黑名单方法。 (将威胁签名与文件进行比较。)根据定义,这对于全新的威胁几乎毫无用处。

您可以尝试分类的每个操作最终都会阻止合法程序;如果这些操作没有合法用途,操作系统设计者会出于安全原因将其删除。

【讨论】:

我知道你的第一点,因为我目前正在为我的本科项目开发遗传算法 AV,这就是我决定这样做的原因之一(静态签名比较是主要的今天用于检测哪个 IMO 相当差的方法)。但也有启发式方法。【参考方案3】:

有 Ken Thompson 的经典论文“Reflections on Trusting Trust”。

【讨论】:

感谢资源伙伴,尽管马克也发布了它。我会读一读

以上是关于带有内置 AV 的编译器 = 没有病毒开发?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 编译出来的程序被小红伞报病毒 TR/Spy.Banker.Gen4 [trojan]

从 python 代码构建 exe 以避免 AV 误报的最佳方法

MP4V2库与MP4AV库编译

什么病毒能禁止杀毒软件和网页打开

带有/不带有编译器的 C/C++ IDE [关闭]

编译cm11出错