“聪明的忍者不会去寻找他不完全了解的敌人。”——《忍者神龟》中的斯普林特 作为一名对科幻小说充满热情的技术作家,我在 Sonatype 的工作中最激动人心的部分之一就是我有机会与安全研究团队合作。 自从我们发现 对应于我们所说的 RAT 突变体——利用远程访问木马和信息窃取程序功能的新型恶意软件——我们的安全研究人员有一种挥之不去的似曾相识感。 上个月的一系列 Python 包 这种情况并不少见:他们不断评估来自开源注册表的数百个可疑包,以确定它们是否真的是恶意的。在此过程中,他们会识别包裹之间熟悉的模式,有时,在认识到强烈的相似性后,他们会进行进一步的研究以追踪背后的参与者/活动。 从 2022 年的最后一周到 2023 年初,我们的 AI 系统标记了上传到 PyPI 注册表的可疑包,包括 。我们的安全研究人员查看了它们并确认它们确实是恶意的。经过进一步分析,他们注意到这些软件包添加了一系列在 Python 恶意软件中不常见的功能。 pyrologin 、 easytimestamp 、 discorder 、 discord-dev 、 style.py 和 pythonstyles 在已成为事实上的策略中,不良行为者将有效负载隐藏在 文件中,因此开发人员只需使用简单的 pip 安装即可被感染。在这种情况下,他们会无意中启动一个 PowerShell 脚本,该脚本下载一个 ZIP 文件来安装库,让攻击者控制受害者的鼠标、键盘、截取屏幕截图并创建隐藏的远程连接。最重要的是,这些软件包还会泄露密码、cookie 和加密货币钱包数据等敏感信息,甚至会尝试安装远程访问工具。我们的发现符合 非常相同的包。 setup[.]py Phylum的技术报告 尽管如此,安全研究员 Carlos Fernandez 还是有一种挥之不去的似曾相识感。在我们公开这些软件包后的一周内,他脑海中闪过看到该恶意软件早期版本的记忆。威胁行为者可能一直在随着时间的推移发展他们的恶意软件,但我们需要确定,所以我戴上我的 OSINT 帽子来帮助他看看他的直觉是否有任何道理。 起源故事 回顾我们的数据库,2022 年 9 月 25 日,一个名为 的包被上传到 PyPI 存储库。我们的 AI 将其标记为可疑,我们的安全研究人员确认它包含恶意软件,并且捆绑了另一个名为 的软件包的源代码。这两个库都是由 ,又名 BillyTheGoat,又名 BillyV3(由 loTus04 和 BlueRed 贡献)。这位来自法国的作者(至少这是他在 GitHub 中的位置和通过他的 Discord 频道使用的语言所暗示的)被认为是背后的人 ,我们经常在最近上传的恶意软件中发现的 Python 混淆器,也是 ,一个信息窃取者,自 7 月以来一直活跃在 打开注册表。 pygradient pystyle 比利山羊356 海波龙 W4SP窃取者 持续的供应链攻击 W4SP 窃取程序拥有持久性(每次用户重新启动 PC 时它都会重新激活)、混淆(作者保证它完全无法检测)和隐写术技术来隐藏图像文件中的多态和高度混淆的有效负载。恶意软件通过硬编码的 Discord webhook 地址将所有受害者的 Discord 帐户、信用卡、密码和加密钱包发送回攻击者。对此恶意软件感兴趣的不良行为者通过支付约 20 美元的加密货币购买了它。 最初, 并没有恶意——一个无害的样式和颜色控制台输出包,以增强可读性和用户体验。但根据 Phylum 的研究,一旦它变得流行(该软件包在 PyPI 上仍然活跃并且每月累积超过 40,000 次下载),他们决定在几个版本中添加 W4SP 恶意软件。 pystyle 诸如 之类的开源软件包可以充当潜伏代理数月之久,但稍后会被其作者出于恶意目的而激活。这是一个冒险的举动,因为他们流行的软件包可能会被像我们这样的安全研究人员发现,他们会将其报告为恶意软件包并永久删除。这就是为什么他们经常创建新的包,而不是在其中包含无害库的源代码、添加某种类型的恶意负载并以新名称上传它:一些通用的、听起来温和的、看起来无辜的东西。诸如 类的名称。 pystyle pygradient 在与 Carlos 仔细研究后,我们发现这个 proto-RAT 变异恶意软件缺少 12 月版本的一些功能:尽管它也启动了一个 PowerShell 脚本并泄露了敏感数据,但它没有使用 base64 编码的有效负载或白名单txt 文件以避免自我感染。在某种程度上,它是一种更温和、更不复杂的变体。 但随后我们查看了 11 月初上传的软件包,包括 、 和 ,在深入研究之后,我们发现我们的怀疑得到证实:恶意软件确实在进化。 paintpy devicespoof devicespoofer 追逐恶意软件的模仿者 尽管 BillyTheGoat 自去年 11 月以来就没有在 GitHub 上活跃过,但我们仍在发现基于他的创作或直接从他们那里窃取的恶意软件,主要是由一位显然位于葡萄牙的用户所为 . 泽克特 该用户在 PyPI 中上传了一个名为 的最近删除的包,错误地归功于 BillyTheGoat,看起来像 - 一种通过将其链接到流行的 GitHub 库来提高其新包声誉的技术,从而与其数百个星和分支相关联。 pystilez 开始劫持 Checkmarx公司 这个坏人在一个名为 (以及类似名称的变体)的包中发现了 W4SP 攻击,该包在其恶意代码中包含一个 Discord 服务器链接。链接到经过验证的 Steam 帐户的管理员配置文件和名称“zeeckt”显示为攻击者的 Steam 别名之一。 一直在跟踪 apicolor 还报告说,这个威胁行为者通过复制流行的 GitHub 帐户的配置文件来创建虚假用户以增加合法性。他们的一名受害者决定创造 在迷上他们的虚假个人资料后警告人们注意这次攻击。 检查点 YouTube 视频 一位安全研究人员出于教育目的发布了 zeeckt 的一个有效负载,他收到了 W4SP 窃取程序的合著者的有趣回复: 多么讽刺你的偷窃者被偷了。 同一位作者,显然是一名 17 岁的 Python 开发人员,在他的 GitHub 个人资料中的 README 文件中重申了他的挫败感: 我们不知道 zeeckt 从其他不良行为者那里窃取了哪些恶意代码,但可以肯定的是:这个名字继续出现在开源注册表的恶意软件活动中。 偷偷摸摸的变体蚕食你的加密财富 卡洛斯最近又发现了四个包裹 : , 和 。经过进一步调查,他将它们标记为恶意,并向 PyPI 报告以将其删除。最快的案例从发布到删除大约需要 20 分钟。 泽克特 forenitq forenith , forenity forenitz 查看 中的 Carlos 发现了以下第一阶段 payload: forenitq setup[.]py , 攻击者创建三个临时文件,使用“开始”命令从特定 URL 下载和执行 Windows 二进制文件。尽管 slug 和 暗示有恶意,但我们无法在不深入了解的情况下确认该假设。 /rat /clip 在撰写本文时,位于 的页面仍处于活动状态,它只显示指向已过期或私密的 Discord 邀请的链接。 hxxp://20[.]226[.]18[.]203 卡洛斯注意到这个包裹假装很受欢迎 包,使用他们的元数据进行可能的 StarJacking 尝试。 色拉玛 在对 RAT 文件进行去混淆处理后,他发现了一行加载了一个可能的剪贴板劫持者,但它的细节是 base64 编码的: 解码后,我们得到一段 Python 代码,旨在劫持受害者的剪贴板,以用攻击者的地址替换预期的加密货币钱包地址: 它寻找指定的模式,如 (bc1)、 (0x)、门罗币 (4) 和 (L 或 M 或 3),当找到模式时,它会将预期地址替换为攻击者的加密货币钱包地址. 比特币 以太坊 莱特币 该代码使用 用于复制和粘贴剪贴板数据的库。如果尚未安装,它将安装库,然后将加密货币钱包地址复制到剪贴板。然后将代码设置为连续循环以监视剪贴板中的钱包地址模式。 剪辑 此外,我们还发现了这个 RAT 突变体用来逃避检测的更多技术:将第一阶段有效载荷添加到文件 而不是 和第二阶段多态有效载荷,它会在每次运行时发生变化二进制文件。 forenitq/ansi[.]py setup[.]py 攻击者还添加了一个新的命令和控件以及一个非常完整的帮助菜单——这次是 se fala português: 如您所见,恶意行为者渴望窃取您的加密货币资金和系统凭据,以进一步渗透您的基础设施。他们的 RAT 恶意软件不断变异,变得更加隐蔽并对开发人员造成破坏。因此,如果您现在没有保护您的软件供应链,请考虑尽快采取行动。 IOC(妥协指标) hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP hxxp://20[.]226[.]18[.]203/clip hxxp://20[.]226[.]18[.]203/rat