White Phoenix 开源勒索软件解密器

发布时间: 2024-02-18

开源勒索软件在线解密

如果不想使用GitHub自己构建,也可以使用在线解密

https://getmyfileback.com/

White Phoenix 开源勒索软件解密器

最近,勒索软件领域出现了一种新趋势:间歇性加密,即对目标文件进行部分加密。许多勒索软件组织,例如 BlackCat 和 Play,都采用了这种方法。然而,间歇性加密是有缺陷的。在这篇博文中,我将介绍 White Phoenix,这是我的团队构建的一个工具,它利用了这些文件未完全加密的事实,并且可以在适当的情况下从文件的未加密部分中挽救一些内容。虽然我们将主要关注 BlackCat,但值得注意的是,White Phoenix 也能有效抵御其他勒索软件。

间歇性加密是什么

为什么要使用间歇性加密

攻击者选择间歇性加密而不是完全加密的原因有多种。

最明显的是速度。由于文件仅部分加密,因此间歇性加密需要在每个文件上花费更少的时间,从而使勒索软件能够在更短的时间内影响更多的文件。这意味着,即使勒索软件在运行完成之前被停止,更多的文件也会被加密,从而产生更重大的影响,并使勒索软件最终更有可能损坏关键文件。

而且,加密速度也可以作为卖点。勒索软件提供商可以声称拥有更快的加密能力,以说服附属公司选择他们而不是其他提供商。

此外,一些安全解决方案利用进程在其启发式中写入磁盘的内容量来识别勒索软件。通过间歇性加密,写入的内容较少,因此勒索软件触发此类检测的可能性较小。

几个不同的勒索软件团体已经采用了间歇性加密。这些勒索软件团体的受害者总数达数百人(根据各自泄漏网站的数字)。受害者遍布银行、大学和医院等各种组织。可以说,最著名的勒索软件组织是 BlackCat(又名 ALPHV)。许多人认为这种勒索软件是市场上最复杂的。该恶意软件具有多种功能来证明这一说法,例如:

  • 该组织是用 Rust 编写恶意软件的早期采用者(以及其他著名的恶意软件,例如FickerStealer)。
  • 它需要特定的输入来解密恶意软件的配置,这是一种反分析技术,可防止 Cuckoo Sandbox 等沙箱技术中的自动动态分析和配置提取等自动静态分析。
  • 间歇性加密本身就是一种使恶意软件引人注目的功能。然而,该小组进一步采用高度可配置的加密模式,规定每个文件的哪些部分要加密。

BlackCat 加密模式

BlackCat 可以配置为六种不同加密模式中的任何一种。所有模式都松散地符合以下结构:

White Phoenix 开源勒索软件解密器

图1:BlackCat加密模式结构

如图 1 所示,在许多加密模式中,加密从文件的开头开始,直到某个固定点。我们用字母“N”表示文件加密头的大小。

在其他加密模式中,文件(或至少文件的一部分)被分成固定大小的块,并对每个块的开头进行加密。我们用字母“B”标记每个块的大小,用“P”标记每个块的加密部分的大小。

我们用红色标记前 N 个加密字节,用黄色标记每个块的每个加密部分 P。其余未加密部分呈绿色。

六种可能的加密模式如下:

  • Full:本质上只是传统加密(即整个文件被加密)。这意味着红色部分覆盖了图中的整个文件,或者 N 等于无穷大。
  • Head Only:仅对前 N 个字节进行加密。如下图所示,这与 N 设置为某个正整数且 P 等于 0 相同,从而使 B 的值无关。或者简单地说,没有黄色。
  • 点阵模式:在此模式下,N 等于 0。文件被分成固定大小 B 的块,每个块的前 P 字节被加密。这在我们的图中与没有红色部分是一样的。
  • 智能模式:这就是事情变得有点复杂的地方。前 N 个字节已加密(红色),文件的其余部分分为 10 个大小相等的块,每个块的前 P% 已加密(黄色)。
  • 高级智能模式:此模式与智能模式非常相似。不同之处在于 B 也是可配置的,这意味着威胁行为者可以创建任意数量的任意大小的块,而不是 10 个相同大小的块。前 N 个字节已加密(红色),文件的其余部分被分成同等大小的块。在这里,与智能模式不同,块的大小是为 B 定义的。最后,每个块的前 P% 被加密(黄色)。
  • 自动:最终加密模式根据文件的大小和类型对文件进行不同的加密。对于小于 10MB 的文件,使用完全加密。对于 10MB 到 10GB 之间的文件,使用高级智能模式,参数(N、P、B)根据文件的确切大小而变化。最后,对于大于 10GB 的文件,使用点图案,参数根据精确的文件大小而变化。

正如您所看到的,大多数加密模式最终都会导致大部分文件未加密。这意味着对于某些文件格式,我们可以从文件的非加密部分提取数据并从中恢复一些数据,如下所示。

PDF 101

在我们的研究过程中,我们主要关注从加密的 PDF 文件中恢复文本和图像。要了解如何从这些文件中恢复内容,有必要了解 PDF 文件结构的一些基础知识。我们不会要求您阅读PDF 格式规范,因为仅解释文本如何在 PDF 结构中显示的部分就超过 50 页长。相反,我会简化事情并跳过很多细节。

PDF 文件的一般结构是页眉、正文和页脚。主体由一系列对象组成。每个对象都以一对数字开头,后跟字符串“obj”,所有对象均以空格分隔。第一个数字是代表对象编号的唯一数字,第二个数字通常为零。对象以字符串“endobj”结尾。因此,PDF 文件中第四个对象的示例可能如下所示:

White Phoenix 开源勒索软件解密器

图 2:PDF 流对象示例

PDF 格式中有多种对象。对于我们的目的来说,最重要的一个是流对象。流对象有两部分:描述流的字典和流本身的内容。字典被 << , >> 包围。流内容以字符串“stream”开头,以字符串“endstream”结尾。

在上面的示例中,字典有两个键:Length 和 Filter。长度是指流内容的大小,在我们的示例中为 182 字节。过滤器指示对流的内容应用了哪些压缩和编码算法。迄今为止最常见的过滤器(也是我们示例中的过滤器)是 FlateDecode 过滤器。 FlateDecode 是一种在许多文件格式中使用的常见压缩算法,称为 DEFLATE。

从加密的 PDF 文件中恢复数据

正如我们之前讨论的,BlackCat 使用的几乎所有加密模式都可能使文件中的大量内容不受影响。具体来说,就 PDF 文件而言,这意味着许多对象将保持完整。我们可以从 PDF 中提取这些未触及的对象并保存我们找到的任何有价值的数据。

图像和文本都出现在 PDF 文件的流对象中。因此,要从加密的 PDF 文档中恢复它们,我们需要检查流对象。图像通常作为流对象的内容出现。这意味着我们通常可以通过删除应用的任何过滤器来恢复它们。

不幸的是,恢复文本需要更多的工作。在更简单的情况下,文本在流中被分解为块。在这些情况下,我们需要识别所有块并将每个块的内容连接在一起。下图是包含文本“这是 PDF 中简单文本对象的示例”的 PDF 流的一部分的示例。正如您所看到的,文本被分成由括号包围的不同块:

White Phoenix 开源勒索软件解密器

图 3:简单文本流示例

那些参加过INTENT Summit 2022 CTF的人可能还记得一个名为“文本渲染很难”的挑战,该挑战展示了文本在 PDF 文件中存储方式的更复杂的变化。在更复杂的情况下,文本除了被分解为块之外,还使用十六进制编码,后跟 CMAP(字符映射)。为了帮助说明这一点,以下图像包含文本流和字符映射:

White Phoenix 开源勒索软件解密器

图 4:示例 CMAP 文本流(顶部)和关联的 CMAP 流(底部)

 

顶部部分显示包含编码文本的流,底部部分显示包含用于编码的 CMAP 的流。在使用 CMAP 的情况下,块由 <> 而不是 () 包围。为了理解文本应该是什么,我们需要在 CMAP 对象中找到匹配的值。例如,文本对象中的第一个字符是<01>。查看 CMAP 对象,我们看到 <01> 映射到 <0054>。一旦我们找到了字符的映射值,我们需要做的就是从十六进制解码。在本例中,54 是字符“T”的十六进制值,因此文本中的第一个字符是“T”。对其余字符重复此操作将得到文本“这是 CMAP 文本的示例”。

对于文本存储为 CMAP 对象的情况,要恢复文本,文本和 CMAP 对象都不能加密。有时,虽然很少见,但文本是使用十六进制映射的。例如,字符“A”将被编码为41,然后41将再次映射为41。在这些幸运的情况下,即使映射无法恢复,我们也可以恢复文本。

其他文件格式

除了 PDF 之外,我们还可以恢复其他文件类型。事实上,许多文件格式(包括 Microsoft Office 使用的许多格式)都是 zip 文件格式的特例。同样,我们将跳过大部分细节并简化事情。

简而言之,压缩成 zip 的每个文件在 zip 结构中都有一个以 PK\x03\x04 开头的条目。如果您获取部分加密的 zip 文件并删除从头到第一个 PK\x03\x04 的所有内容,您仍然可以使用 7zip 打开该 zip 并提取所有未加密文件的内容。在 Office 文档中,这些压缩文件通常是 XML 文件。因此,在适当的条件下,可以从 BlackCat 勒索软件加密的 Office 文档中恢复一些数据。

White Phoenix 开源勒索软件解密器

图 5:zip 文件中的示例文件条目

在我们的调查过程中,我们能够通过执行以下步骤来创建包含加密文件的某些内容的有效 XLSX 文件:

  • 按照上述方法,使用 7zip 和十六进制编辑器,我们从加密的 XLSX 中提取出未受加密影响的 XML 文件。
  • 然后我们创建并解压缩一个新的空 XLSX 文件。
  • 我们将从新 XLSX 中提取的文件替换为我们设法恢复的加密 XLSX 中的匹配文件。
  • 最后,我们重新压缩文件并以 XLSX 扩展名保存。

然后我们能够使用 Excel 打开新文件并查看加密文件中的一些数据。

White Phoenix — 恢复工具

正如我们所看到的,对各种文件格式有足够的了解使得从间歇性加密的文档中恢复数据成为可能。为了帮助自动化该过程,我们构建了 White Phoenix,这是一个可以自动化恢复过程的 Python 脚本。

我们选择“白色”是为了对比许多在名称中使用“黑色”一词的勒索软件组织,例如 BlackCat、BlackByte 和 Lockbit Black。选择“Phoenix”是因为我们希望这个工具能够帮助遭受勒索软件攻击的公司“复活”(像凤凰一样)。

该工具需要 2 个参数才能运行:文件的路径和保存恢复内容的文件夹的路径。文件类型(如果支持)会自动识别。请参阅下面该工具支持的文件类型的完整列表。

对于 PDF 文件,我们实现了上述所有逻辑来恢复文本和图像。我们构建它,以便将每个恢复的对象保存为以源对象命名的单独文件。对于使用 CMAP 的文本对象,我们还指出哪个对象提供了映射。

对于我们支持的各种基于 zip 的格式,我们仅实现了解压缩步骤。对于Office文档,我们可以按照前面描述的步骤尝试手动恢复部分加密文档。但是,不能保证生成的文件有效。或者,我们可以在以下路径中找到恢复的图像(如果有),具体路径取决于文件类型:

  • ./字/媒体/
  • ./xl/媒体/
  • ./ppt/媒体/

对于Word文档,我们可以在以下XML文件中找到文本:

  • ./word/文档.xml

Excel 文档将其工作表存储在文件夹中:

  • ./xl/工作表/

但是,工作表中使用的文本通常存储在单独的文件中:

  • ./xl/sharedStrings.xml

最后,对于 PowerPoint 文档,幻灯片存储在文件夹中:

  • ./ppt/幻灯片/

结论

White Phoenix 支持 PDF、Microsoft Office 文档和 zip 文件。但其他格式,例如视频和音频文件,也可能是可恢复的。我们鼓励社区为这个工具做出贡献并帮助进一步改进。

我们经常想到威胁行为者利用软件中的错误来执行恶意活动,例如未经授权的网络访问或升级权限。但恶意软件最终也是由人们编写的软件。就像威胁行为者利用的软件错误一样,我们可以利用恶意软件中的错误。

间歇性加密开始模糊损坏文件和使文件真正无法使用之间的界限。可以说,间歇性加密的想法被证明是一个错误。就像有许多工具可以帮助从损坏的文件中恢复数据一样,也有一些工具可以从经过间歇性加密的文件中恢复数据。

White Phoenix(白凤凰)恢复工具下载链接:

https://github.com/cyberark/White-Phoenix

白凤凰-Demo.mp4

  

支持解密的勒索软件列表:

  • BlackCat/ALPHV
  • Play ransomware
  • Qilin/Agenda
  • BianLian
  • DarkBit

支持解密的文件类型列表:

  • PDF
  • Word 格式:docx、docm、dotx、dotm、odt
  • Excel 格式:xlsx、xlsm、xltx、xltm、xlsb、xlam、ods
  • PowerPoint 格式:pptx、pptm、ptox、potm、ppsx、ppsm、odp
  • Zip

White Phoenix使用方法

测试对象:BlackCat/ALPHV 勒索软件、Play 勒索软件、Qilin/Agenda 勒索软件、BianLian 勒索软件、DarkBit

用法:

python3 White-Phoenix.py [-h] [-f/--file 文件] [-s/--separated-files] [-dl/--disable-log] [-d/--dir] [-v/--virtual-machine] -o/--output 文件夹
-f/--file:加密文件的路径
-o/--output:保存从文件中提取的内容的文件夹路径
-s/--separated-files:将内容提取到单独的文件中
-dl/--disable-log:禁用日志
-d/--dir:从特定路径开始扫描
-v/--virtual machine:从加密的虚拟机中提取文件

输出文件

PDF:

默认情况下,输出保存为docx文件以便进行编辑。
然而,有时图片无法加载到docx中,因此有一个选项可以将文件分开保存。
每个对象都被保存为一个单独的文件,以对象编号作为文件名。
使用cmap的文本对象为每个可能在文件中找到的映射创建多个文件,以及可能的十六进制映射。
cmap文本对象在名称的附加部分中具有指示使用的映射的信息。
请注意,这意味着许多cmap文件要么具有无意义的内容,要么可能具有重复的内容。
不是所有的图像过滤器都受支持,但所有的图像对象都被提取了出来,这意味着并非所有的图像都可用。

office:

Word:

[输出文件夹]/word/document.xml – 文本内容
[输出文件夹]/word/media – 图像

Excel:

 

[输出文件夹]/xl/worksheets/ – 表格内容
[输出文件夹]/xl/sharedStrings.xml – 表格字符串
[输出文件夹]/xl/media – 图像

PowerPoint:

[输出文件夹]/ppt/slides/ – 幻灯片内容
[输出文件夹]/ppt/media – 图像

Open Office(odt、ods、odp)

[输出文件夹]/content.xml – 各种类型的内容
[输出文件夹]/media – 图像

虚拟机支持

许多勒索软件组织都维护着专门针对 ESXi 服务器上的虚拟机的勒索软件变体。 White Phoenix 具有从加密的虚拟机文件中恢复数据的功能。要使用 vm 功能,只需在代表虚拟机内存或存储的文件(例如扩展名为 vmem 或 vmdk 的文件)上运行带有 -v 或 –virtual-machine 标志的 White phoenix。

White Phoenix 使用文件雕刻来识别未加密的文件并将其提取到磁盘。

vm 支持与 -f 和 -d 标志一起使用,分别在单个文件或整个文件夹上运行。请记住,在这种方法中,White Phoenix 无法知道它恢复的文件的名称。

此外,许多文件以某种程度损坏的方式存储在磁盘和内存中,因此解压后并非所有内容都可读。在某些情况下,已提取但无法读取的文件仍然包含可以由白凤凰恢复的数据。因此,文件被提取但无法读取,可能值得尝试在新提取的文件上再次运行white phoenix。

支持的虚拟机类型:

  • pdf
  • zip
  • ooxml
    • docx
    • xlsx
    • pptx


  • jpg

  • gif

其他文件类型

为虚拟机添加更多文件类型相对简单。您需要的是文件扩展名、文件魔术/标头/签名(也称为该文件类型的前几个字节)以及文件结尾/页脚。许多文件魔法可以在https://en.wikipedia.org/wiki/List_of_file_signatures中找到。或者,您可以创建您感兴趣的类型的文件,然后使用十六进制编辑器打开它以查看前几个字节。结局可能更难找到。一些谷歌搜索可能会有所帮助,或者您可以再次尝试十六进制编辑器,当然还有 chatGPT。如果找不到页脚,可以使用大量空字节。
找到所有值后,打开在提取器文件夹中找到的 vm_files.config 并更新它。该文件是简单的 json 格式。请记住,页眉和页脚值在代码中被视为正则表达式值,因此如果您发现超过 1 个可能值,则可以使用 json 中的单个条目。

请在下方留下您的评论.加入TG吹水群