反病毒软件如何确保隔离文件永远不会被执行?

信息安全 杀毒软件 隔离
2021-08-10 23:01:07

这个超级用户问题让我问,当您还不知道文件是什么时,将文件隔离起来真的是个好主意吗?据我所知,为了“失去对系统的控制”,需要执行或多或少 2 个步骤。首先必须有一些恶意代码注入系统,然后需要有一种方法来执行它。那么 AV 软件对“隔离”文件采取了哪些措施来避免这种情况呢?我假设,用户只是执行文件的情况不是问题。即如何确保没有错误导致某些溢出导致代码执行?

换句话说:反病毒软件做了什么来阻止隔离文件的执行,我可以依靠它们无论如何都无法执行吗?

注意:我不是在询问 AV 执行隔离功能的方式。这篇文章的核心是:“隔离功能如何保护自己/隔离文件不被欺骗/解码/无论如何都会被执行,这种情况发生的可能性有多大?”

4个回答

防病毒程序有几种方法可以阻止隔离文件的执行:

  • 保持打开状态以进行独占访问。它可以简单地使用普通的CreateFileAPI 并为 传递零dwShareMode,从而防止对文件的所有其他类型的访问。如果无法读取可执行文件,则无法执行。由于防病毒程序通常是最先启动的程序之一,因此它们可以在系统重新启动时重新打开所有此类文件。
  • 使用软件限制策略安装防病毒程序后,它可以创建一个 SRP 来阻止隔离目录中程序的执行。
  • 挂钩对创建流程至关重要的功能。进程启动总是涉及NtCreateSection,因此防病毒程序的内核模式驱动程序可以挂钩并确定有问题的文件是否PAGE_EXECUTE可执行文件并检查是否被请求。

其中,只有第一个对非程序有用(例如,可能包含漏洞利用的文档)。为了监视所有文件加载,防病毒程序可以挂钩NtCreateFile,因为不调用它就无法读取任何文件。或者,要注意将页面标记为可执行文件,它可以挂钩NtProtectVirtualMemory. 无论哪种方式,内核模式驱动程序都可以在允许操作继续之前查看一下用户空间中正在发生的事情。

然而,最简单的解决方案是使用未存储在磁盘上的密钥对隔离文件进行加密。使用这样的系统,用户必须输入密码才能解密和取消隔离文件。这可以通过一些非对称密钥密码术相当容易地完成。

之前回复中提到的隔离 AV 功能确保文件在隔离期间无法执行或访问。所以不,只要防病毒软件在工作,病毒就没有逃脱隔离的危险。实际上,有些以不同的不可运行格式存储文件,有些只是重命名文件并拒绝对它们的 read/write.execution 访问。

一个简单的例子:你得到一个包含 ASCII .exe 内容的标准文件,将该内容转换为二进制,然后将其以 0 和 1 的形式重新写入文本文件。从那里什么都不会出错。没有什么可以逃避的,因为该文件现在是保存为文本的二进制内容。

-编辑-

因此,您询问的元素是拒绝 R/W/X 访问并将文件编码为除原始格式之外的任何其他内容。

假设您有一个被防病毒软件标记为“恶意”的重要文件(例​​如,一些演示文稿)。您不希望删除它(毕竟它很重要,即使它是恶意的!),但您也不希望您的机器被感染。

那么,你有什么选择?您的防病毒产品可以quarantine它将文件保存在磁盘上的隔离环境中,因此恶意文件不会对您的计算机构成威胁。

关于如何处理这些文件有不同的方法:1) 将文件移动到不同的位置 2) 重命名文件,更改文件的格式 3) 更改文件的权限,将其标记为隐藏 4) 加密或对文件进行编码,这样即使访问文件也会使恶意代码无用

现在,如果您想要恢复文件,即使您知道它可能会造成严重破坏,或者可能只是误报,该怎么办?防病毒产品让您可以选择以原始格式将隔离文件从隔离区移动到原始位置,以便您再次使用它(当然,风险自负!)。

如果您强烈怀疑您的文件是无害的,您可以尝试使用其他防病毒软件(例如,在Virustotal上)对其进行扫描。您还可以要求您的防病毒产品供应商重新检查文件是否存在任何恶意行为。一旦您确信它是无害的,您就可以安全地继续并从隔离区中恢复文件。

是的,您可以依赖任何知名防病毒产品的隔离功能。

如果没有用户授予该权限,任何文件都不太可能执行。该用户可能是准备工厂映像的人,或者是您运行另一个程序时的您。

为了防止(恶意)内容被访问,一个可靠的方法是使用完全独立的机器使用与内容长度相同的 One Time Pad 对其进行加密,然后将加密的内容和 pad 分开直到需要访问内容。杂散执行指针在稳定代码中很少见,因此即使恶意内容已被解码,也不应执行。当然,除非解码器是用不安全的语言编写的,并且包含内容知道可以利用的错误。(参见 JPG 漏洞利用。)

如果您不想挽救内容,那么从轨道上切碎它(从安全的只读媒体启动)应该确保它永远不会返回......如果您使用硬盘驱动器。众所周知,SSD 管理自己的存储单元的方式不能保证这些单元包含的数据已经消失。根据军队规格,即使是 HDD 也需要多次覆盖,而且许多公司会物理切碎驱动器,以确保无法进行经济的数据恢复。