NukeSped 通过 Bundlore 发起了一种新型攻击
2021-07-01 11:10:00 Author: www.4hou.com(查看原文) 阅读量:89 收藏

在调查 NukeSped(一种远程访问木马)样本时,趋势科技研究人员发现几个 Bundlore 广告软件样本使用与 NukeSped 中发现的相同的无文件例程。

该后门可能是网络犯罪组织 Lazarus开发的,该组织至少自 2014 年以来一直活跃。 NukeSped 有多种变体,旨在在 32 位系统上运行并使用加密字符串来逃避检测。最近,作为 Lazarus 网络间谍活动的一部分,这种名为 ThreatNeedle 的木马程序出现了一种更复杂的形式。

在这些样本中发现的加密 Mach-O 文件已将 Bundlore(一种以下载合法应用程序为幌子在目标设备中安装广告软件的恶意软件家族)升级为更隐蔽且常驻内存的威胁。 Bundlore 还以 macOS 设备为目标,并与去年对 macOS Catalina 用户的攻击有关。北京时间2019年6月4日凌晨,在2019年WWDC全球开发者大会上,苹果macOS全新版本Catalina发布。将iTunes拆分为苹果音乐、苹果播客和苹果TV。

研究人员对 Lazarus 使用的 Ants2WhaleHelper 文件的分析导致研究人员将其检测为 NukeSped。 VirusTotal 中还发现了另一个具有 NukeSped 检测功能的文件 unioncryptoupdater。两者都包含一个看起来基于 GitHub 提交的例程。然而,奇怪的是,这些文件似乎都没有使用这个例程。

在 Ants2WhaleHelper 文件上使用 Interactive Disassembler Pro (IDA Pro) 显示其主要载荷为 _mapBuffer(图 1),它似乎是 _memory_exec 函数的修改版本(图 2)。这个函数看起来像是基于 GitHub 帖子中的代码;但是,没有指向 _memory_exec 函数的引用。

1.png

_mapBuffer 函数

2.png

从 GitHub 帖子复制的 _memory_exec 函数

此外,有效载荷有一个 _resolve_symbol 函数,它似乎没有被使用。它似乎也不是必需的,如图 3 所示。NukeSped 通常从 Web 服务器检索和启动其有效载荷,因此它不需要多余的 _resolve_symbol 函数,该函数在内部定位数据。如图4所示,在VirusTotal上搜索这个函数的操作代码会在201个文件中检测到它。结果只产生了两个NukeSped样品,而其余的是Bundlore样本。

3.png

NukeSped(左)与 Bundlore(右)的 _resolve_symbol 函数

4.png

搜索到的操作码

类似地,使用 VirusTotal 的 Retrohunt 进行搜索得到 273 个结果;其中大部分是 Bundlore 文件,只有三个是 Nukesped 文件。但是,这些 Nukesped 样本中的一个被验证为来自先前搜索的 Nukesped 文件的父级。在发现的 Bundlore 样本中,最古老的样本可以追溯到去年 5 月。对来自 VirusTotal 查询的这些 Bundlore 样本的进一步调查显示,这些样本确实使用了无文件例程,使 Bundlore 能够直接从内存中执行有效载荷。

Bundlore 的无文件例程

研究人员对 Bundlore 样本的研究表明,它们利用了 NukeSped 样本中未使用的相同功能。如图 5 所示,它们被混淆了,因为在 IDA Pro 中反汇编时它们的名称是随机的。虽然函数有一些差异,但内存文件执行的例程保持不变(图 6 和 图8)。

5.png

混淆函数

6.png

NukeSped(左列)与 Bundlore(右列)样本的反汇编

其中一个 Bundlore 样本(sha256:0a3a5854d1ae3f5712774a4eebd819f9e4e3946f36488b4e342f2dd32c8e5db2)的主要例程如下:

解密 __DATA.__data 部分以显示嵌入的 Mach-O 文件,如图 7 所示。 解密使用每个周期递增的 XOR 密钥:例如,0xDD 递增 0x2A、0xDD、0x00、0x2A、0x54, 0x7E、0xA8、0xD2、0xFC、0x00 等等。

7.png

 __DATA.__data部分的解密例程

调用一个名为 NSCreateObjectFileImageFromMemory 的函数从内存中的 Mach-O 文件创建一个广告软件图像。之后,调用 NSLinkModule 将恶意图像链接到主可执行文件的图像库。 Mach-O 文件格式从可执行文件 (0x02) 更改为包 (0x08),然后才能调用 NSCreateObjectFileImageFromMemory,如图 6 所示。

在内存中解析 Mach-O 文件的头结构以获取 value(LC_MAIN),一个值为 0x80000028 的加载命令。该命令包含诸如 Mach-O 文件入口点的偏移量之类的数据(图 8)。之后,广告软件检索偏移量并转到入口点。

8.png

在 NukeSped(左列)与 Bundlore(右列)中查找恶意图像的入口点

Bundlore 的 Mach-O 文件在内存中运行

解密密钥和增量值在 Bundlore 样本中有所不同,为了更好地理解嵌入文件,研究人员创建了一个 Python 脚本来解密和提取嵌入的 Mach-O 文件。通过这样做,研究人员能够观察到一个这样解密的 Mach-O 文件(sha256:a7b6639d9fcdb13ae5444818e1c35fba4ffed90d9f33849d3e6f9b3ba8443bea),它连接到一个目标URL (13636337101185210173363631[.]cloudfront[.]net/?cc-00&),但是地址在不同的样本中是不同的。然后下载一个名为 Player.app 的应用程序包,它伪装成 Flash Player,然后被下载并解压缩到 /tmp 目录中。 chmod 777 命令用于提取的应用程序包,然后启动伪造的应用程序。在执行这些例程时,Bundlore 会显示一条欺诈性错误消息(图 10)。完成后,它通过调用 sleep 函数并重复循环来休眠。

9.png

解密后的 Mach-O 文件的主要程序

10.png

Player.app 显示的虚假错误消息

本文翻译自:https://www.trendmicro.com/en_us/research/21/f/nukesped-copies-fileless-code-from-bundlore--leaves-it-unused.html如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/AWZz
如有侵权请联系:admin#unsafe.sh