Lazarus组织持续开展VMConnect供应链攻击活动

2023年 9月 21日 122.8k 0

8 月初,ReversingLabs 发现了一个恶意供应链活动,研究团队将其称为“VMConnect”。该活动包括发布到 Python 包索引 (PyPI) 开源存储库的两打恶意 Python 包。这些软件包模仿了流行的开源Python工具,包括vConnector ,这是一个用于pyVmomi VMware vSphere绑定的包装模块;eth-tester,用于测试基于以太坊的应用程序的工具集合;以及数据库,这是一种为一系列数据库提供异步支持的工具。

研究团队继续监控 PyPI,现在又发现了另外三个恶意 Python 包,它们被认为是 VMConnect 活动的延续:tablediter、request-plus和requestspro。正如 ReversingLabs 团队早期的 VMConnect 研究一样,该团队无法获取此活动中使用的第 2 阶段恶意软件的副本。然而,对所使用的恶意软件包及其解密的有效负载的分析揭示了与 Labyrinth Chollima 先前活动的链接,Labyrinth Chollima 是朝鲜国家支持的威胁组织 Lazarus Group 的一个分支。

以下是我们对 VMConnect 活动的分析,包括恶意行为者为避免检测而采取的一些步骤。我们回顾了最新一批恶意 Python 软件包与早期 VMConnect 软件包之间的相似之处,并讨论了与朝鲜威胁行为者早期软件供应链活动的可能联系。

讨论

ReversingLabs 近年来观察到,大多数推送恶意开源软件包的恶意行为者都采用某种形式的模仿作为其攻击计划的一部分。这包括所谓的误植攻击,其中恶意软件包的名称和描述与合法开源软件包的名称非常相似。希望忙碌的开发人员在搜索软件包时输入拼写错误,然后安装恶意软件包,而不会仔细观察以发现细微的差异。

其他恶意有效负载伪装成新的开源模块,提供所需的功能,同时隐藏开发人员可能会错过的后门和信息窃取功能等恶意组件。

我们看到所有这些技术都与这组新的恶意 Python 包一起使用。

Tablediter:一个(不太)漂亮的

tablediter (发音为“表编辑器”)Python 包是恶意行为者将其代码推送到合法应用程序的一个很好的示例。我们的研究人员在 8 月中旬发现了这个软件包,因为他们注意到它模仿了Prettytable,这是一种流行的 Python 工具,开发人员用它来以有吸引力的 ASCII 格式打印表格。Prettytable每月的下载量超过 900 万次,这使其成为恶意行为者极具吸引力的目标。

从功能上来说,tablediter与之前在 VMConnect 活动中发现的恶意软件包非常相似。但是,此软件包中引入了一些显着差异,使其比以前的软件包更难检测。最大的区别是安装包时不会执行包内的恶意功能。相反,它是在项目中使用包时触发的。为了实现这一点,负责创建tablediter 的恶意行为者没有通过__init__.py文件执行恶意功能,该文件在将新包导入到项目时自动执行。

相反,恶意代码被添加到名为 add_row 的函数中,该函数是tablediter的一部分tablediter.py文件中定义的类。在开发人员工作站上测试应用程序期间,或者在使用包含恶意tablediter依赖项的已发布软件的用户执行期间,可能会调用该函数。

(至于攻击者为何使用add_row函数来传递恶意代码:查看tablediter模仿的Prettytable文档,发现add_row函数是Prettytable包中最常用的函数,并且第一个代码示例突出显示在解释如何实现Prettytable 的文档中。)

图 1:添加到 tablediter.py 文件内的 add_row 函数的恶意代码

执行时,代码会调用位于 edt 子目录中的文件bounding.py中的方法。然后,调用的方法接收一个参数,该参数表示用于解密包中包含的长十六进制编码字符串内容的 XOR 密钥。

图 2:bounding.py 文件中的解密函数

十六进制编码的字符串解密后,会显示一个模板 URL,该 URL 已修改为使用攻击者的命令和控制 (C2) 服务器的 Internet 地址。具体来说,十六进制编码模板包含 C2 服务器和恶意功能的占位符。负责解码该十六进制代码的代码(图 2)包含真实的 C2 地址,该地址会覆盖十六进制字符串中的占位符值。解码后的十六进制字符串(图 3)包含 C2 域 (ADDR) 以及与 C2 基础设施通信的受感染计算机 ( paperpin3902 ) 的占位符。该值将替换为由__构成的字符串。最后,解密的代码被执行。

研究团队分析表明,该解密代码的功能与我们在 8 月初编写的VMConnect 包中提取的功能几乎相同。正如当时观察到的,该包包含一个包含无限执行循环的 Base64 字符串。当该 Base64 字符串被解码并执行时,它会联系 C2 服务器并尝试使用其他命令下载另一个 Base64 编码的字符串。成功后,该代码将被执行并重复循环,受感染的主机会在预先配置的睡眠期后轮询恶意 C2 服务器以获取新命令。

图 3:解密的有效负载字符串的内容

tablediter执行的代码与 VMConnect 软件包中的恶意软件的主要区别在于,前者使用 XOR 加密和十六进制编码的组合,而不是 VMConnect 使用的 Base64 编码。tablediter软件包还取消了安装时执行功能,这是 PyPI 软件包中观察到的恶意软件最常遇到的执行方法。

几乎可以肯定,在安装 tablediter 软件包时不自动执行恶意软件的决定是攻击者为了避免被依赖于动态分析的传统安全监控工具检测到而做出的努力。等到指定的包被导入并且其函数被受感染的应用程序调用是避免一种常见的基于行为的检测并提高潜在防御者的门槛的一种方法。

研究人员观察到的恶意软件设计元素与之前的研究中发现的类似。例如,SentinelSneak(2022 年 12 月曝光的冒名顶替者 SentinelOne PyPI 软件包)的设计也使得恶意软件等待以编程方式调用恶意函数,然后才被激活。

对于只寻找“常见嫌疑人”的组织来说,这种低调的做法通常足以避免被发现。相比之下,ReversingLabs 软件供应链安全平台能够在静态分析过程中提取广泛的行为指标,使团队能够在恶意软件包导入合法应用程序之前检测到此类威胁。

请求被拒绝:Request-plus 和 requestspro

除了 tablediter 包之外,ReversingLabs 研究人员还发现了另外两个针对超流行 Python 包的恶意包:PyPI 上的 requests HTTP 库。

Requests是一个标准 HTTP 库,每月有数千次下载和超过 230 万个依赖项。我们检测到的恶意软件包使用与合法软件包非常相似的名称:request-plus和requestspro。与tablediter软件包一样,这些软件包的构造也非常谨慎,以避免在安装之前和之后都被检测到。

此活动背后的恶意行为者使用的规避技术包括错字域名和其他冒充手段。例如,攻击者复制了PyPI 上requests包的描述,并将其粘贴到虚假包的描述中,从而更新了文档引用中的包名称。 除此之外,攻击者在其冒名顶替者包中准确地复制了合法请求包中找到的文件,与合法请求包相比,没有添加新文件。 对恶意包所做的唯一修改是在__init__.py中找到的文件,该文件被修改为包含几行代码,负责启动一个线程,该线程执行 cookies.py 文件中的函数。

此外,cookies.py文件被修改为包含多个恶意函数。其中包括收集有关受感染计算机的信息并将其以POST HTTP请求的形式发送到引用 C2 服务器的 URL 的功能。来自服务器的响应是一个令牌,它会以GET HTTP请求的形式发送回同一 C2 服务器上的不同 URL 。

图4:负责与C2服务器通信的代码

受感染主机收到的响应是双重加密(Base64 和 XOR)的 Python 模块,附带执行参数,包括另一个下载 URL。

图 5:负责对接收到的有效负载进行解密的代码

该团队认为该模块在解码后执行,然后下载恶意软件的下一阶段。与 VMConnect 活动早期迭代的情况一样,与活动相关的 C2 服务器默认情况下不提供额外的命令,而是等待合适的目标,这使得评估活动的全部范围变得困难。

与Lazarus有联系吗?

为了更好地了解 VMConnect 活动的起源,ReversingLabs 研究团队分析了作为此扩展 VMConnect 活动的一部分发现的恶意软件样本,目的是将该活动与其他已知的恶意软件活动联系起来。在此过程中,团队发现了指向 Lazarus 组织的线索,该组织是朝鲜高级持续威胁 (APT) 组织,与许多复杂的活动有关。 例如,通过根据最新活动中收集的样本尝试一些威胁狩猎 YARA 规则,我们的研究人员发现了一个包py_QRcode,其中包含builder.py该文件具有与 VMConnect 包中发现的恶意功能非常相似的恶意功能。

图 6 和图 7 突出显示了负责解密有效负载的代码的相似之处,在这两种情况下,该代码都是通过调用子进程 Popen 函数来执行的。  

图 6:负责 VMConnect 包中有效负载解码和执行的代码图 7:负责 py_QRcode 包中有效负载解密和执行的代码

值得注意的相似之处包括:

1、与基于架构的文件路径适配相关的 功能,这在两种情况下都是通过调用platform.system()函数来确定的(请参阅蓝色框)

2、使用包含 B64 编码文本的变量来标识下一级有效负载(请参阅黄色框)

3、负责 B64 解码有效负载并将其写入本地文件的代码(请参阅绿色框)

4、通过调用platform.system根据确定的平台创建进程()具有类似的分支和创建标志(参见红色框)

查看解密的有效负载的内容时会发现更多相似之处(图 8 和图 9)。在这里,可以观察到两个有效负载中几乎相同的功能,这些有效负载定期轮询 C2 服务器以获取指令。在这两种情况下,这都是通过无限循环发生的,轮询之间有 60 秒的睡眠时间。而且,在这两种情况下,接收到的指令都是 Base64 编码的字符串,表示解码后执行的一系列 Python 命令。

图 8:负责从 VMConnect 包中的有效负载中进行 C2 服务器轮询的代码

图 9:负责 C2 服务器轮询 py_QRcode 包中有效负载的代码

进一步调查显示,日本计算机紧急响应小组协调中心(JPCERT/CC)于 2023 年 7 月发布的一份报告中已经描述了所发现的py_QRcode包。JPCERT 报告描述了如何发现针对已安装 Python 和 Node.js 运行时的 Windows、macOS 和 Linux 环境的恶意软件样本。 该报告称,Windows 计算机上这些恶意软件感染的起点是执行上述py_QRcode包。然而,ReversingLabs 研究和 JPCERT/CC 进行的研究都无法找到该包曾经发布到 PyPI 存储库的任何证据。这就留下了恶意软件如何分发给受害者的疑问。

JPCERT 研究发现PythonHTTPBackdoor可能是该活动中下载的第 2 阶段恶意软件样本。在 macOS 环境中,JokerSpy是检测到的第 2 阶段恶意软件。

最后,JPCERT 分析引用了 SentinelOne 发布的研究,该研究讨论了 QRLog — Java 恶意软件,其功能与py_QRcode包中的功能相同。其中包括确定主机设备操作系统的代码,然后对写入临时目录的大型 Base64 字符串进行解码。然后该代码将被执行。值得注意的是:在QRLog和py_QRcode中也发现了相同的www.git-hub[.]me C2 域恶意软件样本。

至于归因,ReversingLabs 无法明确将此活动归因于任何特定的威胁参与者。然而,最初发现恶意QRLog包的研究人员Mauro Eldritch与网络安全公司 Crowdstrike 分享了他的发现。Crowdstrike 的分析师高度确信 该恶意软件是朝鲜国家支持的威胁组织 Lazarus Group 内的一个子组织 Labyrinth Chollima 所为。JPCERT/CC 也做出了类似的归因,将其发现的攻击与 Lazarus 集团的另一家子公司 DangerousPassword 联系起来。

根据这些属性以及 VMConnect 活动中发现的软件包与 JPCERT/CC 发布的研究中描述的活动之间的代码相似性,ReversingLabs 研究团队得出的结论是,这两次攻击背后都是同一威胁行为者,因此,VMConnect 恶意活动可能与朝鲜国家支持的 Lazarus 集团有关。

结论

ReversingLabs 发现了另外三个恶意软件包,其中包含 VMConnect 软件供应链活动的链接:request-plus、requestspro和tablediter。该团队提供的证据表明,该团队于 7 月发现并于 8 月初披露的 VMConnect 恶意软件供应链活动正在进行中。作为其中的一部分,威胁参与者继续使用 Python 包索引 (PyPI) 存储库作为其恶意软件的分发点。这只是针对 PyPI 存储库用户的一系列恶意攻击中的另一起,包括最近与 JumpCloud事件相关的活动。 与之前的软件供应链活动(包括IconBurst)一样,VMConnect 背后的恶意行为者SentinelSneak等人采取了措施来伪装其恶意负载,并使他们发布的软件包看起来值得信赖,尽管存在恶意功能。这些努力包括标准做法,例如对流行开源包的名称进行拼写错误以及挪用包描述和其他元数据来迷惑开发人员。

三个新发现的恶意软件包中使用的代码的深度相似性以及共享的 C2 基础设施也支持了 VMConnect 活动的链接。

在最新的软件包中,恶意行为者还采取措施避免被动态应用程序安全测试 (DAST) 工具检测到。他们通过设计软件包,仅在将其导入并被合法应用程序调用后才执行恶意负载,而不是在安装软件包后立即执行——这是 ReversingLabs 之前在 SentinelSneak 活动中观察到的一种技术。

有关正在进行的 VMConnect 活动的披露提醒人们,组织需要提高其网络防御能力,以应对各种可能的威胁和攻击,包括软件供应链攻击。这要求企业投入所需的精力和资源,在供应链攻击对其业务造成重大损害之前检测和预防供应链攻击。

这意味着要加大培训和宣传活动的投入,以确保开发人员不会陷入误植和其他冒充攻击的境地。它还强调需要工具和流程来确保评估任何开源或专有代码是否存在可疑或恶意指标,包括隐藏(混淆)功能、与第三方基础设施的不明通信等。

妥协指标 (IOC)

命令和控制 (C2) 域和 IP 地址:

packages-api.test
tableditermanaging.pro
45.61.136.133

PyPI 包

转载来源:https://www.reversinglabs.com/blog/vmconnect-supply-chain-campaign-continues

图片来源网络侵权可联系删除

相关文章

Mallox勒索软件新Linux变种现世
伪装成破解程序和商业工具的新型恶意软件正在传播
Orcinius后门新样本分析
Poseidon窃取程序通过Google广告感染Mac用户
大选开始之际,欧盟各政党遭受 DDoS 攻击
微软2024

发布评论