勒索软件在加密时会停止吗?

信息安全 文件加密 防御 勒索软件 文件访问
2021-08-28 17:04:26

我一直在阅读有关勒索软件的信息,我想知道是否可以通过在驱动器上放置某些“陷阱”文件来防御它。有时,我浏览Code Golf,对发布的一些解决方案印象深刻,其中一些我认为是不可能的。

所以我想知道:有没有办法让勒索软件的加密过程被特别创建的文件(不仅仅是非常大的文件)挂起?

是否可以创建一个文件,在尝试加密时将加密过程发送到无限循环,或者至少一个可能需要很长时间才能完成的文件?也许一个监控程序能够开始创建虚拟文件,同时在加密的虚拟文件被加密时删除它们,从而使加密过程走上一条无止境的道路?

当然,这里的想法是中途停止加密过程。或者,也许,访问特殊文件会导致计算机进入某种形式的“安全模式”,从而停止当前进程?

(注意:这显然是最后一道防线策略,当然不是人们想要依赖的安全措施,而是一种额外措施,以防更合适的措施都失败了)

4个回答

你的建议很有趣;不幸的是,通用解决方案是不可能的,因为没有位组合会导致加密算法“停止”。毕竟,加密只是数学。也许使用 rootkit 可能会诱使勒索软件相信它正在加密一个伪造的 yottabyte 长的虚拟文件句柄,或者它可能会在该文件中构建延迟,非常缓慢地从文件中取出字节,但这些方法可能会影响电脑的正常使用也是如此。

可能有特定版本的勒索软件具有实现错误,您可以利用这些错误来实现这一点,但这种方法存在许多问题。恶意软件作者和脚本小子一直在发展和更改勒索软件程序,因此根据今天版本中的错误并不能保证您明天会被相同版本的勒索软件感染。今天有成百上千种不同的勒索软件程序;所有这些都不会存在可利用的缺陷。

@HameJames 方法是尝试检测正在运行的勒索软件的一种方法,但不能保证他的陷阱文件将是恶意软件加密的第一个文件并及时将其关闭,或者如果它是最后一个文件并且关闭只是使更糟。

在这一点上,您最好的防御仍然是操作安全。定期备份重要文件并使其保持离线状态。不要打开意外的电子邮件附件,或单击网络钓鱼链接。使您的安全软件保持最新,并为您的系统打补丁。所有正常的建议仍然适用。

您可以创建一个监视程序来创建一个假文件 C:/A,并在其中查找更改。一旦检测到更改,请立即关闭计算机。这很可能是最安全的。

在某些情况下可以停止加密:例如,如果勒索软件使用 CryptoAPI 等通用库,并且可以挂钩其核心功能并检查调用者。但是,这并不是对抗勒索软件的安全方法,因为例如,许多勒索软件变体可以在其代码中嵌入加密算法,甚至根本不使用加密。

使用特殊或陷阱文件也不是一种安全的方法,因为当陷阱捕获某些东西时,可能为时已晚,或者如果有合法的应用程序(如备份解决方案、存档、同步甚至合法的加密解决方案),则可能是误报) 对一个卷或多个文件夹中的所有文件进行操作。如果我们考虑不加密所有文件或不处理所有文件夹的勒索软件,事情会变得更加复杂。

一种解决方案是使用行为分析来跟踪和关联多个项目,包括进程、文件活动和其他更改。采用这种方法的产品可以准确地检测和阻止勒索软件,但它们通常只有在几个文件(通常至少十个)已经加密后才会触发警报。最好的解决方案甚至可以将这些文件归还。

您可以这样做的一种方法是创建一个稀疏文件稀疏文件是包含大量零部分的文件,这些零部分存储在文件系统中,仅作为描述零部分大小的元数据。稀疏文件允许您创建一个看起来非常大但实际上占用磁盘空间很小的文件。

当加密程序试图加密这个文件时,它可能会尝试从头到尾读取文件,加密所有的零。在某一时刻,要么系统内存不足,要么你的磁盘空间不足,无论勒索软件在该点之前没有加密,如果勒索软件在该点崩溃并且没有尝试删除陷阱文件并继续下一个文件。当然,缺点是您可能会用完磁盘和内存空间,这也可能会使其他进程崩溃。如果您的计算机中有任何错误的数据库系统,您最终可能会收到损坏的文件。它也不是所有文件,因为只有在勒索软件遇到此文件后才会触发此机制。

您可以增加陷阱文件成为第一个文件的机会,方法是阅读文件系统的源代码,并研究使陷阱文件更有可能成为 readdir() 返回的第一个文件所需的内容。例如,如果您的文件系统按文件创建顺序返回 readdir(),您希望它是创建的第一个文件,如果它按字母顺序返回文件,您希望在文件名中添加许多“A”,或者如果它散列文件名,您需要确保散列文件名包含很多零。