Seth GoodwinDaniel Stepanic

BITS 和字节:分析新发现的后门 BITSLOTH

Elastic Security Labs 发现了一个利用后台智能传输服务 (BITS) 实现 C2 的新型 Windows 后门。该恶意软件是在最近一个被追踪为 REF8747 的活动组中发现的。

阅读时间:19 分钟恶意软件分析
BITS 和字节:分析新发现的后门 BITSLOTH

BITSLOTH 概览

BITSLOTH 是一种新发现的 Windows 后门,它利用后台智能传输服务 (BITS) 作为其命令和控制机制。 BITSLOTH 是在今年夏初 LATAM 地区的一次入侵中被发现的。 据我们所知,这种恶意软件尚未公开记录,尽管尚不清楚谁是该恶意软件的幕后黑手,但根据对上传到 VirusTotal 的不同版本的跟踪,该恶意软件已经开发了好几年。

本文发布时,后门的最新版本具有 35 处理程序功能,包括键盘记录和屏幕捕获功能。 此外,BITSLOTH 包含许多用于发现、枚举和命令行执行的不同功能。 基于这些功能,我们评估该工具是为收集受害者数据而设计的。

关键要点

  • BITSLOTH 是新发现的 Windows 后门
  • BITSLOTH 使用内置的 Microsoft 功能后台智能传输服务 (BITS) 进行命令和控制通信
  • BITSLOTH 有许多用于发现/枚举、执行和收集目的的命令处理程序
  • 后门包含日志记录函数和字符串,与作者是中文母语人士相符

发现

我们的团队在 6 月 25 日 REF8747 期间观察到 BITSLOTH 安装在服务器环境中,这是对南美政府外交部的入侵。 此次入侵可追溯到受感染端点之一上的 PSEXEC 执行。 除 BITSLOTH 外,攻击者在大多数操作中使用了大量可公开获取的工具。

主要执行机制之一是通过名为 RINGQ 的 shellcode 加载项目。 与 DONUTLOADER 类似,RINGQ 将转换任何 Windows 可执行文件并生成自定义 shellcode 将其放入文件(main.txt)中。 该 shellcode 被解密并在内存中执行。 该技术用于绕过依赖某些反恶意软件产品中的哈希阻止列表或静态签名的防御措施。

我们观察到 RINGQ 被用于加载 IOX 端口转发器。 注:下图中的关键是“whoami”的十六进制转换。

此外,攻击者还使用 STOWAWAY 实用程序通过 HTTP 将加密流量代理到他们的 C2 服务器。 代理工具、隧道程序和重定向器通常在入侵过程中使用,以隐藏对入侵负责的对手。 这些工具为对手提供了各种功能,包括绕过内部网络控制的能力、提供终端接口、加密功能以及文件传输选项。

初次访问后,攻击者横向移动并将 BITSLOTH 以 DLL( flengine.dll )的形式放置在 ProgramData 目录内。 随后,演员执行了音乐制作程序 FL Studio ( fl.exe )。 根据与自我注入警报相关的观察到的调用堆栈,我们确认威胁行为者使用了使用FL Studio签名版本的传统侧载技术。

  c:\windows\syswow64\ntdll.dll!0x770841AC
  c:\windows\syswow64\ntdll.dll!0x7709D287
  c:\windows\syswow64\kernelbase.dll!0x76ED435F
  c:\windows\syswow64\kernelbase.dll!0x76ED42EF
  Unbacked!0x14EAB23
  Unbacked!0x14EA8B6
  c:\programdata\pl studio\flengine.dll!0x74AD2F2E
  c:\programdata\pl studio\fl.exe!0xDB3985
  c:\programdata\pl studio\fl.exe!0xDB3E5E
  c:\programdata\pl studio\fl.exe!0xDB4D3F
  c:\windows\syswow64\kernel32.dll!0x76B267F9
  c:\windows\syswow64\ntdll.dll!0x77077F4D
  c:\windows\syswow64\ntdll.dll!0x77077F1B

此调用堆栈与进程注入警报一起生成,使研究人员能够提取设置了读/写/执行 (RWX) 页面保护的内存 DLL。

BITSLOTH overview

在分析过程中,我们发现了几个较旧的 BITSLOTH 样本,显示了自 2021 年 12 月以来的发展记录。 在这个项目中,恶意软件开发人员选择了值得注意的术语——将 BITSLOTH 称为Slaver组件,将命令和控制服务器称为Master组件。 下面是链接到 BITSLOTH 的 PDB 文件路径之一的示例,它描述了这种情况:

BITSLOTH 不采用任何围绕控制流的混淆或任何类型的字符串加密。

旧样本和新样本均包含用于日志记录和调试目的的字符串。 例如,在启动时,只读部分 ( .rdata ) 中引用了一个字符串。

此简体中文宽字符串转换为: Note: There is already a program running, do not run it again…

BITSLOTH 中包含的这些小片段有助于阐明功能的开发和优先级,以及看似操作员的指令。 在最新版本中,开发人员添加了一个新的调度组件来控制 BITSLOTH 在受害环境中运行的具体时间。 这是我们在其他现代恶意软件家族(如EAGERBEE)中观察到的特征。

BITSLOTH 代码分析

BITSLOTH 是一个具有多种功能的后门,其中包括:

  • 运行和执行命令
  • 上传和下载文件
  • 执行枚举和发现
  • 通过键盘记录和屏幕捕获收集敏感数据

互斥锁

BITSLOTH 在每个样本中使用硬编码互斥锁 ( Global\d5ffff77ff77adad657658 ) 来确保一次只运行一个实例。

沟通

BITSLOTH 采用传统的客户端/服务器架构,开发人员将客户端称为Slaver组件,将命令和控制服务器 (C2) 称为Master组件。 开发人员在每个样本中通过前置字符串( rrrr_url )嵌入 C2 服务器的 IP /端口。 该字符串在内存中运行时充当识别 C2 配置本身的密钥,用于更新 C2 服务器。

以下是我们团队观察到的几个样本中的配置,威胁行为者配置了内部和外部 IP 范围。

rrrr_url216.238.121[.]132:8443
rrrr_url192.168.1[.]125:8443 
rrrr_url192.168.1[.]124:8443
rrrr_url45.116.13[.]178:443

BITSLOTH 的定义特征之一是使用后台智能传输服务(BITS) 进行 C2。 虽然此功能旨在促进两台机器之间的文件网络传输,但它已被多个国家支持的团体滥用,并继续在组织的监视下运行。 这种媒介对对手来说很有吸引力,因为许多组织仍在努力监控 BITS 网络流量和检测异常的 BITS 作业。

Windows 具有一个名为后台智能传输服务 (BITS) 的系统管理功能,可以将文件下载和上传到 HTTP Web 服务器或 SMB 共享。 BITS 服务在文件传输过程中采用多种功能,例如暂停/恢复传输、处理网络中断等。BITS 流量通常与软件更新相关,因此被错误地暗示为受信任的。 许多组织缺乏对 BITS 网络流量的可见性,这使得该网络流量成为一个有吸引力的目标。

BITS API 使用 IBackgroundCopyManager 接口 通过 Windows 的 组件对象模型(COM) 公开。该接口提供创建新作业、枚举传输队列中的现有作业以及从传输队列访问特定作业的功能。

初始化后,BITSLOTH 会取消受害计算机上与以下显示名称匹配的所有现有 BITS 作业:

  • WU Client Download
  • WU Client Upload
  • WU Client Upload R

开发人员使用这些名称来混合和关联不同的 BITS 传输作业及其各自的 BITS作业类型。 通过取消任何现有作业,这允许恶意软件的执行从干净状态开始运行。

以下是与 BITS 作业类型匹配的 Microsoft 定义:

  • BG_JOB_TYPE_DOWNLOAD - 指定作业将文件下载到客户端。
  • BG_JOB_TYPE_UPLOAD - 指定作业将文件上传到服务器。
  • BG_JOB_TYPE_UPLOAD_REPLY - 指定作业将文件上传到服务器,并从服务器应用程序接收回复文件。

取消任何现有作业后,将检索 MAC 地址和操作系统信息并将其放入全局变量中。 创建一个新线程,配置自动启动功能。 在此线程中,创建了一个名为 ( Microsoft Windows ) 的新 BITS 下载作业。

此下载作业将目标网址设置为http://updater.microsoft[.]com/index.aspx 。 虽然该域不可路由,但 BITSLOTH 会使用看似良性的域作为掩护来伪装此 BITS 作业,然后在传输状态发生变化时使用SetNotifyCmdLine执行恶意软件。

有趣的是,这个独特的工具痕迹使我们能够转向其他样本,表明这个家族已经流传了好几年。

此时,该恶意软件已通过名为Microsoft Windows BITS 作业配置了持久性。 下面是此作业配置的屏幕截图,显示通知命令行设置为 BITSLOTH 位置 ( C:\ProgramData\Media\setup_wm.exe )

一旦 BITSLOTH 处于活动状态,它将开始使用WU Client Download作业向 C2 服务器请求指令。 此请求 URL 是通过将 MAC 地址与硬编码字符串 ( wu.htm ) 组合生成的。 以下是示例 URL:

https://192.168.182.130/00-0C-29-0E-29-87/wu.htm

响应此请求,恶意软件将从 C2 服务器接收一个 12 字节的结构,其中包含作业的唯一 ID、处理程序的命令 ID 和响应令牌。 在这些文件传输交换过程中,受害机器的临时文件被用作占位符来保存来回传输的数据,BITSLOTH 使用以字符( wm )开头并附加随机字符的文件名。

命令功能

BITSLOTH 使用具有 35 个函数的命令处理程序来处理应在受害机器上采取的特定操作。 该恶意软件可以选择配置 HTTP 或 HTTPS,并使用硬编码的单字节 XOR( 0x2 )来混淆来自 C2 服务器的传入指令。 包含收集到的受害者数据的出站请求没有受到恶意软件本身的额外保护,并且以纯文本形式发送。

为了快速行动,我们的团队利用了 SafeBreach Labs 发布的 BITS 服务器的有用的 Python 实现 。通过将 C2 IP 设置为虚拟机内的环回地址,我们就可以对网络流量进行自检。

所有处理程序的行为都类似,执行主要功能,然后将处理程序返回的数据写入本地临时文件。 然后,这些临时文件将被映射到名为WU Client Upload BITS 上传作业。 每个处理程序都使用自己的字符串格式来创建唯一的目标 URL。 URL 末尾的每个文件名都使用单个字母来表示从主机收集的数据类型,例如P.bin表示进程, S.bin表示服务。

http://192.168.182.130/00-0C-29-0E-29-87/IF/P.bin

下面是一个示例屏幕截图,展示了具有字符串格式的进程枚举处理程序以及如何将此数据链接到 BITS 上传作业。

通过直接查看 BITS 上传作业,也可以观察到与被窃取数据的联系。 在下面的截图中,我们可以看到上传的目标 URL(C2 服务器)和链接到该作业的临时文件( wm9F0C.tmp )。

如果我们查看临时文件,我们可以看到从受害主机收集的进程信息。

上传作业创建后不久,数据就会通过包含捕获数据的 BITS_POST 请求通过网络发送。

命令处理表

命令ID描述
0通过WTSEnumerateProcessesW收集正在运行的进程
1通过EnumServicesStatusW获取 Windows 服务
2通过systeminfo命令获取系统信息
3通过EnumWindows检索所有顶层窗口
5收集文件列表
6从 C2 服务器下载文件
7将文件上传到 C2 服务器
10自行终止
11将通信模式设置为 HTTPS
12将通信模式设置为 HTTP
13删除持久性
14重新配置持久性
15取消 BITS 下载作业 ( WU Client Download )
16移除持久性并删除自身
17线程配置
18处理程序 #2 的重复项
19根据文件路径删除文件
20根据文件路径删除文件夹
21使用 stdin/stdout 重定向启动终端 shell
22重置终端处理程序 (#21)
23运行 Windows 树命令
24更新BITSLOTH,删除旧版本
25通过ExitWindowsEx关闭机器
26通过ExitWindowsEx重新启动计算机
27通过ExitWindowsEx从计算机注销用户
28根据进程标识符 (PID) 终止进程
29通过msinfo32命令检索更多信息
30通过ShellExecuteW执行单个文件
34通过CreateDirectoryW创建新目录
41上传数据到C2服务器
42通过capGetDriverDescriptionW检查捕获驱动程序
43截取受害机器桌面的截图
44记录受害机器的击键
45停止录制截图图像
46停止键盘记录器功能

后门功能

BITSLOTH 包含各种各样的后入侵能力,可供对手在受害者环境中操作。 我们将把更重要的功能分为不同的类别,并重点关注它们。

Discovery/enumeration

BITSLOTH 处理程序的一部分专注于从受害机器检索和枚举数据。 其中包括:

  • 通过WTSEnumerateProcessesW检索进程信息
  • 通过EnumServicesStatusW收集 Windows 服务
  • 通过回调函数通过EnumWindows枚举所有顶层窗口
  • 通过 Windows 实用程序(例如systeminfomsinfo32检索系统信息

在许多处理程序中,语言环境版本配置为chs (简体中文)。

BITSLOTH 有几个自定义枚举函数,与检索文件列表和执行目录树搜索有关。 文件列表处理程序从操作员那里获取自定义参数来定位感兴趣的特定文件夹位置:

  • GET_DESKDOPCSIDL_DESKTOPDIRECTORY (桌面)
  • GET_BITBUCKET -> CSIDL_BITBUCKET (回收站)
  • GET_PERSONAl -> CSIDL_MYDOCUMENTS (我的文档)

BITSLOTH 还能够使用 Windows实用程序收集机器上每个文件的完整目录/文件列表。 该处理程序循环遍历每个驱动器号的字母表,然后将数据本地保存在名为aghzyxklg的临时文件中。

然后将树数据压缩并以 .ZIP 扩展名发送到 C2 服务器。 以下是收集数据的一个示例。 这些数据可以帮助查明敏感文件或提供有关目标环境的更多背景信息。

收集

在收集方面,有少数处理程序用于主动收集信息。 这些主要围绕从桌面捕获屏幕截图和执行键盘记录功能。

BITSLOTH 实现了一个用于识别捕获记录设备的轻量级函数,这似乎是一种使用 Windows API( capGetDriverDescriptionW )检查摄像头的技术。

BITSLOTH 能够根据操作员提供的参数进行截屏。 此函数的输入使用分隔符( || ),其中运算符提供捕获间隔的秒数和捕获计数。 图像被存储为具有硬编码名称ciakfjoab的 BMP 文件,并使用.ZIP档案通过 DEFLATE 算法进行压缩。 然后将这些带有时间戳的压缩档案发送到 C2 服务器。

该处理程序利用常见的屏幕截图 API,例如Gdi32.dll中的CreateCompatibleBitmapBitBlt

为了记录击键,BITSLOTH 使用传统技术,通过使用GetAsyncKeyState / GetKeyState监控按键。 该处理程序有一个参数,指定执行键盘记录的秒数。 该数据也被压缩在.ZIP文件中,并发送到 C2 服务器。

执行/维护

BITSLOTH 具有多种维护和文件执行功能以及标准后门功能,例如:

  • 能够通过ShellExecuteW独立执行文件
  • Windows 终端能够执行命令并通过管道读回数据
  • 创建目录、执行重启、关闭机器、终止进程
  • 在C2服务器之间执行文件上传和下载
  • 修改 BITSLOTH 配置,例如通信模式、更新 C2 URL、关闭键盘记录/截图功能

BITSLOTH pivots

BITSLOTH 似乎正在积极部署。 我们发现另一个 BITSLOTH C2 服务器 ( 15.235.132[.]67 ) 使用相同的端口 ( 8443 ),并且使用了与我们入侵时相同的SSL 证书

While it’s not exactly clear who’s behind BITSLOTH, there was a large amount of activity of VirusTotal uploads occurring on December 12, 2021. With around 67 uploads over 24 hours from one submitter (1fcc35ea), we suspect someone linked to this project was validating detections, making modifications, and uploading different versions of BITSLOTH to VirusTotal. One sample was packed with VMProtect, others stripped of functionality, some uploads were debug builds, etc.

从那时起已经过去了很长时间,但有趣的是看到这个家庭在最近的入侵中出现。 无论这种恶意软件背后的目的是什么,令人惊讶的是,这个家族这么多年来一直没有引起人们的关注。

通过 MITRE ATT&CK REF 8747

Elastic 使用MITRE ATT&CK框架来记录高级持续性威胁针对企业网络使用的常见策略、技术和程序。

[h4] 战术 战术表示技术或子技术的原因。 这是对手的战术目标:采取行动的原因。

技术

技术代表对手如何通过采取行动来实现战术目标。

检测 REF8747

检测

在对该入侵集的分析过程中观察到了以下检测规则和行为预防事件:

YARA 签名

雅拉

Elastic Security 已创建 YARA 规则来识别此活动。 以下是识别 BITSLOTH 的 YARA 规则:

rule Windows_Trojan_BITSLOTH_05fc3a0a {
    meta:
        author = "Elastic Security"
        creation_date = "2024-07-16"
        last_modified = "2024-07-18"
        os = "Windows"
        arch = "x86"
        threat_name = "Windows.Trojan.BITSLOTH"
  	 license = "Elastic License v2"

    strings:
        $str_1 = "/%s/index.htm?RspID=%d" wide fullword
        $str_2 = "/%s/%08x.rpl" wide fullword
        $str_3 = "/%s/wu.htm" wide fullword
        $str_4 = "GET_DESKDOP" wide fullword
        $str_5 = "http://updater.microsoft.com/index.aspx" wide fullword
        $str_6 = "[U] update error..." wide fullword
        $str_7 = "RMC_KERNEL ..." wide fullword
        $seq_global_protocol_check = { 81 3D ?? ?? ?? ?? F9 03 00 00 B9 AC 0F 00 00 0F 46 C1 }
        $seq_exit_windows = { 59 85 C0 0F 84 ?? ?? ?? ?? E9 ?? ?? ?? ?? 6A 02 EB ?? 56 EB }
    condition:
        2 of them
}

观察结果

所有可观察数据均可通过组合 zip 包以 ECS 和 STIX 格式下载

本研究讨论了以下可观察的结果。

Observable类型名称参考
4a4356faad620bf12ff53bcfac62e12eb67783bd22e66bf00a19a4c404bf45dfSHA-256s.dllBITSLOTH
dfb76bcf5a3e29225559ebbdae8bdd24f69262492eca2f99f7a9525628006d88SHA-256125.exeBITSLOTH
4fb6dd11e723209d12b2d503a9fcf94d8fed6084aceca390ac0b7e7da1874f50SHA-256setup_wm.exeBITSLOTH
0944b17a4330e1c97600f62717d6bae7e4a4260604043f2390a14c8d76ef1507SHA-2561242.exeBITSLOTH
0f9c0d9b77678d7360e492e00a7fa00af9b78331dc926b0747b07299b4e64afdSHA-256setup_wm.exeBITSLOTH (VMProtect)
216.238.121[.]132IPv4 地址BITSLOTH C2 服务器
45.116.13[.]178IPv4 地址BITSLOTH C2 服务器
15.235.132[.]67IPv4 地址BITSLOTH C2 服务器
http ://updater.microsoft.com/index.aspxBITSLOTH 文件指示器
updater.microsoft.comBITSLOTH 文件指示器

参考资料

上述研究参考了以下内容:

关于 Elastic 安全实验室

Elastic Security Labs 是 Elastic Security 的威胁情报分支,致力于在威胁形势中创造积极变化。 Elastic Security Labs 提供有关新兴威胁的公开研究,并分析对手的战略、运营和战术目标,然后将该研究与 Elastic Security 的内置检测和响应功能相结合。

在 Twitter 上关注 Elastic Security Labs @elasticseclabs ,并在www.elastic.co/security-labs/查看我们的研究。