VirusTotal 中的 AV 扫描程序如何检查文件是否为恶意文件以及其报告的可信度如何?

信息安全 恶意软件 病毒 杀毒软件 反恶意软件
2021-09-02 10:51:14

所以我多次看到人们提供文件的病毒总数报告以证明它不是病毒

但我只是检查了一下,当我提交一个文件时它甚至没有上传它(我检查了我的带宽),它只是以某种方式计算它的哈希值而不上传它,我很确定我没有上传文件,因为一个 10mB 的可执行文件需要在他们的网站上“加载”半秒,并检查我的上传速度是否为 30KB/s!(也尝试重命名文件,但仍然只花了半秒钟)

所以我有三个问题:

  1. 当我提交文件时,它如何上传这么快?我的文件甚至被上传了吗?如果不是,那么它如何计算哈希?

  2. 它是否只将文件的哈希发送到 AV 扫描仪?如果是这样,这是否意味着我可以通过稍微更改 PE/ELF 文件轻松绕过它?

  3. 有没有更好的替代方法可以实际对文件执行一些静态甚至动态分析以检查其是否恶意?

2个回答

广告 1:确实会上传您的文件,但前提是哈希值未知。作为第一件事,一段 Javascript 将计算一个加密哈希(如果我没记错的话,是 SHA-256,但可能是错误的)并发送它。然后,引擎不会扫描,而是在已经完成的数据库中查找哈希。只有在不存在或您坚持的情况下,它才会上传实际文件。
这有多安全?几乎 100%,或者尽可能接近它。您的文件与已扫描文件具有相同哈希但不是同一个文件的可能性很小。诚然,不完全为零,但一样好。

广告 2:如果报告的命中数为零,则除了“没有发现问题”之外,它本身并没有做太多的声明。它的作用是,它运行大约 60-70 种不同的扫描仪,其中一些是众所周知的,还有一些我从未听说过,并显​​示它们的输出。有时,其中包含误报,并且很可能包含误报。病毒扫描程序的实际用途存在争议,但遗憾的是它已经尽你所能。至少,病毒扫描程序可以相对较好地检测众所周知的威胁。
另外,还有社区的东西,用户可以在其中给出评分,但这一切都归结为信任互联网上的某个不知名的人,所以...... bleh。

广告 3:几乎没有。最好的选择是永远不要执行未知甚至可疑来源的程序。其他任何事情都是阅读茶叶。当然,有些人读茶叶的能力比其他人好,但他们仍然只读茶叶。动态分析是存在的,现在几乎每个桌面 AV 软件都有它(通过代理库运行大多数系统调用),但是除了消耗大量 CPU 之外,它是否真的做一些有用的事情是值得怀疑的。Virus Total可能会更好一些,因为它运行大量的扫描程序。这是否真的增加了安全性是不确定的。如果您考虑一下:假设运行的扫描仪实际上是值得他们的盐,然后他们中的一个应该做。另一方面,如果它们不值一提,那么运行更多它们会增加什么价值?引用一句古老的智慧:如果你什么都不加,那么总和仍然很小。或者,正如Fidelio中所说:“没有,如果你什么都不加空气”。

如果您从一个可能值得信赖的站点获得了一个文件,并且您在 VT 上的点击率为,那么它通常可能是相当安全的。如果您将文件保留两周并在两周后再次扫描它,那就更好了(假设同时可能会发现新的威胁)。这就是我正在做的事情,而且在 VirusTotal 出现之前的几年里我就已经这样做了——到目前为止它运行良好(或者,它似乎运行良好,我可能有我不知道的恶意软件)。最后,你永远无法确定。

关于动态分析
这不会发生。你可以从它的显示中推断出 VirusTotal 正在做什么样的分析。几乎可以肯定,这不仅仅是将哈希值转发到其他服务(如评论中所建议的那样),因为扫描需要时间,而且定义文件并不总是同步(实际上大多数时候它们并不同步)使用制造商的工具。您还可以解压缩并重新打包 ZIP 文件(这几乎肯定会导致文件不同),它会被很好地扫描。如果只传递哈希值,那将如何工作?它不会……但它这一点,以及有时一台或另一台扫描仪无法打开存档的事实表明,实际扫描发生了。
您可以推断它们进行静态签名匹配和启发式扫描,因为签名匹配是每个AV 所做的并且默认情况下已经做了 30 多年,而启发式分析是大多数(如果不是全部)扫描仪默认所做的至少 20年,也是。

另一方面,您可以非常确定没有进行动态分析,因为这对于 Web 服务来说是禁止和不切实际的。为了进行动态分析,您必须在安全的环境(模拟器、虚拟机或类似环境)中运行二进制文件,该环境为二进制文件运行提供了完整的操作系统,并且能够满足随机环境的内存和 CPU 要求先验未知程序的数量。这几乎不现实。另外,运行未知软件存在非常不可忽视的风险,这些软件基本上可以做所有事情,包括在 VM 中运行恶意软件服务,或脱离虚拟机。您知道,例如 Web 浏览器或邮件客户端需要 Internet 访问才能正常运行。您如何在授予运行 Internet 访问权限的任何恶意软件的情况下提供这些信息?谷歌(VirusTotal 的所有者)当然不喜欢被指控运行恶意软件服务。
最后,您必须确保 100% 的覆盖率(否则,分析毫无意义,恶意软件不一定会在程序启动时发挥作用),因此您需要人类或世界上最先进的模糊测试机器人来提供足够的程序的输入,因此它采用所有可能的路径。为每天可能有大约一千万人使用的 Web 服务这样做,没有人喜欢等待超过一两分钟的结果,祝你好运。

只是添加到前面的答案,它几乎涵盖了所有内容 - VirusTotal 实际上有时会进行动态分析,特别是如果文件经常被检查或最初看起来很可疑。他们于 2017 年开始这样做,您可以在此处直接从他们那里获得更多信息。您可以通过转到 VirusTotal 扫描的“行为”选项卡来检查是否已对您检查的文件运行动态分析。