而大多数安全行业的人都知道加密是,许多人缺乏对恶意软件中使用的基本了解 - 特别是赎金软件。因此,我们认为对加密机制进行介绍性底漆以及它们如何剥削恶意目的是有益的。

我们将首先介绍加密的一般情况,然后是加密勒索软件使用的文件的主要方法。在本系列的第二部分中,我们将使用最近的ransomwareMalwarebytes检测到的变体为赎必威平台APP金。ShiOne强调了在试图解密文件时要注意的加密的关键弱点。

什么是加密?

用最简单的术语来说,加密是对信息进行编码的过程,以便只有授权方可以访问它,而那些未授权方不能访问它。在计算技术中,加密是将数据从可读格式(明文)转换为编码格式(密文)的一种方法,这种格式只能由拥有解密密钥的另一个实体解码。虽然加密技术长期以来被军方用来促进秘密通信,但如今它被用来保护传输和存储中的数据,以及验证和验证身份。

不幸的是,加密也被用于恶意目的,就像勒索软件一样。

评估加密

如果恶意软件分析师希望有效地评估恶意加密,他需要观察正在创建或接收加密数据的机器上的加密。如果您可以访问在执行加密阶段之前运行的任何进程,则通常有足够的数据能够解密或简单地查看本地解密的数据。

成为观察者是你在不需要破解加密的情况下恢复文件的唯一机会。然而,对于勒索软件攻击来说,作为一个观察者通常是不可能的。当恶意软件运行完毕并发送加密密钥后,就太晚了。当恶意软件关闭时,你就不再是观察者了。现在你必须依靠分析,希望加密中有漏洞。

作为解密和加密的观察者到底意味着什么?曾经有人问我:

为什么恶意软件的作者不总是加密通信到C2服务器?

我对他的回答是恶意软件是公开的,因为它可以在全世界的随机受害者系统上运行。作为逆向工程师,我们总是可以访问二进制文件,并能够在最低,最详细的水平上检查软件。在此级别的安全通信是毫无意义的,因为我们将在加密之前和解密后查看系统。

在客户端(受害者计算机)上接收的SSL或HTTPS通信将在内存中解密,以便以何种方式处理数据。此时,我们将始终能够检查内存并以其原始形式将解密的通信拉出,因此当服务器将加密数据关闭到正在分析的恶意软件时,它确实隐藏了任何内容。

相同的逻辑适用于勒索软件和文件加密中的许多用例。如果我们正在寻找一个赎金软件,它正在本地生成加密密钥,我们可以在创建后立即观察内存中的键,保存出来,并使用从内存中的那些键进行解密,以便在赎金软件运行之后解密文件,要求我们要求我们能够确定用于加密的算法。

如果在勒索WAWN运行和加密文件的过程中,用户转储内存,他有机会成为观察者,以及恢复文件的可能有可能。遗憾的是,这不是一个典型的方案,因为受害者的第一个本能不是在继续允许进程运行的同时创建内存转储。但对于理论例子,它在技术上可以工作。

Ransomware算法

多年来,我们遇到过很多用来劫持受害者文件的算法。其中最常见的是使用标准的、公开的和经过验证的非对称加密算法。但我们偶尔会看到定制加密(可能更弱),甚至是简单的、模糊的方法来劫持文件。

几年前,当我遇到勒索软件时,它通常会使用其他方法来劫持受害者的电脑,而不是加密驱动器上的所有文件。从文件隐藏到自定义加密,我都见过主启动记录(MBR)重写。

文件混淆

在文件混淆的情况下,勒索软件只是转移或隐藏目标文件——文件和它认为受害者会关心的任何东西——并要求赎金来恢复文件。在这种情况下,恢复是微不足道的。您可以简单地反转正在执行隐藏的代码,并能够反转它所采取的操作。

这里有一个例子:一个虚假的弹出窗口声称你的硬盘驱动器损坏了,并要求你打电话并支付“支持”费用来恢复文件。在我分析的这个特定的恶意软件上,它会显示一个弹出窗口(如下所示),并简单地将所有文档和桌面文件移动到一个隐藏位置的新文件夹中。解决这个问题的方法是查看代码,查看它移动了哪些文件以及移动到什么位置。

自定义加密

处理自定义加密时,通常通过以标准方式修改文件的算法来传递文件。一个简单的例子将是文件中的每个字节由常量或循环的字节屏幕xorated。在这些情况下,您几乎可以将算法本身视为密钥。如果您可以反转算法,您可以确切地弄清楚它如何修改或加密文件。然后,简单地反转步骤将为您提供原始文件。相比之下,当面对非对称密码术时,算法本身不会为您提供足够的能够解密文件。

MBR重写

在第三种情况下,将用一个需要密码或序列号才能访问的小程序重写MBR。恶意软件会迫使电脑重新启动,在系统加载Windows之前,它会首先提示用户如何支付赎金,以获得密码。在这个场景中,反转引导记录中的串行或密码验证算法(实际上是创建一个keyGen),将使您能够知道哪个密码允许访问。或者,用工厂引导记录重写硬盘驱动器的那部分也会禁用计算机上的锁。

除了反转算法,这里唯一的困难是知道如何重写MBR自己,以恢复原始代码到驱动器的这一部分。

下面是一个MBR储物柜的例子。请注意,没有要求您提供ID,这意味着特定的阻塞没有唯一的东西,可能需要一个静态解锁代码。

现在,这三种替代方法并没有完全使用标准意义上的加密,但我在这里提到它们是因为它表明,打破定制的、闭源的混淆有时是微不足道的。大多数罪犯使用标准化的、公开的、开源的加密算法来加密文件以获取赎金的原因是,这些算法经过了测试,安全性可靠。这意味着你可以知道加密算法的每一个细节,但这并不重要——你不能用任何方法解密加密,除非有加密密钥。

为什么这是重要的?使用标准加密,开源代码被构建了加密密钥之间的关系。算法仅使用了两个相关的两个单独的键。这个概念被称为非对称密码学,它是加密的方法,即今天的绝大多数赎金软件作者使用。

非对称密码学基础知识

非对称加密涉及生成两个完全不同的密钥;然而,他们有共同的关系。一个密钥(公钥)用于将数据加密为密文,而它的同伴(私钥)用于将密文解密为原始明文。之所以称其为非对称,是因为公钥虽然用于加密,但不能用于解密。解密需要私钥。

在使用非对称加密的加密通信中,在本地生成两个密钥 - 公钥和私钥。公钥可用于整个词来查看。如果有人想发送只能读取一个人(BOB)的消息,他们将使用Bob的公钥加密消息。因为他的公钥不能用来解密消息,所以它是完全安全的。使用他的离线私钥,Bob可以解密消息并查看原始文本。

这里有一些可视化来帮助您理解。

这与勒索软件作者用于文件加密的方法相同。加密过程的基本流程如下:

生成一系列随机数。这一系列字节将在第一轮文件加密之前使用。通常,使用此随机初始化执行从初始密钥的源自初始密钥的公钥对公钥执行一系列操作。现在将使用此子密钥以实际加密文件数据。在加密过程的第一阶段期间,生成第二随机阵列,其将用作初始化向量(IV)。每个阶段后面将使用前阶段的输出作为新的IV。

首先将随机数用作IV,然后生成的密文用于下一轮加密。

钥匙的产生自己依赖于随机数生成器。所以你可以想象,拥有一个可靠且“尽可能随机”的生成器是非常重要的。

ransomware文件加密

现代勒索软件通常会做以下几件事之一:要么它在本地动态生成密钥,并将它们发送给连接到客户端ID的C2服务器,要么密钥由作者生成并预装到勒索软件本身。

后者虽然可以说更安全,但需要为每个受害者生成一个全新的二进制文件,或者至少在每个活动版本中使用相同的密钥分发一批相同的恶意软件,这需要大量的开销。这里的权衡是,尽管分析人员不能直接观察密钥生成并检查其弱点,但两个受害者实际上拥有相同的加密密钥。因此,如果有人支付了赎金并分享了他的密钥,那么其他受该活动影响的人就可以免费解密他们的文件。这是由于密钥泄露造成的弱点。

现在,如果密钥是动态生成的,那么内存转储用于文件恢复的可能性很小,分析人员也不大可能找到加密中的漏洞。(内存转储对恶意软件作者来说并不是一个大问题,因为,正如我们前面所说的,很少有用户知道他应该创建一个转储)。然而,这种本地密钥生成方法的好处是,恶意软件是完全动态的,没有两个人会共享相同的密钥。这两种方法各有优缺点。

现代勒索软件作者通常使用这些形式的标准化加密-AES、RSA、Blowfish等。-在没有作者提供解密密钥的情况下,试图使受害者的文件无法恢复。我之所以说“尝试”是因为在很多情况下,这些优秀的算法都被误用了(这将允许相同的密钥生成两次)。此外,还可以拦截密钥的传输和生成。

非对称密码学加密可能几乎不可能被破解,但这并不意味着它不会被破解。

要了解如何使用,请收听第2部分加密101 - ShiOne勒索软件案例研究该公司使用ShiOne勒索软件来展示恶意软件分析师如何寻找加密系统的弱点。