恶意软件如何如此迅速地加密受害者的文件?

信息安全 加密 勒索软件
2021-09-07 14:31:44

对我来说,加密文件类似于处理一个非常长的字符串,将其输入散列或加密函数以获取另一个长加密字符串(或散列情况下的散列)。

这个过程需要一些很好的时间。我知道这是因为我使用HashTab来验证我从 Internet 下载的文件的完整性。

CTB-Locker 或 Crypt0l0cker 等勒索软件如何立即加密受害者文件?

最近我的一个朋友是其中一个勒索软件的受害者,即使感染发生在 MSWindows 上,他也无法在他的双操作系统机器上从 Ubuntu 打开他的文件/照片。这表明当您打开文件时加密不会即时发生。

4个回答

我参加了一个 OWASP 演讲,演讲者在我们面前反编译并分析了一个勒索软件可执行文件(适用于 Windows)。勒索软件有很多种,所以我不能说一般的勒索软件,但我当然可以谈谈我看到的那个。总体思路是,勒索软件可执行文件包含使用非对称算法(例如 RSA)加密文件所需的加密公钥。相应的私钥/解密密钥留在黑客手中,因此无论对可执行文件进行多少逆向工程,都无法为您提供解密密钥。

要真正加密文件,它会执行类似以下操作:

  1. 跳过文件的前 512 个字节,以便文件头保持不变。

  2. 使用嵌入的加密密钥加密接下来的 1 MB。

  3. 如果文件比此长,则其余部分不加密。

关键不是完全隐藏或保护数据,它足以使其不可解析。

至于时间,执行 1 MB 的 RSA 仍然很慢,并且仍然需要几个小时才能抓取您的 HDD。

我怀疑我看到的这个样本只是对 Steffen Ullrich 在他的回答中谈到的完整 RSA-AES 勒索软件的懒惰模仿——这是你真正应该担心的。

第一个对称加密非常快。AES 在某些模式下很容易达到 200MB/s。你声称散列很慢是一个红鲱鱼。散列非常快。在现代处理器上它是如此之快,这削弱了密码哈希的有效安全性。这导致了多轮密钥派生函数的发展,以“减慢”散列。

您看到的“慢”速度主要是硬盘驱动器慢的影响。在内存中,散列的速度大约为 500MB/s 到 2 GB/s+。

恶意软件仍然不需要“即时”。用户的系统被无声地感染。文件的副本可以在不提醒用户的情况下加密,然后一旦准备好删除原件并“立即”通知用户。尽管似乎是瞬间发生的,但从感染到该点的整个过程可能需要大量时间。

散列(如 SHA-1 等)和对称加密(如 AES)相对便宜,非对称加密(如 RSA)要贵得多。这就是为什么人们通常不使用 RSA 来加密大文件,而是使用带有一些随机密钥的对称加密,并且只使用 RSA 加密这个短密钥。

我知道这是因为我使用 HashTab 来验证我从 Internet 下载的文件的完整性。

听起来对我来说是一个非常科学的方法。除非你有一个又旧又慢的处理器,否则散列的速度(从而验证数据)通常比你从磁盘读取数据的速度要快(如果这不明显:当然你仍然需要读取数据来散列它,但它会花费更多的时间来等待来自磁盘的数据而不是计算哈希)。

CTB-Locker 或 Crypt0l0cker 等勒索软件如何立即加密受害者文件?

现代操作系统支持加密文件系统,并且使用当今的处理器(通常包括 AES 的硬件加速),无论您是否使用加密文件系统,您都不会注意到速度差异很大,因为瓶颈不是加密而是速度磁盘(在基准测试中,您会看到性能下降,但这些并不能反映大多数人的实际使用情况)。因此,他们也不是勒索软件不能快速加密数据的原因。当然,他们可能会通过连接到系统来让你感觉更快,这样你想打开的文件首先被加密,其余的在后台。

你犯的错误是认为它是即时的。相反,恶意软件在后台加密并解密用户要求的任何内容。在这个阶段它是沉默的,它只在一切都被加密后才要求赎金。