铭说 | 基于Linux平台新型Python挖矿木马的分析 | xxx铭说 | 基于Linux平台新型Python挖矿木马的分析 – xxx
菜单

铭说 | 基于Linux平台新型Python挖矿木马的分析

一月 31, 2024 - FreeBuf

摘要

近期,我们发现了三个较为特别的包含恶意代码的PyPI(Python 包索引)包,这些软件包在初次使用时会在 Linux 设备上部署CoinMiner可执行文件。利用威胁情报比对,可以发现这些IoC与2023年9月初发现的“culturestreak”存在相同的部分。

这三个有害的软件包分别命名为modularseven-1.0、driftme-1.0和catme-1.0。它们都来自同一个被称为“sastra”的作者,他在上传第一个恶意包前不久创建了一个PyPI帐户。

攻击阶段

这些PyPI包都表现出一种常见的攻击方法,因此本文将以driftme-1.0 为例来说明攻击的各个阶段。与早期的“culturestreak”包的方法相呼应,这些包隐藏了其有效负载,通过将恶意代码托管在远程URL上,有效地降低了恶意代码的可检测性。然后,有效负载在各个阶段逐步释放,以执行其恶意活动。恶意活动是由__init__.py文件中的“import”语句触发的:铭说 | 基于Linux平台新型Python挖矿木马的分析processor.py 模块包含恶意负载的第一阶段:通过调用 processing() 函数,对字符串进行解码Y3VybCBodHRwczovL3BhcGljdWxvLm5ldC91bm1pLnNoIHwgYmFzaA==转换为使用curl并从指定URL获取内容的shell 命令。然后,将该内容直接通过管道传递到 Bash shell,该 shell 执行以下脚本:铭说 | 基于Linux平台新型Python挖矿木马的分析查看“unmi.sh”脚本,发现它包含恶意负载的第二阶段:铭说 | 基于Linux平台新型Python挖矿木马的分析利用“unmi.sh”脚本,攻击者将两个关键项目下载到用户的设备上:第一个是“config.json”,这是执行将要安装的程序所需的配置文件。此文件概述了加密货币挖矿设置。具体来说,它决定了挖矿算法,即randomX、挖矿操作的设备资源设置、指定的挖矿“池”以及受益人的钱包账户。值得注意的是,攻击者选择禁用“init-avx2”功能,大概是为了确保与旧设备的兼容性。有效负载的第二个关键组件是 CoinMiner 可执行文件。一旦从远程URL下载可执行文件并将权限改为可执行,攻击者就会使用“nohup”命令在后台执行它。这可确保进程在终端会话之后保持活动状态。最具欺骗性的是,攻击者确保将所有这些修改附加到~/.bashrc 文件中,从而保证每当用户启动新的Bash shell会话时重新激活此恶意活动。

与”culturestreak“的比较

本文中讨论的三个包具有类似于“culturestreak”的 IoC:

  • 用于运行可执行文件的配置文件托管在域“papiculo.net”上。
  • 硬币挖矿可执行文件托管在公共 GitLab上。尽管在其博客中托管恶意可执行文件的帐户 Aldri Terakhir(@aldriterakhir,用户 ID:12350673)在发布新的三个示例集时已被阻止,但同一恶意行为者可能已将该帐户的所有内容迁移到新帐户 Zela Najo(@zelanajo,用户 ID:15638540)。

与“culturestreak”相比,这三个软件包在隐藏其存在和维持其恶意功能方面展示了增强的策略。一个关键的增强功能是引入了一个额外的阶段,其中恶意操作的关键命令存储在远程服务器上的“unmi.sh”文件中。这种策略通过最小化 PyPI 包中的代码来提高逃避安全解决方案检测的几率。它还允许通过简单地禁用托管此“unmi.sh”脚本的服务器来更受控地披露恶意代码。此外,该恶意软件将恶意命令插入到 ~/.bashrc 文件中。这一添加确保了恶意软件在用户设备上的持久性和重新激活,从而有效地延长了其秘密操作的持续时间。这种策略有助于长时间、隐蔽地利用用户的设备,以谋取利益。

结论

从这组特定的软件包中观察到的一个显著趋势是,恶意行为者正在不断改进他们的策略,以隐藏和延长利用过程。本文讨论的一个基本策略是将整个恶意工作流程分解为更小的阶段,并逐步释放它们。对于安全社区来说,检测细粒度的恶意指标的能力变得至关重要。聚铭安全专家在此提醒大家,在企业日常运营过程中需要彻底审查来自未经验证或可疑来源的代码和包并及时拦截处置,注重对潜在威胁的了解和识别。

本文作者:, 转载请注明来自FreeBuf.COM

# 网络安全技术

Notice: Undefined variable: canUpdate in /var/www/html/wordpress/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php on line 51