目录导航
受影响的平台: Windows
受影响的用户: Windows 用户
影响:受感染机器上的大多数文件都是加密的
严重级别:中
在希腊神话中,臭名昭著的潘多拉魔盒(罐子)的打开给世界带来了可怕的事情。今天的勒索软件也可以这么说。新出现的 Pandora 勒索软件也不例外。它从受害者的网络中窃取数据,加密受害者的文件,并在受害者选择不付款时公开被盗数据。希腊神话说希望留在盒子里。对于 Pandora 勒索软件是否如此,这是一种新兴的恶意软件,显示了现代勒索软件使用的所有技术?在这篇博客中,我们将用锤子和撬棍来探查今天的潘多拉魔盒,以找出其中的奥秘。我们会讨论:
- 该勒索软件如何试图逃避检测
- 用于阻碍分析师的众多混淆和反分析技术
- 如何使用多线程来加速处理文件进行勒索
- 如何处理文件系统
- 如何以及哪些文件被加密。
潘多拉勒索软件集团
Pandora 勒索软件集团早在 2022 年 2 月中旬就进入了本已拥挤的勒索软件领域,并以企业网络为目标以获取经济利益。该组织在宣布从汽车行业的国际供应商处获取数据后,最近受到了关注。这一事件出人意料地发生在袭击发生两周后,据报道另一家汽车供应商遭到未知勒索软件的袭击,导致世界上最大的汽车制造商之一暂停工厂运营。威胁集团使用双重勒索的方法来增加对受害者的压力。这意味着他们不仅会加密受害者的文件,还会泄露文件并威胁如果受害者不付款,就会公开数据。
潘多拉集团在暗网(TOR 网络)中有一个泄密站点,他们在那里公开宣布受害者并以数据泄露威胁他们。目前泄密现场列出了三名受害者(见图1),一家美国房地产中介公司、一家日本科技公司和一家美国律师事务所。

恶意软件分析
我们使用 SHA-256 哈希5b56c5d86347e164c6e571c86dbf5b1535eae6b979fede6ed66b01e79ea33b7b分析样本,这是一个 64 位 Windows PE 文件。它是勒索软件本身,因此在攻击期间执行此文件时,攻击者可能已经广泛访问了受害者的网络,并且他们已经泄露了他们将用于勒索的数据。此样本无法与威胁参与者进行通信。它的唯一目的是查找和加密文件。然而,它以一种有趣而复杂的方式做到了这一点。
在以下部分中,将讨论恶意软件的这些有趣方面。
执行流程
该示例经过以下步骤:
请注意,括号内的“T”后跟数字是指 MITRE ATT&CK 技术 ID,在文章末尾进行了总结。
1) 解包:样本是用修改过的UPX打包器(T1027.002)打包的,所以第一步是将真实内容解包到内存并跳转。这将在后面讨论。
2) Mutex :它创建一个名为ThisIsMutexa的互斥体。
3) 禁用安全功能:它可以删除 Windows 卷影副本 (T1490)、绕过 AMSI (T1562.001) 和禁用事件日志记录 (T1562.002)。稍后将详细介绍这些功能。
4) 收集系统信息: GetSystemInfo()用于收集本地系统的信息。
5) 加载硬编码的公钥:恶意软件样本中的公钥是硬编码的。这用于设置加密以进行加密。
6) Store Private and Public Keys in Registry : 生成一个私钥,硬编码的公钥和新生成的私钥都存储在注册表中(T1112)。
7) 搜索驱动器:它搜索系统上未安装的驱动器并安装它们以加密它们(T1005)。
8) 设置多线程:该示例使用工作线程来分发加密过程。稍后再谈。
9) 枚举文件系统:工作线程开始枚举已识别驱动器的文件系统(T1083)。
10) 删除赎金票据:赎金票据Restore_My_Files.txt被丢弃在每个文件夹中。
11) 检查文件名黑名单:对于每个文件和文件夹,检查文件/文件夹名称的黑名单。如果文件/文件夹在黑名单上,则不会被加密。稍后再谈。
12) 检查文件扩展名黑名单:根据文件扩展名黑名单检查每个文件。如果扩展名在列表中,则不会加密。
13) 解锁文件:如果文件被正在运行的进程锁定,示例将尝试使用 Windows 重新启动管理器 (T1489) 将其解锁。
14) 加密文件:工作线程将加密(T1486)文件并将其写回原始文件。
15) 重命名文件:一旦加密完成,文件被重命名为[original_filename].pandora 。
反逆向工程技术
Pandora 勒索软件最重要的方面之一是广泛使用反逆向工程技术。这对于恶意软件来说并不是什么新鲜事,但 Pandora 在减缓分析方面投入了多少资金。在本节中,我们将介绍已确定的不同技术。
打包
样品使用经过改进的 UPX 封隔器进行包装,使用 Detect It Easy 可以轻松检测到该封隔器(参见图 2)。

但是,标准的 UPX 解包器不起作用,这表明对打包器进行了修改,以确保不能使用现成的工具对其进行解包。
通过在调试器中从入口点向下滚动到代码末尾,解包仍然相对容易。代码将以跳转结束(图 3)。这对于加壳程序来说很典型,在将原始代码解压缩到内存中的某个位置后,它们会跳转到那里,而不是从主函数返回。

通过在尾部跳转处设置断点,我们可以从内存中转储 PE 文件,包括解压后的代码。使用转储文件,我们也可以静态分析勒索软件。
控制流扁平化
Control-Flow Flattening 是一种混淆技术,可以通过修改控制流来隐藏程序的结构。在最简单的情况下,它将每个函数的正常控制流替换为状态机,因此分析师很难快速了解每个函数的工作原理。Pandora 使用更复杂的控制流扁平化与不透明的谓词相结合,使控制流更加复杂。

图 4 显示了解压缩代码中主函数的图形视图。我们可以看到它不像普通函数的控制流。它看起来像一个巨大的 switch-case 语句,这是实现状态机的控制流扁平化的结果。然而,在 Pandora 的案例中,大多数基本块根本没有连接。这是不透明谓词的结果。基本块之间的大部分跳转是在运行时计算的,如图 5 所示。

第一条cmp指令检查状态机的当前状态,并根据该状态计算基本块末尾jmp的rdx寄存器的值。由于这种静态分析工具,例如 IDA Pro 无法理解控制流将在哪里继续,因此无法连接图 4 中的基本块。
仿真可用于在有限程度上理解控制流,但必须广泛应用调试以确保执行流程如何。
字符串编码
一些字符串可以在解压后的二进制文件中找到,但大部分来自静态链接库。但是,可以帮助我们理解代码中发生的事情的字符串是经过编码的。图 6 显示了如何调用字符串解密函数之一。

通过rax调用的解密函数的地址和编码字符串的地址都是在运行时计算的。这样,当静态查看这段代码时,无法知道这里发生了什么。右边的注释是一个IDAPython脚本的结果,该脚本使用 flare-emu 项目来模拟代码并计算函数调用的地址,以及模拟解密函数。该解决方案在恢复二进制中的编码字符串方面非常有效。解密函数实现异或解码。解密密钥与每个编码字符串一起存储。作为奖励,该恶意软件使用多种解密功能。我们确定了 14 个用于字符串解码的独立函数。
函数调用混淆
上一节已经提到,大多数函数调用不是调用直接地址,而是调用寄存器。它的值是在运行时计算的。
如果我们以图 6 为例,rax中的地址计算如下:
rax = *(*address_table_base + 638300900) - 1426601284)
如前所述,这是使用仿真解决的。通过模拟函数的执行,我们可以计算 CALL 指令中的寄存器值。这使我们能够大规模地解决函数调用。
Windows API 调用混淆
与其他恶意软件不同的是,Windows API 函数名称没有经过编码,而是使用了另一种混淆技术来隐藏它们的用法。如图 7 所示,Windows API 函数组织在一个跳转表中。在每个地址都有一个重定向到库函数 的jmp指令。

解析 API 函数是在解析函数调用的相同 flare-emu IDAPython 脚本中实现的。每当CALL [寄存器]指向 jmp 指令(见图 8),而不是函数的开头,那么我们假设它指向 API 函数跳转表。所以我们取了跳转操作数的名称,并用它来生成函数调用的注释(参见图 9)。


多线程
Pandora 使用多线程来加速加密过程。为此,它使用 Windows 的 IO 完成端口 概念。这允许线程等待文件/网络句柄出现在 IO 完成端口队列中并处理它们。Pandora 使用未关联的 IO 完成端口并使用OVERLAPPED结构通过它发送任何数据。在这种情况下,驱动器和文件路径将被传递给线程来处理(枚举或加密)它们。IO 完成端口是使用CreateIOCompletionPort() API 函数设置的,如图 10 所示。通过传递INVALID_HANDLE_VALUE作为第一个参数( rcx = 0xFFFFFFFFFFFFFFFF )和NULL作为第二个参数( rdx = 0x0 )一个未关联的 IO 完成端口被创建。第四个参数是NumberOfConcurrentThreads,设置为 4 ( r9 = 0x4 ),定义最多允许 4 个线程使用此 IO 完成端口。

在此之后,主函数将启动新线程。线程之间的通信是使用GetQueuedCompletionStatus()和PostQueuedCompletionStatus API 函数完成的。图 11 显示了如何使用 PostQueuedCompletionStatus ( ) 将发现的文件 ( pydisas.py ) 放入队列中。另一个线程将使用GetQueuedCompletionStatus()来接收此任务,并且由于它接收到文件的完整路径,因此它将对其进行加密和重命名。

重启管理器
重新启动管理器是一项 Windows 功能,可减少安装和更新期间所需的重新启动次数。重新启动的原因通常是因为需要更新的文件被正在运行的进程锁定。Restart Manager 可以保存状态并停止锁定过程以解锁目标文件。一旦更新完成,它可以再次恢复锁定过程。Pandora 使用重启管理器来确保即使是当前被锁定的文件也会被加密。对于每个文件,执行以下过程:
1) 使用RmStartSession()创建重启管理器会话
2) 使用RmRegisterResource()将目标文件注册为资源
3) 使用RmGetList()检查目标文件是否被任何进程锁定
4) 如果是,终止锁定进程
5) 使用RmEndSession()结束重启管理器会话
加密
- 在文件被加密之前,Pandora 会执行以下检查以确保它不会导致机器无法运行。根据以下文件和文件夹名称的黑名单检查每个目标文件。如果目标文件在列表中,Pandora 将不会对其进行加密。
AppData
Boot
Windows
Windows.old
Tor Browser
Internet Explorer
Google
Opera
Opera Software
Mozilla
Mozilla Firefox
$Recycle.Bin
ProgramData
All Users
autorun.inf
boot.ini
bootfont.bin
bootsect.bak
bootmgr
bootmgr.efi
bootmgfw.efi
desktop.ini
iconcache.db
ntldr
ntuser.dat
ntuser.dat.log
ntuser.ini
thumbs.db
Program Files
Program Files (x86)
#recycle
..
.
- 每个目标文件都与以下文件扩展名列表进行比较。如果文件的扩展名在列表中,则文件不会被加密:
.hta .exe .dll .cpl .ini .cab .cur .drv .hlp .icl .icns .ico .idx .sys .spl .ocx
如图 12 所示,赎金票据承诺使用 RSA-2048 加密。恶意软件附带硬编码的 RSA-2048 公钥(图 13)这一事实证实了这一说法。


还会生成一个私钥,这两个密钥都存储在HKCU\SOFTWARE\[Private,Public] 下的注册表中(参见图 14)。

解压后的二进制文件包含静态链接的 Mbed TLS 加密库。
一旦文件在内存中被加密,它就会被写入磁盘。之后,该文件被重命名为具有 .pandora的扩展名。
禁用安全功能
Pandora 勒索软件能够禁用目标机器上的一些安全措施。
删除卷影副本
与许多其他勒索软件一样,Pandora 删除了 Windows 影子副本,这可以帮助操作员将机器恢复到感染前的状态。图 15 显示了使用运行时 (T1059) 中的参数调用ShellExecuteW( )。我们可以看到它使用了vssadmin.exe。

AMSI 绕过
反恶意软件扫描接口 (AMSI) 允许安全产品更好地与 Windows 集成,以便能够扫描各种不同的对象,例如 PowerShell 脚本、JavaScript、VBScript 等。通过绕过 AMSI,恶意软件可以从机器上运行。Pandora 通过修补内存中amsi.dll 中的AmsiScanBuffer()函数来绕过 AMSI 。
禁用事件日志记录
与绕过 AMSI 类似,Pandora 通过修补 Windows 内核( ntdll.dll ) 中的EtwEventWrite()函数来禁用 Windows 事件跟踪 (ETW) 功能。图 16 显示函数的第一个字节被替换为 0xC3,即ret指令。这使得 EtwEventWrite()函数无用,因为在每次调用后它立即返回而不记录事件。

结论
Pandora 勒索软件包含最先进的勒索软件样本通常包含的所有最重要的功能。降低分析速度的混淆程度比普通恶意软件更先进。威胁参与者还注意解锁文件以保证最大的加密覆盖率,同时仍然允许机器运行。我们已经可以看到反安全产品的功能。我们可以期待威胁行为者进一步发展这些能力。目前没有证据表明 Pandora 以勒索软件即服务 (RaaS) 的形式运行,但对恶意软件复杂性的时间投入可能表明它们正朝着这个方向发展。当前的攻击和泄漏可能是他们在勒索软件领域成名的一种方式,如果他们以后采用 RaaS 模型,他们可以利用这一点。
Fortinet 保护
分析后的 Pandora 勒索软件样本通过以下 (AV) 签名检测:
W64/Filecoder.EGYTYFD!tr.ransom
侵害指标(IOCs)
互斥体:ThisIsMutexa
赎金文件:Restore_My_Files.txt
硬编码的公共密钥的SHA256
哈希: 7b2c21eea03a370737d2fe7c108a3ed822be848cce07da2ddc66a30bc558af6b
样品的SHA256哈希:5b56c5d86347e164c6e571c86dbf5b1535eae6b979fede6ed66b01e79ea33b7b
ATT&CK TTP
TTP 名称 | TTP ID | 描述 |
混淆文件或信息:软件打包 | T1027.002 | 改进的 UPX 封隔器 |
削弱防御:禁用 Windows 事件日志记录 | T1562.002 | 禁用事件记录 |
削弱防御:禁用或修改工具 | T1562.001 | 绕过 AMSI |
来自本地系统的数据 | T1005 | 搜索卸载的驱动器和分区 |
修改注册表 | T1112 | 加密密钥存储在注册表中 |
为影响而加密的数据 | T1486 | 作为勒索软件,它会加密文件 |
命令和脚本解释器 | T1059 | 使用cmd.exe删除卷影副本 |
系统信息发现 | T1082 | 使用GetSystemInfo()收集系统信息 |
文件和目录发现 | T1083 | 发现驱动器并枚举文件系统 |
禁止系统恢复 | T1490 | 删除卷影副本 |
服务停止 | T1489 | 如果进程锁定文件,则终止进程 |
转载请注明出处及链接