探索BLOODALCHEMY后门

admin 2024年2月14日01:37:05评论8 views字数 6298阅读20分59秒阅读模式

关键词

BLOODALCHEMY、Shellcode注入、DLL侧载、REF5961入侵集

BLOODALCHEMY 是一种全新的,仍在积极开发中利用二进制文件作为注入载体的后门,该后门也是 REF5961 入侵集的一部分。

1. 前言

BLOODALCHEMY 是一个用 C 语言编写的 x86 后门,以 shellcode 的形式注入到一个带签名的白进程中,它也REF5961入侵集的一部分。

该后门需要运行特定的加载程序,因为它不是反射加载执行它本身没有加载和执行自身的能力。此外,BLOODALCHEMY shellcode并未编译为位置无关所以当加载到与首选基地址不同的基地址时,必须针对新的“地址”进行二进制代码修补。

本文的分析中,签名的进程是被之前的一个恶意DLL进行了侧载运行因此样本数据中缺少了这个恶意DLL,但很可能是 BLOODALCHEMY shellcode 的容器和加载器。

根据本文的研究恶意软件是一个更大的工具集的一部分,因为其当前缺乏必要的功能启用了异常调试日志记录以及存在用于持续性服务设置的测试字符串,因此仍在积极开发中。

  • BLOODALCHEMY 可能是一个新的后门,并且仍在积极开发中

  • BLOODALCHEMY 滥用合法的二进制文件进行加载

  • BLOODALCHEMY 具有多种运行模式、持续化机制和通信选项

2. 初始执行
在初始执行阶段攻击者部署了一个白程序BrDifxapi.exe,它容易受到 DLL 侧载的攻击。在部署此易受攻击的程序时,攻击者可以侧载未签名的 BLOODALCHEMY 加载器 (BrLogAPI.dll) 并将 shellcode 注入到当前进程。
探索BLOODALCHEMY后门

图1:用于执行 BLOODALCHEMY 加载程序的命令行

探索BLOODALCHEMY后门

图2:虚假的BrLogApi.dll,BLOODALCHEMY 工具集的一部分,由 BrDifxapi.exe 侧载

BrDifxapi.exe 是日本兄弟工业株式会社开发的二进制文件,本文观察到的版本签名已过期

探索BLOODALCHEMY后门

图3:签名过期的 BrDifxapi.exe

合法BrLogApi.dll DLL 也是日本兄弟工业株式会社的未签名 DLL。BLOODALCHEMY 用了相同的 DLL 名称。

探索BLOODALCHEMY后门

图4:合法的 BrLogApi.dll 是一个未签名的 DLL 文件

3. 代码分析

(1)数据混淆

为了隐藏其字符串,BLOODALCHEMY 恶意软件使用了一种经典技术,即对每个字符串进行加密,然后在其前面加上单字节解密密钥,最后将所有字符串连接在一起,形成所谓的加密 blob。虽然字符串不以空值结束,但从 Blob 开始的偏移量、字符串和大小会作为参数传递给解密函数。

加密的 blob 格式

Blob = Key0 :EncryptedString0 + Key1:EncryptedString1 + ... + KeyN:EncryptedStringN

字符串解密算法的Python实现如下:

def decrypt_bytes(encrypted_data: bytes, offset: int, size: int) -> bytes:    decrypted_size = size - 1    decrypted_data = bytearray(decrypted_size)    encrypted_data_ = encrypted_data[offset : offset + size]    key = encrypted_data_[0]    i = 0    while i != decrypted_size:            decrypted_data[i] = key ^ encrypted_data_[i + 1]           key = (key + ((key << ((i % 5) + 1)) | (key >> (7 - (i % 5))))) & 0xFF           i += 1    return bytes(decrypted_data)

配置 blob 中包含的字符串使用相同的方法进行加密,但每个字符串的索引(偏移量)都混淆处理,这增加了两层必须解的混淆层。以下代码可以解额外的混淆层来解密配置中的字符串:

def decrypt_configuration_string(id: int) -> bytes:        return decrypt_bytes(                *get_configuration_encrypted_string(                        get_configuration_dword(id)))

每个功能如下:

功能get_configuration_dword_:

def get_configuration_dword(id: int) -> int:        b = ida_bytes.get_bytes(CONFIGURATION_VA + id, 4)        return b[0] + (b[1] + (b[2] + (b[3] << 8) << 8) << 8)

功能get_configuration_encrypted_strng_:

def get_configuration_encrypted_string(id: int) -> tuple[int, int]:         ea = CONFIGURATION_VA + id        v2 = 0        i = 0        while i <= 63:            c = ida_bytes.get_byte(ea)            v6 = (c & 127) << i            v2 = (v2 | v6) & 0xFFFFFFFF            ea += 1            if c >= 0:                break            i += 7            return ea, v2

(2)持久化

BLOODALCHEMY 通过将自身复制到路径后缀Testtest.exe的持久化目录中来维护持久化。

探索BLOODALCHEMY后门

图5:BLOODALCHEMY 文件夹和二进制名称

持久文件夹的根目录是根据其当前权限级别选择的,它可以是:

  • %ProgramFiles%

  • %ProgramFiles(x86)%

  • %Appdata%

  • %LocalAppData%Programs

探索BLOODALCHEMY后门

图6:BLOODALCHEMY 持久化根目录选择

根据配置,可以通过不同的方法实现持续性

  • 作为一项服务

  • 作为注册表项

  • 作为计划任务

  • 使用COM接口

为了识别持续性机制,我们可以使用卸载命令来观察恶意软件删除持性的不同方式:

  • 作为名为Test的服务:

探索BLOODALCHEMY后门

图7:BLOODALCHEMY 删除以前安装的服务

  • 作为注册表项CurrentVersionRun:

探索BLOODALCHEMY后门

图8:BLOODALCHEMY 删除“CurrentVersionRun”持续性注册表项

  • 作为计划任务,通过以下方式以系统权限运行schtask.exe:

b'schtasks.exe /CREATE /SC %s /TN "%s" /TR "'%s'" /RU "NT AUTHORITY\SYSTEM" /Fb'

使用TaskScheduler::ITaskServiceCOM接口进行持久化

探索BLOODALCHEMY后门

图9:ITaskService COM 接口的实例化

(3)运行模式

该恶意软件根据其配置有不同的运行模式:

  • 在主进程或单独的进程线程内运行

恶意软件可以在主进程线程内运行,或者在单独的线程中运行

探索BLOODALCHEMY后门

图10:在主函数中调用功能函数

探索BLOODALCHEMY后门

图11:在新线程中调用的功能函数

  • 创建一个Windows进程并向其中注入shellcode

从硬编码列表创建一个 Windows 进程,并使用WriteProcessMemory+QueueUserAPC+ResumeThread方法通过参数传递 shellcode的入口点。 

探索BLOODALCHEMY后门

图12:进程注入运行方法

探索BLOODALCHEMY后门

图13:用于注入进程的目标二进制文件列表

shellcode 包含在我们称之为 p_interesting_data 的参数中,该参数实际上是一个指向包含恶意软件配置和可执行二进制数据结构的指针。

探索BLOODALCHEMY后门

图14:入口点原型

探索BLOODALCHEMY后门

图15:在远程进程中复制提供的 shellcode

探索BLOODALCHEMY后门

图16:进程注入例程的最后部分

  • 作为一项服务

将其自身作为服务安装并运行情况下,服务名称和描述将为Test和Digital Imaging System:

探索BLOODALCHEMY后门

图17:用于安装 BLOODALCHEMY 服务的名称和描述字符串

此外,当作为服务运行并由服务管理器启动时,恶意软件会首先将服务状态设置为SERVICE_RUNNING”,然后将状态设置为“SERVICE_STOPPED”,从而将自身伪装为已停止,而实际上恶意软件仍在运行。

探索BLOODALCHEMY后门

图18:BLOODALCHEMY 的服务入口点伪装服务状态

(4)通信

恶意软件使用 HTTP 协议、命名管道或套接字进行通信。当使用 HTTP 协议时,恶意软件请求以下 URI:

/Inform/logger/.

探索BLOODALCHEMY后门

图19:用于连接到 C2 的 URI

在这种情况下,BLOODALCHEMY 将尝试使用在注册表项中找到的任何代理服务器SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings。

探索BLOODALCHEMY后门

图20:从注册表获得的主机代理信息

本文的示例并未发现任何 C2 基础设施,但 URL 可能如下所示:

https://malwa[.]re/Inform/logger

使用命名管道时,名称是使用当前 PID 作为种子随机生成的。

探索BLOODALCHEMY后门

图21:使用当前 PID 生成随机管道名称

在等待客户端连接到该命名管道时,恶意软件会扫描正在运行的进程,并检查其父进程是否仍在运行,这可能是为了限制对命名管道的访问。也就是说,恶意软件并没有检查管道客户端是否是正确的父进程,只是检查父进程是否在运行。这就在保护命名管道时,引入了有缺陷的逻辑。

探索BLOODALCHEMY后门

图22:检索父级 PID

探索BLOODALCHEMY后门

图23:用于限制管道访问父进程的检查存在缺陷

从恶意软件字符串和导入函数中我们知道恶意软件还可以使用 TCP/UDP 套接字进行操作。

探索BLOODALCHEMY后门

图24:在 "通信 "接口的一个实现中使用套接字API

虽然我们还没有对它们的使用做出任何结论,但可以列出在加密字符串中找到的所有协议,对于所有协议,数据都可以加密,LZNT1 压缩/或 Base64 编码:

  • DNS://

  • HTTP://

  • HTTPS://

  • MUX://

  • UDP://

  • SMB://

  • SOCKS5://

  • SOCKS4://

  • TCP://

(5)命令

该恶意软件仅包含几个具有实际效果的命令:

  • 写入/覆恶意软件工具集

有三个命令可以使用接收到的 Base64 编码的二进制数据写入(或覆)恶意软件工具集:

n任意一个恶意软件二进制文件 ( Test.exe)

n侧载 DLL ( BrLogAPI.dll)

n主要信二进制文件 ( BrDifxapi.exe)

探索BLOODALCHEMY后门

图25:BLOODALCHEMY 工具集覆盖命令

  • 启动其恶意软件二进制文件Test.exe

持续化目录中启动Test.exe二进制文件的一个命令。

探索BLOODALCHEMY后门

图26:运行恶意软件可执行二进制文件的BLOODALCHEMY 命令

  • 卸载并终止

卸载并自行终止命令会首先删除特定位置的所有文件,然后删除任何持续性注册表项或计划任务,接着删除已安装的服务,最后结束自身

探索BLOODALCHEMY后门

图27:卸载并自行终止的命令

探索BLOODALCHEMY后门

图28:卸载功能

  • 收集主机信息

主机信息收集命令包括CPU、OS、显示器、网络等。

探索BLOODALCHEMY后门

图29:信息收集命令

4. 总结

BLOODALCHEMY 是一个仅包含原始代码(无静态链接库)的后门 shellcode。该代码似乎是由经验丰富的恶意软件开发人员编写的。

后门包含基于其配置的模块化功能。这些功能包括多种持久化机制C2 和执行机制。

虽然未经证实,但有效命令的存在表明该恶意软件可能是仍在开发中的较大入侵集或恶意软件包的一部分,或者是用于特定战术用途的恶意软件。

附录:攻击指标

(1)YARA规则:

Elastic Security 创建了 YARA 规则来识别这种活动。以下是识别 BLOODALCHEMY 恶意软件的 YARA 规则:

BLOODALCHEMYrule Windows_Trojan_BloodAlchemy_1 {    meta:        author = "Elastic Security"        creation_date = "2023-05-09"        last_modified = "2023-06-13"        threat_name = "Windows.Trojan.BloodAlchemy"        license = "Elastic License v2"        os = "windows"    strings:        $a1 = { 55 8B EC 51 83 65 FC 00 53 56 57 BF 00 20 00 00 57 6A 40 FF 15 }        $a2 = { 55 8B EC 81 EC 80 00 00 00 53 56 57 33 FF 8D 45 80 6A 64 57 50 89 7D E4 89 7D EC 89 7D F0 89 7D }    condition:        all of them}rule Windows_Trojan_BloodAlchemy_2 {    meta:        author = "Elastic Security"        creation_date = "2023-05-09"        last_modified = "2023-06-13"        threat_name = "Windows.Trojan.BloodAlchemy"        license = "Elastic License v2"        os = "windows"    strings:        $a1 = { 55 8B EC 83 EC 54 53 8B 5D 08 56 57 33 FF 89 55 F4 89 4D F0 BE 00 00 00 02 89 7D F8 89 7D FC 85 DB }        $a2 = { 55 8B EC 83 EC 0C 56 57 33 C0 8D 7D F4 AB 8D 4D F4 AB AB E8 42 10 00 00 8B 7D F4 33 F6 85 FF 74 03 8B 77 08 }    condition:        any of them}rule Windows_Trojan_BloodAlchemy_3 {    meta:        author = "Elastic Security"        creation_date = "2023-05-10"        last_modified = "2023-06-13"        threat_name = "Windows.Trojan.BloodAlchemy"        license = "Elastic License v2"        os = "windows"    strings:        $a = { 55 8B EC 83 EC 38 53 56 57 8B 75 08 8D 7D F0 33 C0 33 DB AB 89 5D C8 89 5D D0 89 5D D4 AB 89 5D }    condition:        all of them}rule Windows_Trojan_BloodAlchemy_4 {    meta:        author = "Elastic Security"        creation_date = "2023-05-10"        last_modified = "2023-06-13"        threat_name = "Windows.Trojan.BloodAlchemy"        license = "Elastic License v2"        os = "windows"    strings:        $a = { 55 8B EC 83 EC 30 53 56 57 33 C0 8D 7D F0 AB 33 DB 68 02 80 00 00 6A 40 89 5D FC AB AB FF 15 28 }    condition:        all of them}
(2)可观察对象:

样本

类型

名称

来源

e14ee3e2ce0010110c409f119d56f6151fdca64e20d902412db46406ed89009a

SHA-256

BrLogAPI.dll

BLOODALCHEMY loader

25268bc07b64d0d1df441eb6f4b40dc44a6af568be0657533088d3bfd2a05455

SHA-256

NA

BLOODALCHEMY payload

END
参考链接:https://www.elastic.co/security-labs/disclosing-the-bloodalchemy-backdoor

编辑|何其颖

审校|何双泽、王仁

本文为CNTIC编译整理,不代表本公众号观点,转载请保留出处与链接。联系信息进入公众号后点击“关于我们”可见。

探索BLOODALCHEMY后门

原文始发于微信公众号(国家网络威胁情报共享开放平台):探索BLOODALCHEMY后门

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月14日01:37:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   探索BLOODALCHEMY后门http://cn-sec.com/archives/2204688.html

发表评论

匿名网友 填写信息