LockBit 3.0 勒索软件解锁

LockBit 3.0 似乎很受关注。这个勒索软件家族也被称为 LockBit Black,它于 2022 年 7 月宣布,它现在将以一种免费的、易于使用的可搜索形式在线提供其非付费受害者的数据。然后在 7 月,它推出了一个漏洞赏金计划,以查找其勒索软件中的缺陷。该组织甚至向愿意将LockBit 标志纹在身上的人提供资金。无论公众如何关注,LockBit 继续上升到勒索软件生态系统的顶端,据 The Record 称,它是目前最流行的勒索软件菌株。  

原文链接:https://blogs.vmware.com/security/2022/10/lockbit-3-0-also-known-as-lockbit-black.html

LockBit 3.0对安全研究人员来说是一个挑战,因为恶意软件的每个实例都需要一个唯一的密码才能运行,没有密码进行分析是极其困难或不可能的。此外,恶意软件受到严格的分析保护,并利用大量未记录的内核级Windows功能。 

但是,在2022年9月,Twitter用户@3xp0rtblog宣布勒索软件的构建者被@ali_qushji泄露,可以从GitHub下载。 

1:锁位3.0生成器在推特上泄露 

这个泄露的源代码允许完整和不受阻碍的分析,但不幸的是,也意味着许多新的群体正在出现,使用来自该构建器的相同或修改的LockBit 3.0版本。 

图 2:锁位 3.0 生成器 

构建器在解压缩后,将包含图 2 中所示的文件,并且 Build 目录为空。运行 Build.bat 文件(包括图 3 中所示的内容)可自动执行生成过程,并使用勒索软件的唯一实例填充 Build 目录。生成的文件如图 4 所示。 

Build.bat 

图 3:Build.bat 

组成 Build.bat 的命令,清除 Build 目录,然后调用凯基生成公钥和私钥。接下来以“构建器”开头的行通过向构建器提供不同的命令行选项来生成LockBit 3.0勒索软件的不同变体。 

图 4:构建后的LockBit 3.0 文件列表 

生成的文件的描述 

  • DECRYPTION_ID.txt – 包含 16 个字符的受害者 ID 的文本文件,该 ID 由用于唯一标识受害者的公钥的前 8 个十六进制字节组成 
  • LB3.exe – 编译的勒索软件,不需要密码 
  • LB3Decryptor.exe – 勒索软件的解密器,可与此处的所有变体配合使用 
  • LB3_pass.exe – 与 LB3 相同.exe但需要密码才能运行。密码和说明可在此目录Password_exe.txt中找到 
  • LB3_RelectiveDLL_DLLMain.dll – 旨在反射加载并在内存中执行的勒索软件版本 
  • LB3_Rundll32.dll – 勒索软件的DLL版本,不需要密码。 
  • LB3_Rundll32_pass.dll – 勒索软件的DLL版本,需要Password_dll.txt文件中找到的密码 
  • Password_dll.txt – 包含密码和使用LB3_Rundll32_pass.dll的说明 
  • Password_exe.txt – 包含密码和使用LB3_pass.exe的说明 
  • priv.key – 此版本独有的私有加密密钥,用于加密受害文件 
  • pub.key – 此版本独有的公共加密密钥,用于生成各种字符串,将此勒索软件实例与受害者联系起来。

keygen.exe 

在 Build.bat 中调用的第一个可执行文件是凯基.exe。它为每个构建以及解密ID生成一个唯一的公钥 – 私钥对.凯基似乎严重依赖MIRALCL,根据其自己的描述,“……一个C软件库,被开发人员广泛认为是椭圆曲线加密的黄金标准开源SDK。生成的密钥经过 base64 编码并保存到文件 priv.key 和 pub.key。然后,将公钥的未编码的前八个字节转换为其十六进制值并保存到DECRYPTION_ID.txt文件中,该文件充当唯一的受害者标识号。 

builder.exe 

如前面的图 4 所示,生成器.exe文件创建两个可执行文件、三个动态链接库和两个文本文件。为了完成此操作,它需要现有的 config.json(图 2),以及由凯基在上一步中生成的 priv.key/pub.key 文件.exe如图 4 所示。构建器.exe文件本身也包含必需品。在其资源部分中有四个可执行模板文件。其中每个都用于构造 DLL 和 EXE 加密器以及用于解密的程序。 

图 5:builder.exe资源 

每个资源的 ID 描述: 

  • 100 – 解密器模板文件 
  • 101 – 可执行模板文件 
  • 103 – DLL 模板文件 
  • 106 – 启用反射加载的 DLL 模板文件

配置文件 config.json 包含通常与勒索软件关联的选项,包括目标文件夹、要避免的文件以及应终止的进程。如图 6 所示,它还包含用于调整勒索软件行为的设置选项,默认情况下,在构建器中找到如下所示的选项。 

图 6:配置选项 

此构建器配置允许针对特定目标环境调整生成的勒索软件。除了这些配置之外,还有以下选项: 

  • 要排除的主机、文件、文件夹和文件扩展名 
  • 要停止和删除的进程和服务 
  • 命令和控制域、URL 或 IP 的列表 
  • 要在受影响的系统上尝试的用户名和密码列表

由于此勒索软件是高度可配置的,因此可能存在许多不同的代码路径。为简单起见,此处的分析将侧重于在默认情况下运行勒索软件,而无需命令行配置选项。但是,为了解释完整的功能,这些选项将在相关代码部分中提及。 

LockBit黑匣子内部 

为提高可读性,程序内的初始代码集已反编译,如图 7 所示。此代码显示可执行文件包含大量未使用的 GUI 相关代码,这些代码在调用退出进程后列出,突出显示为 kernel32。退出进程()。所有赎金功能都发生在调用退出进程之前发生的三个函数中。主要功能包含勒索软件功能的最大部分。未使用代码的实现对于恶意软件开发来说并不陌生,但也不是很常见。像这样的技术有助于向研究人员掩盖恶意软件的真正目的,并有助于使恶意软件看起来合法。 

图7:Entry 函数 

典型的应用程序直接调用 DLL 函数,或执行简单的调用以从 DLL 文件中获取函数的进程地址。LockBit生成器有一个不同的,更晦涩的方法来发现和使用外部函数。我们命名为“prepare_address_table_lookups”的函数(如图 7 所示)包含一个从一组函数调用预先生成的哈希表。此集合中的每个条目都包含小写库和用点分隔的函数名称(即 ntdll.查找文件)。LockBit 3.0 在 Windows System32 文件夹中手动查找所需的 DLL,然后手动加载每个函数,费力地对每个函数库和名称组合进行哈希处理和匹配,以创建地址表。一旦创建了哈希库和函数的表,恶意软件就会小心地释放并清除所有内存以禁止分析。应该注意的是,这只是调用的函数的子集,因为在运行时从 Windows 内核中检索和调用了更多函数。 

如图 7 所示,“check_priv_elevate_if_needed”函数执行名称所暗示的操作。权限提升是通过复制访问令牌以获取特权组中的成员身份来实现的。若要了解这一点,对 Windows 权限有较高的了解会很有帮助。在生活中,Windows特权大致相当于一大串密钥,这些密钥提供对其他限制区域的访问。在 Windows 中,这些密钥称为访问令牌,每个访问令牌可以包含一个或多个权限常量。 每个特权常量定义可在操作系统中限制的特定操作或一组操作。例如,几乎每个人都有一个特权常量,称为 SeShutdown特权,它允许本地用户关闭操作系统。如果访问令牌中没有此权限常量,则 Windows 将不允许关闭。就像在现实生活中,物理密钥环可以容纳许多密钥一样,许多特权常量也可以属于单个访问令牌。 

对于理解至关重要的是,由用户或代表用户启动的进程和服务被赋予或从用户那里继承了其特权。但是,并非系统上的所有进程和服务都属于用户,有些进程和服务属于操作系统。这些操作系统进程和服务必然具有不同的权限。简而言之,LockBit 3.0 从系统进程中复制访问令牌以在用户进程中使用,以允许否则将被禁止的功能。 

为了复制令牌,锁位 3.0 会执行几项操作。最初,它将通过专门检查域管理员组中的成员身份来检查它是否已经具有足够的权限。如果未找到此权限,它将尝试向自己授予包含 15 个权限常量的预定列表,其中大多数在以非特权用户身份运行时在测试中都不成功。在此之后,如果仍然没有所需的权限,LockBit 3.0 将找到操作系统进程资源管理器.exe并直接调用 ZwOpenProcessToken 读取资源管理器.exe的访问令牌。然后,它调用传入新获取的令牌句柄的 NtDuplicateToken,以请求对副本的扩展属性的读取和写入访问权限。 

图 8:复制explorer.exe进程令牌 

在这种情况下,资源管理器进程是直接针对的。但是,随着程序的运行,每次遇到某些进程时,都会检查令牌权限,如果找到其他权限,则会复制令牌。值得注意的是,重点是获得具有特权域访问权限的令牌。 

main 函数中的恶意软件所做的第一件事就是检查并创建同步互斥体。如果存在互斥体,则进程将退出,确保一次只能运行一个勒索软件实例。互斥体是通过首先获取在 pub.key 文件中找到的提供的公钥的 MD5 哈希值而创建的。生成的 MD5 哈希是字符串格式为“{%08X-%04X-%04X-%02X%02X-%02X%02X%02X %02X %02X %02X %02X}”。接下来,计算此格式化字符串的 MD4 哈希,并将结果传递给格式字符串“全局\%.8x%.8x%.8x%.8x%.8x”。例如,完成的互斥值将类似于全局\ea4ee28880136cbc44dff4ad5a53561f。 

下一个 锁位 3.0 检查操作系统是否正常启动。如果Windows在安全模式下启动,勒索软件不会运行其大部分功能,而是设置注册表项以在下次正常启动时运行。 

在设置互斥体并满足引导类型后,可执行文件的主要用途将以多线程方式启动。每个线程都具有其任务的特征。有些在进程的生命周期内连续运行,而另一些则仅临时运行一次以执行特定任务。 

停止服务:Windows Defender 

第一个线程删除 Windows 安全服务。这是通过利用受信任的安装程序服务来实现的。受信任的安装程序(通常以其显示名称“Windows 模块安装程序”而闻名)通常用于下载和安装 Windows 更新和可选组件。如果受信任的安装程序尚未运行,则会启动它,然后复制其访问令牌句柄,以允许当前线程访问大多数其他正在运行的服务。使用此令牌,LockBit 3.0 枚举正在运行的服务,并且与 config.json 中预定义服务之一匹配的任何服务都将停止并删除。完成后,线程将退出,并且不会再次启动。 

9:通知窗口安全中心已停止 

图 10:尝试重新启动 Windows 安全中心时出错 

在测试期间,短暂出现一个小任务栏通知,通知用户 Windows 安全中心服务已停止。但是,由于该服务不仅已停止,而且还被删除,因此无法使用 Windows 通知来重新启动该服务。 

服务 描述: __________ 
SecurityHealthService 提供有关端点保护状态的最新信息,包括监视 Windows 和其他供应商的工具 
wscsvcWindows 安全中心服务 
Sense Windows Defender高级威胁防护服务 
sppsvc 微软的软件保护服务 – 许可 
WdBoot Windows Defender ELAM (提前启动反恶意软件) 驱动程序 
WdFilter Windows Defender迷你过滤器驱动程序 
WdNisDrv Windows Defender防病毒网络检查系统驱动程序 
WdNisSvc Windows Defender网络检测服务 
温德芬德 Windows Defender服务 

1:已停止和已删除的服务 

请务必考虑 Windows 安全服务是此处的目标,因为这些服务已在默认的 config.json 文件中列出。如果使用此构建器的威胁参与者列出其他服务,则其他服务很可能会停止。 

图 11:服务已停止并已删除 

删除服务后,恶意软件将启动几个其他线程。图 12 中的屏幕截图显示了运行时最长的线程。首要任务是启动处理 Windows 回收站中文件的线程,然后启动监视和终止 SQL 进程的线程。然后有一个线程专门用于向目录编写赎金记录。最后启动的线程是加密文件的线程。在下面的屏幕截图中有三个线程专门用于此,但线程数是动态的,并且将根据可用的系统资源以及排队等待加密的项目的数量和类型而增加或减少。例如,为加密标识的网络资源与本地系统上的网络资源分开处理。 

图 12:某些LockBit 3.0 线程 

回收站线程 

如上所示,有一个专用于处理回收站中文件的特殊线程。回收站中的文件未加密;相反,每个文件的内容将替换为随机生成的字节(以0x10000字节块为单位),然后删除它们。因此,即使使用解密器,回收站中的所有文件也无法恢复。 

监视和终止 SQL 进程 

一个单独的线程连续运行,监视和停止任何 SQL 进程。它通过每两秒获取一次服务列表来实现此目的。每个服务名称都传递给函数 isSQL(),该函数查找不区分大小写的字符串 SQL 的任何出现。如果名称包含此序列,则终止该序列。与许多其他线程不同,此线程在进程的生命周期内运行,确保 SQL 在执行赎金活动时不会运行超过两秒。 

图 13:终止 SQL 服务 

删除Shadow副本 

有一个线程专用于删除卷影副本。卷影副本是卷的快照,它在一个明确定义的时刻复制卷上保存的所有数据。通过调用 IWbem 提供程序 COM 对象并启动进程内服务器以允许对 Windows 管理接口进行查询来完成此操作。使用此功能,它将执行 WMI 查询“从Win32_ShadowCopy中选择 *”,然后删除每个返回的卷影副本。 

写赎金票据 

赎金票据线程检索并解密在 config.json 中定义的嵌入式赎金票据。该注释将写入每个未标记为排除的目录。其文件名由九个字母数字字符后跟 “.自述文件.txt“(即 xEC9do6g6.自述文件.txt)。前缀为 “的唯一值。自述文件.txt“是以前生成的互斥 GUID 的 MD5 哈希的前 6 个字节的 base64 编码。由于这种方法,系统上留下的所有赎金票据都被赋予相同的名称,但对该系统是唯一的。 

加密 

使用 Salsa-20 算法对文件进行加密。在加密线程期间,包含私钥的内存通过大量使用 RtlEncrypt 内存和 RtlDecypt 内存进行保护,这使得私钥仅在必要时在内存中未加密可用。 

域控制器发现 

另一个线程尝试使用在配置中找到的用户名和密码登录到受感染的系统。默认情况下,在 config.json 文件中找到的用户名和密码是与管理帐户关联的用户名和密码。如果任何登录成功,则会评估令牌成员身份是否为域管理员组中的成员身份,如果是,则复制令牌成员身份。然后,另一个线程查找并枚举可用的域控制器,获取它们的每个名称,并尝试使用成功的用户名和密码进行远程登录。 

连接的驱动器和共享的网络资源 

其他线程检查连接的驱动器和网络资源,同时特别注意安装了操作系统的驱动器和网络资源。在所有情况下,这些新发现的路径都传递给生成其他加密线程的函数。 

网络流量 

命令和控制流量通过 TLS 1.2 传输到配置 .json 文件中列出的地址。不幸的是,变量及其值在此TLS层下被AES加密,并且每个请求的顺序都会被洗牌。但是,POST 请求的总体格式是一致的,如图 14 所示。一直观察到的是一个 POST 请求后跟“/?”,以及一长串 URL 样式变量=值对,后面用 & 符号分隔,后跟 HTTP/1.1 字段。User-Agent 字符串是随机的,因此不应包含在签名中,但“连接”、“接受编码”、“内容类型”和“缓存控制”字段是常量。数据部分的基本格式也是一致的,但长度略有不同。 

14:初始开机自检请求 

尽管如果没有加密密钥,解密截获的网络流量几乎是不可能的,但以下示例提供了对所传输信息的一般理解。 

图 15:JSON 格式的表达式数据 

后加密 

加密后,桌面背景将更改为黑色和白色文本,如图 14 中的示例所示。此外,加密文件的图标将更改为图 16 左上角所示的 LockBit“B”图标。 

图 16:赎金桌面和锁位图标 

解密器 

由于解密器是与构建器一起生成的,因此我们测试了其操作和使用。运行时,将显示一个窗口,如下所示,用户必须单击右侧标记为“解密所有加密文件”的大按钮。单击后,所有解密文件的计数器会在文件解密时滴答作响。如此处所示,应用程序从未关闭,但通过 CPU 使用率已停止处理文件,表明它已完成。 

处理结束时有 64 个文件的差异。为了解释这 64 个文件,在文件系统中扫描了所有名为 LockBit 的文件,但未找到匹配的文件。回收站文件可以占64个文件中的一些,但是从回收站中删除的10个文件仍然使我们缺少64个。撇开这些丢失的文件不谈,回收站未还原,并且所有卷影副本仍被擦除。对于解密器确实工作的所有常规文件,文件已正确还原,并且删除了Lockbit桌面背景。没有运行结论性测试来验证加密或解密文件的数量与此工具报告的数量。 

图 17:锁位 3.0 解密器 

MITRE ATT&CK TIDs 

入侵指标

国际 奥委会 描述: __________ 
c2bc344f6dde0573ea9acdfb6698bf4c MD5 生成器文件 
d6ae7dc2462c8c35c4a074b0a62f07cfef873c77 SHA1 生成器文件 
a736269f5f3a9f2e11dd776e352e1801bc28bb699e47876784b8ef761e0062db SHA256 构建器文件 
71c3b2f765b04d0b7ea0328f6ce0c4e2 MD5 凯基文件 
bf8ecb6519f16a4838ceb0a49097bcc3ef30f3c4 SHA1 凯基文件 
ea6d4dedd8c85e4a6bb60408a0dc1d56def1f4ad4f069c730dc5431b1c23da37 SHA256 凯基文件 
4d388f95a81f810195f6a8dfe86be755 MD5 资源 100 
cb6fdb25a15b7797890传真2b823984f93da5368 SHA1 资源 100 
cc3d006c2b963b6b34a90886f758b7b1c3575f263977a72f7c0d1922b7feab92 SHA256 资源 100 
87308ec0a44e79100db9dbec588260ec MD5 资源 101 
939ff7e5eeaccb0c2f4ee080a8e403e532b6317a SHA1 资源 101 
03b8472df4beb797f7674c5bc30c5ab74e8e889729d644eb3e6841b0f488ea95 SHA256 资源 101 
4655a7ac60ed48df9b57648db2f567ef MD5 资源 103 
02ea524429ba2aefac63fed27e924ab3659f8c00 SHA1 资源 103 
a0db5cff42d0ee0de4d31cff5656ed1acaa6b0afab07d19f9f296d2f72595a56 SHA256 资源 103 
23a30838502f5fadc97e81f5000c4190 MD5 资源 106 
9c1142122370c9b28b13aa147c6e126b3be50845 SHA1 资源 106 
ae993930cb5d97caa5a95b714bb04ac817bcacbbf8f7655ec43e8d54074e0bd7 SHA256 资源 106 

雅苒规则 

2人评论了“LockBit 3.0 勒索软件解锁”

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部