WhiteSnake窃取器通过恶意PyPI软件包感染Windows用户

2024年 1月 30日 65.8k 0

受影响平台:可以安装 PyPI 软件包的所有平台

受影响方:安装了这些恶意软件包的任何个人或机构

影响:凭证、敏感信息等泄露

严重级别:高

Python Package Index (PyPI) 是 Python 社区开发的一个开放的软件包存储库,旨在帮助人们快速开发或更新应用程序。虽然上传到 PyPI 的大多数软件包都是由希望支持 Python 社区的专门人员发布的,但威胁行为者也会定期发布受恶意软件感染的软件包。 FortiGuard 实验室团队使用专有的、人工智能驱动的 OSS 恶意软件检测系统来寻找和监控这些威胁。最近,我们发现一名 PyPI 恶意软件作者(ID 为“WS”)正在谨慎地将恶意包上传到 PyPI。我们现在估计,仅下面描述的软件包中就有可能有超过 2000 名“WS”受害者。

已识别的软件包(nigpal、figflix、telerer、seGMM、fbdebug、sGMM、myGens、NewGends 和 TestLibs111)表现出的攻击方法与四个月前发表的Checkmarx博客文章中概述的方法类似。这种相似性表明可能与 2023 年初的恶意活动有关。值得注意的是,这些软件包在其 setup.py 文件中包含 PE 或其他 Python 脚本的 Base64 编码源代码。根据受害者设备的操作系统,最终的恶意有效负载会在安装这些 Python 包时被删除并执行。

下面详细介绍了我们对这位信息窃取作者的调查结果的简要时间表。

图1:作者“WS”发布的恶意PyPI包的简要时间线

2023 年 12 月之前发布的软件包与之前博客文章中讨论的软件包非常相似。具体来说,如果受害者的设备在 Windows 上运行,他们就会部署 Whitesnake PE 恶意软件,或者他们可以提供旨在从 Linux 设备窃取信息的 Python 脚本。一个微妙的区别在于 Python 脚本现在使用新方法来传输被盗数据。这些新的恶意软件变体不依赖单个固定 URL,而是使用一系列 IP 地址作为目标,即使一台服务器发生故障,也可能确保成功的数据传输。鉴于这些新软件包与以前的软件包非常相似,我们将重点分析这些最新变体的有效负载。

与早期针对 Windows 和 Linux 用户的攻击不同,最近的这组软件包主要针对 Windows 用户。虽然每个包的可执行有效负载彼此略有不同,但它们始终致力于从受害者那里窃取敏感信息。

让我们简单看一下其中的一些有效负载。

sGMM 包的 PE 有效负载

与之前使用 .NET 开发的 Whitesnake PE 有效负载不同,此示例表现为使用 PyInstaller 工具制作的 Python 编译的可执行文件。

在提取后仔细检查其内容后,主脚本文件显示为“main.pyc”,并伴有“addresses.py”对应文件。仅仅这个对应者的存在就会引起怀疑。

图 2:提取的文件

反编译“main.pyc”后,我们可以看到代码有些不完整,凸显了其秘密性质。危险信号包括将自身复制到 Windows 启动文件夹以在启动时自动运行。该脚本还会探测逻辑驱动器,尝试将自身复制到不可移动驱动器中。值得注意的是,它通过监视正在运行的实例的计数来采用谨慎的策略,确保在计数超过 2 时提供不显眼的配置文件并提供退出策略。

图3:反编译后的main.pyc

最后,该脚本检索剪贴板内容并将其与预定义的加密货币地址模式进行比较。发现匹配模式会提示脚本使用来自“addresses.py”的相应地址覆盖剪贴板。这可能会欺骗毫无戒心的受害者,将加密货币交易等内容引导至意想不到的目的地。

图 4:addresses.py

myGens 和 NewGends 包的 PE 有效负载

此有效负载是加密的 .NET 可执行文件。安装在用户设备上后,有效负载会启动一个不可见的“cmd.exe”窗口。然后,它通过此窗口使用“powershell.exe”将自身添加到 Windows Defender 的排除列表中,以绕过内置安全响应:

图 5:将自身添加到 Windows Defender 排除列表

然后,它将自身复制到 Windows 应用程序文件夹,并创建一个计划任务,以便在设备被感染后每小时运行一次:

%LOCALAPPDATA%PackagesMicrosoft.Windows.Accounts.ControlRCP_ruzxpnew4af
HKLMSOFTWAREMicrosoftWindows NTCurrentVersionScheduleTaskCacheTasks{070B9798-7C59-4A69-BB25-F353628999B0}Path|MicrosoftWindowsControlRCP

图6:确认复制自身并安排任务

每次任务运行时,它都会与恶意IP建立连接:194[.]36[.]177[.]30。它使用“socket.io”将服务器连接到客户端。这样,如果连接丢失,它会自动尝试重新连接。

图7:“socket.io”和IP的解密

该有效负载的核心尝试收集用户信息,例如用户的 IP 地址、主机凭据等:

图 8:用户信息抓取器

以下字符串提供了更有说服力的证据来证明该有效负载的信息窃取功能。他们透露,有效负载不仅捕获鼠标和键盘交互,还获取钱包和浏览器数据并将其传输到远程服务器。

图 9:窃取者的属性列表

图 10:显示钱包被抢的代码片段

图 11:显示浏览器窃取的函数

TestLibs111 包的 PE 负载

该示例运行后,我们可以观察到数据被发送到可疑的 IP 地址 (194[.]36[.]177[.]30),如图 12 所示。乍一看,我们可能会将这些数据视为不显眼的字符串。然而,进一步调查显示这是一个被多层加密所笼罩的 .zip 文件。这引起了对其行为的严重担忧。

图 12:发送到 IP 地址 194[.]36[.]177[.]30 的流量

解密后,我们看到“PK”作为初始字节,表示 .zip 文件格式。

图 13:.zip 文件的十六进制转储

调试此示例后,有几个指标表明它可能对哪些敏感内容感兴趣。以下是我们在分析过程中发现的许多有趣字符串中的一些。

图 14:在汇编代码中找到的字符串

其中一些字符串可能表明来自不同服务的信息窃取,例如浏览器、应用程序和加密货币服务。我们发现的一些例子包括 Chrome、Discord、Filezilla 和 Coinbase。

当我们解压.zip文件时,我们可以看到一些收集到的内容。

图 15:zip 文件内容

然后,作者将这些敏感信息泄露到服务器上。

结论

该博客展示了单个恶意软件作者随着时间的推移将大量信息窃取恶意软件包传播到 PyPI 库中的能力,每个恶意软件包都具有不同的复杂性负载。我们敦促用户在使用开源软件包时要格外小心,检查是否存在可能使目标设备容易遭受信息盗窃的恶意内容或有效负载。这位特定恶意软件作者的叙述已经展开了几个月,并展示了已经造成的巨大破坏。信息窃取恶意软件是一个日益相关和紧迫的主题。防范这些顽固的对手需要采取战略性和前瞻性的方法来加强防御。

Fortinet Protections

FortiGuard AntiVirus检测到本报告中标识的恶意文件为

nigpal-0.1 setup.py: PYTHON/Agent.c51b!tr
nigpal payload: (PE) MSIL/WhiteSnake.C!tr
nigpal payload: (Python) PYTHON/Agent.7f73!tr
figflix-0.1 setup.py: PYTHON/Agent.c51b!tr
figflix-0.2 setup.py: PYTHON/Agent.c51b!tr
figflix payload: (PE) MSIL/WhiteSnake.C!tr
figflix payload: (Python) PYTHON/Agent.7f73!tr
telerer-2.0 setup.py: PYTHON/Agent.c51b!tr
telerer-2.1 setup.py: PYTHON/Agent.c51b!tr
telerer-2.2 setup.py: PYTHON/Agent.c51b!tr
telerer-2.3 setup.py: PYTHON/Agent.c51b!tr
telerer payload: W32/Kryptik.HTVT!tr
seGMM-1.3.1 setup.py: PYTHON/Agent.c51b!tr
seGMM-3.1.1 setup.py: PYTHON/Agent.c51b!tr
seGMM payload: W32/Kryptik.HTVT!tr
fbdebug-0.1 setup.py: PYTHON/Agent.c51b!tr
fbdebug payload (PE): MSIL/WhiteSnake.C!tr
fbdebug payload (Python): PYTHON/Agent.7f73!tr
sGMM-1.3.2 setup.py: PYTHON/Agent.c51b!tr
sGMM payload: W32/ClipBanker.DE!tr
myGens-1.3 setup.py: PYTHON/Agent.c51b!tr
myGens-1.3 payload: MSIL/Agent.ERW!tr.spy
NewGends-1.3 setup.py: PYTHON/Agent.c51b!tr
NewGends-1.3 payload: MSIL/Agent.ERW!tr.spy
TestLibs111-1.4 setup.py: PYTHON/Agent.c51b!tr
TestLibs111-1.5 setup.py: PYTHON/Agent.c51b!tr
TestLibs111-1.7 setup.py: PYTHON/Agent.c51b!tr
TestLibs111 payload: W32/Agent.ORR!tr.pws

FortiGuard AntiVirus 服务受 FortiGate、FortiMail、FortiClient 和 FortiEDR 支持。运行最新防病毒更新的客户受到保护。

FortiGuard Web 过滤服务可检测并阻止本报告中引用的恶意下载 URL。

FortiDevSec SCA扫描器可检测恶意软件包,包括本报告中引用的那些可能在测试阶段作为用户项目中的依赖项运行的软件包,并防止这些依赖项被引入到用户的产品中。

如果您认为这些或任何其他网络安全威胁已影响您的组织,请联系我们的全球 FortiGuard 事件响应团队。

国际奥委会

参考链接:  https://www.fortinet.com/blog/threat-research/info-stealing-packages-hidden-in-pypi

图片来源网络目标可联系删除

相关文章

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

发布评论