ShrinkLocker:将 BitLocker 变成勒索软件

介绍

攻击者总能找到创造性的方法来绕过防御功能并实现他们的目标。这可以通过打包器、加密器和代码混淆来完成。但是,逃避检测以及最大限度地提高兼容性的最佳方法之一是使用操作系统自己的功能。在勒索软件威胁的上下文中,一个值得注意的示例是利用加密 DLL ADVAPI32.dll中存在的导出函数,例如 CryptAcquireContextACryptEncrypt 和 CryptDecrypt。通过这种方式,攻击者可以确保恶意软件可以在支持此 DLL 的各种操作系统版本中运行和模拟正常行为。

尽管这看起来很聪明,但在最近的事件响应活动中,另一种聪明的技术引起了我们的注意:使用本机 BitLocker 功能加密整个卷并窃取解密密钥。BitLocker 的最初目的是解决丢失、被盗或不当停用设备导致的数据被盗或暴露的风险。尽管如此,威胁行为者已经发现,这种机制可以重新用于恶意目的,从而产生巨大的效果。

在该事件中,攻击者能够部署并运行高级 VBS 脚本,该脚本利用 BitLocker 进行未经授权的文件加密。我们在墨西哥、印度尼西亚和约旦发现了这个脚本及其修改版本。在以下各节中,我们将详细分析在事件响应工作期间获得的恶意代码,并提供缓解此类威胁的提示。

这不是我们第一次看到BitLocker用于加密驱动器并要求赎金。以前,攻击者使用过此 Microsoft 实用程序在访问和控制关键系统后对其进行加密。然而,在这种情况下,对手采取了额外的措施来最大限度地扩大攻击造成的损害,并阻碍对事件的有效反应。

VBScript 分析

一个有趣的事实是,攻击者并没有像威胁行为者通常那样费心混淆大部分代码。对此最合理的解释是,在执行脚本时,他们已经完全控制了目标系统。它作为 Disk.vbs 存储在 C:\ProgramData\Microsoft\Windows\Templates\ 中。它的第一行包含一个函数,该函数使用 ADODB 将字符串转换为其二进制表示形式。Stream 对象。此函数稍后用于对要在 HTTP POST 请求中发送的数据进行编码。

Stream_StringToBinary功能

脚本的主要功能的第一步是使用 Windows Management Instrumentation (WMI) 在 Win32_OperatingSystem 类的帮助下查询有关操作系统的信息。对于查询结果中的每个对象,脚本将检查当前域是否与目标不同。如果是,脚本将自动完成。之后,它会检查操作系统的名称是否包含“xp”、“2000”、“2003”或“vista”,如果 Windows 版本与其中任何一个匹配,则脚本会自动完成并自行删除。

执行的初始条件

之后,脚本继续依赖 WMI 来查询有关操作系统的信息。然后,它执行磁盘大小调整操作,该操作可能因操作系统版本检查的结果而异。这些操作仅在固定驱动器 (DriveType = 3) 上执行。文件系统中通常存在以下驱动器类型:

恶意软件不尝试在网络驱动器 (DriveType = 4) 上执行相同操作的可能原因是为了避免触发网络上的检测工具。

若要在 Windows Server 2008 或 2012 中调整本地驱动器的大小,该脚本会检查主启动分区并保存此信息。它保存不同分区的索引,然后使用 diskpart 执行以下操作:

  • 将每个非引导分区的大小缩小 100 MB。这将在每个分区中创建 100 MB 的未分配空间,而不是引导卷;
  • 将未分配的空间拆分为新的 100 MB 主分区;
  • 使用覆盖选项格式化分区,该选项会强制卷在必要时首先卸除,并为每个分区分配一个文件系统和一个驱动器号;
  • 激活分区;
  • 如果收缩过程成功,请将“ok”另存为变量,以便脚本可以继续。

脚本在 Windows Server 2008 和 2012 中执行的磁盘大小调整操作

如果操作成功,则代码将使用实用程序 bcdboot 和以前保存为启动卷的驱动器号在新的主分区上重新安装启动文件。

引导文件重新安装

其他操作系统版本的分区收缩操作类似,但出于兼容性原因,使用不同的代码段实现。下面的示例显示了应用于 Windows 版本 7、8 和 8.1 的过程。

Windows 版本 7、8 或 8.1 中的磁盘大小调整操作

对于 Windows 2008 或 Windows 7,在分区收缩过程完成后,变量 matchedDrives 会保存以逗号分隔的驱动器号,但前提是文件系统是 NFTS、exFAT、FAT32、ReFS 或 FAT。修改了代码以打印示例:

然后,该脚本将添加以下注册表项:

  • fDenyTSConnections = 1:禁用 RDP 连接;
  • scforceoption = 1:强制执行智能卡身份验证;
  • UseAdvancedStartup = 1:需要使用 BitLocker PIN 进行预启动身份验证;
  • EnableBDEWithNoTPM = 1:允许没有兼容 TPM 芯片的 BitLocker;
  • UseTPM = 2:允许使用 TPM(如果可用);
  • UseTPMPIN = 2:允许将启动 PIN 与 TPM 一起使用(如果可用);
  • UseTPMKey = 2:允许将启动密钥与 TPM 一起使用(如果可用);
  • UseTPMKeyPIN = 2:允许将启动密钥和 PIN 与 TPM 一起使用(如果可用);
  • EnableNonTPM = 1:允许没有兼容 TPM 芯片的 BitLocker,需要 USB 闪存驱动器上的密码或启动密钥;
  • UsePartialEncryptionKey = 2:需要将启动密钥与 TPM 一起使用;
  • UsePIN = 2:需要将启动 PIN 与 TPM 一起使用。

如果脚本检测到错误,它将重新启动系统。

注册表修改

通过动态分析恶意软件,我们可以确认执行的注册表更改:

有趣的是,有几个函数执行这些操作,每个函数都是为不同版本的 Windows 设计的。在某些条件中,它通过远程服务器管理工具的 ID 266 检查 BitLocker 驱动器加密工具是否处于活动状态。然后,恶意软件检查 BitLocker 驱动器加密服务 (BDESVC) 是否正在运行。如果没有,它将启动服务。

BDESVC验证

该脚本还会将新启动分区的标签更改为攻击者的电子邮件,如下图所示,以便受害者可以联系他们。

驱动器标签修改

攻击者的电子邮件作为驱动器标签

之后,恶意软件会禁用用于保护 BitLocker 加密密钥的保护程序并将其删除。删除方法可能因操作系统版本而异。在 Windows Server 2008 或 Windows 7 方案中,这是通过 VBS 功能完成的,之后脚本使用 PowerShell 强制删除保护程序。

完成删除后,它允许使用数字密码作为保护器和加密功能。

保护程序删除

删除默认保护程序的原因是为了避免用户恢复密钥,如下例所示。

BitLocker 密钥的恢复

下一步,恶意软件使用以下元素的随机乘法和替换生成 64 个字符的加密密钥:

  • 数字为 0–9 的变量;
  • 著名的 pangram,“快速的棕色狐狸跳过懒惰的狗”,小写和大写,其中包含英文字母表的每个字母;
  • 特殊字符。

此密码的随机性是由受影响系统的各种元素(例如使用的内存和网络统计信息)组成的种子完成的。稍后,此信息将发送给攻击者。我们在环境中测试了密钥生成逻辑,只需对脚本稍作修改,就能够看到生成的密码。

密钥生成过程

然后,该代码将以前生成的加密密钥转换为安全字符串(一个 PowerShell 选项,可防止在内存中创建字符串对象),并有效地在驱动器上启用 BitLocker。

然后,该脚本使用以下选项创建 HTTP POST 请求对象:

  • 使用 WinHTTP 版本 5.1。
  • 接受法语。
  • 忽略 SSL 错误 (httpRequest.Option(4) = 13056 à WinHttpRequestOption_SslErrorIgnoreFlags)。
  • 禁用重定向 (httpRequest.Option(6) = false à WinHttpRequestOption_EnableRedirects)。

攻击者使用域 trycloudflare.com 来混淆他们的真实地址。这个域是合法的,它属于CloudFlare,用于为开发人员提供快速隧道。攻击者配置的子域是 scottish-agreement-laundry-further。

创建请求

该恶意软件还包括有关计算机和生成的密码的信息,作为 POST 请求的有效负载,如下图所示。

在 POST 请求中发送的信息

该脚本还包含一个循环,如果发生错误,该循环会尝试将信息发送给攻击者五次。

通过一些调整,我们能够打印发送给攻击者的数据,如下图所示。请注意,数据包括计算机名称、Windows 版本、受影响的驱动器和密码字符串。因此,受害者的 IP 地址也将记录在攻击者的服务器上,允许他们跟踪每个受害者。

重试过程

要发送的信息

删除 BitLocker 保护程序并配置驱动器加密后,脚本将执行以下步骤来覆盖其跟踪。

它验证主机名是否是此恶意软件的目标,然后删除文件:

  • \Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\ScheduledTasks\ScheduledTasks.xml
  • \scripts\Login.vbs
  • \scripts\Disk.vbs
  • C:\ProgramData\Microsoft\Windows\Templates\Disk.vbs

删除操作

然后,该脚本使用 wevtutil 清除 Windows PowerShell 和 Microsoft-Windows-PowerShell/操作日志。它会打开系统防火墙并删除其所有规则。它还会删除任务 VolumeInit 和 VolumeCheck。最后,恶意软件执行强制关机。

关机后,受害者将看到 BitLocker 屏幕。如果用户尝试使用恢复选项,他们将只看到消息“电脑上没有更多的 BitLocker 恢复选项”。

BitLocker 恢复屏幕

战术、技术和程序

分析表明,此威胁参与者对 VBScript 语言以及 Windows 内部和实用程序(如 WMI、diskpart 和 bcdboot)有广泛的了解。以下是为此方案确定的 TTP。

策略技术编号
执行命令和脚本解释器:Visual Basic编号:T1059.005
执行Windows Management Instrumentation编号:T1047
执行命令和脚本解释器:PowerShell编号:T1059.001
冲击数据加密以产生影响编号:T1486
冲击系统关机/重启编号:T1529
防御规避清除 Windows 事件日志货号 T1070.001
防御规避修改注册表T1112型
防御规避禁用或修改系统防火墙编号:T1562.004
外泄通过 Web 服务外泄编号:T1041

文物和数字取证

由于脚本执行的本地活动包括清理其跟踪、清除一些日志和为执行而创建的任务,最后加密整个驱动器,因此获取取证工件以识别恶意活动并找到解密机会并不容易。

幸运的是,一些脚本内容和执行的命令是由第三方服务注册和记录的,并收集这些内容和命令进行分析。这使我们能够从某些受影响的系统中获取加密密钥转换为的安全字符串。

获取的安全字符串

在其他地方,我们试图收集存储对 C2 的 POST 请求的网络日志。但是,Web 活动日志记录的最常见配置包括 GET,但不幸的是不包括 POST 请求。

我们最终获得了 POST 请求,但这非常具有挑战性。该案例为记录 POST 流量提供了理由,并确保将所有关键系统活动转发到中央存储库,该存储库具有足够的空间来存储建议的保留期(六个月或更长时间)的数据,以避免在攻击者从各个系统中删除所有跟踪后丢失证据。

最后,客户基础架构中的某些系统仍未加密,起初被认为不受影响。但是,我们后来发现它们实际上受到了影响,但未在这些系统中配置 BitLocker。这使我们能够获得脚本本身,分析其行为并收集进一步的证据。

恢复

虽然我们可以获取威胁参与者实施的一些密码短语和固定值来创建加密密钥,但该脚本包含一些变量值,并且每个受影响的系统都不同,这使得解密过程变得困难。

收集用于种子的网络信息

缓解措施

鼓励公司使用 BitLocker 或其他加密工具(如 VeraCrypt)来保护公司机密。但是,必须采取一些预防措施来避免攻击者的滥用。

  • 使用可靠、配置正确的 EPP 解决方案来检测试图滥用 BitLocker 的威胁;
  • 实现托管检测和响应 (MDR)主动扫描威胁;
  • 如果启用了 BitLocker,请确保使用强密码,并将恢复密钥存储在安全位置;
  • 确保用户只有最低权限。这样,他们就无法自行启用加密功能或更改注册表项;
  • 启用网络流量日志记录和监控。配置 GET 和 POST 请求的日志记录。在感染的情况下,对攻击者域发出的请求可能包含密码或密钥;
  • 监视与 VBS 执行和 PowerShell 关联的事件,并将记录的脚本和命令保存到外部存储库,存储可能在本地删除的活动;
  • 经常进行备份,离线存储并对其进行测试。

如果您在调查勒索软件攻击和恢复加密数据方面需要帮助,请通过以下方式与我们联系gert@kaspersky.com.

结论

我们的事件响应和恶意软件分析证明,攻击者正在不断改进其策略以逃避检测。在此事件中,我们观察到本机 BitLocker 功能被滥用于未经授权的数据加密。VBS 脚本表明,参与此攻击的恶意参与者对 Windows 内部结构有很好的了解。虽然脚本分析一点也不复杂,但这种威胁很难检测,因为工件内部的唯一字符串可以很容易地修改以绕过 YARA 规则。因此,在此类场景中,最佳检测方法是行为分析,它将应用程序执行的不同操作关联起来以得出结论。

Kaspersky 产品通过以下判定检测本文中描述的威胁:

  • 特洛伊木马.VBS.SAgent.gen;
  • 特洛伊木马-Ransom.VBS.BitLock.gen;
  • Trojan.Win32.Generic。

妥协指标

网址:
hxxps://scottish-agreement-laundry-further[点]trycloudflare[点]com/updatelog
hxxps://generated-eating-meals-top[点]trycloudflare.com/updatelog
hxxps://generated-eating-meals-top[点]trycloudflare.com/updatelogead
hxxps://earthquake-js-westminster-searched[点]trycloudflare.com:443/updatelog

电子邮件地址:
onboardingbinder[at]proton[dot]me
conspiracyid9[at]protonmail[dot]com

MD5 哈希:
842f7b1c425c5cf41aed9df63888e768

参考连接:滥用 BitLocker 的新勒索软件组织 |安全列表 (securelist.com)

发表评论

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

滚动至顶部