超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

admin 2024年4月12日12:38:25评论7 views字数 5475阅读18分15秒阅读模式

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

最近发现了一个针对软件供应链的攻击活动,有证据表明成功利用了多个受害者。其中包括 Top.gg GitHub 组织(一个拥有超过 170 名用户的社区)和几个个人开发人员。威胁参与者在这次攻击中使用了多个 TTP,包括通过被盗的浏览器 cookie 接管帐户、使用经过验证的提交提供恶意代码、设置自定义 Python 镜像以及将恶意包发布到 PyPi 注册表。此报告将涵盖攻击和攻击者使用的技术。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

要点

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • 攻击者通过将虚假 Python 基础架构上的恶意依赖项链接到 GitHub 上的热门项目和合法的 Python 包来分发该依赖项。

  • 伪装成流行的“colorama”包的恶意依赖项包含隐藏的恶意软件,旨在从受感染的系统中窃取敏感数据。

  • 攻击者劫持了 GitHub 帐户,包括一个属于 top.gg 贡献者的帐户,使用它进行恶意提交并将恶意软件传播到拥有超过 170K 成员的社区。

  • 该恶意软件采用多阶段执行过程,从多个外部源获取和执行混淆代码,使用加密、编码、压缩和误导性字符等技术来逃避检测。

  • 该恶意软件针对各种应用程序,例如 Web 浏览器、社交媒体平台、电子邮件服务和消息传递应用程序,收集敏感信息,包括登录凭据、会话令牌和个人数据。

  • 被盗数据被泄露到攻击者的服务器,并通过 Windows 注册表修改建立持久性。

奇怪的消息,被黑了

“我今天在用我的笔记本电脑,只是经常在我的命令行上弄乱 python 和其他东西,直到我在命令行上看到一条奇怪的消息,说 python 上的 colorama 有问题,我不太在意,因为我习惯了这些东西所以我只是跳过了它,几分钟后我收到了相同的错误消息,但在我使用的不同脚本中。当我看到这个的那一刻,我就知道发生了什么,我被黑了

这个令人不寒而栗的说法来自安全研究员穆罕默德·迪夫(Mohammed Dief)最近的一篇博客文章,他在克隆存储库“maleduque/Valorant-Checker”时成为复杂恶意软件攻击的受害者。

Mohammed 的故事只是这种恶意软件活动深远影响的一个例子。该活动背后的攻击者采用了一种狡猾的策略,通过恶意的 GitHub 存储库传播恶意软件。

假 Python 镜像

攻击基础设施包括一个网站,该网站似乎是 Python 包镜像,并在域“files[.]pypihosted[.]组织“。

这个域名选择是官方 Python 镜像“files.pythonhosted.org”的一个聪明的错别字,因为后者是 PyPi 包的官方工件文件通常存储的地方。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

在攻击者的足迹中,我们看到他们利用了 pip(Python 的包管理器)中的一个功能,您可以在其中指定一个 URL 来获取您的包依赖项并使用他们的假 Python 镜像下载包。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

Requirement.txt文件,假镜像 URL 与合法 URL

托管有毒的“colorama”

威胁行为者采用了 Colorama(一种非常受欢迎的工具,每月下载量为 150+ 百万),复制它并插入恶意代码。然后,他们使用空格填充将有害有效载荷隐藏在 Colorama 中,并将这个修改后的版本托管在他们的错别字域假镜像上。这种策略使得用肉眼识别包裹的有害性质变得更具挑战性,因为它最初似乎是一种合法的依赖关系。

GitHub 帐户接管

攻击者的范围超出了通过自己的帐户创建恶意存储库的范围。他们设法劫持了声誉很高的 GitHub 帐户,并使用这些帐户下的资源来提交恶意提交。

其中一个受害者是 GitHub 帐户编辑语法,他也是 Top.gg GitHub 组织的维护者,并且对 Top.gg 的 git 存储库具有写入权限。

通过控制此受信任帐户,攻击者使用窃取的 editor-syntax 的 GitHub 身份对 top-gg/python-sdk 存储库进行了恶意提交。他们在requirements.txt中添加了从他们的假 Python 镜像中下载有毒版本的 colorama 的说明。

他们还使用该帐户为多个恶意 GitHub 存储库加星标,以提高其可见性和可信度。

通过被盗的 Cookie 接管帐户

GitHub 帐户的“editor-syntax”很可能是通过被盗的 cookie 劫持的。攻击者获得了对帐户会话 cookie 的访问权限,允许他们绕过身份验证并使用 GitHub UI 执行恶意活动。这种帐户接管方法尤其令人担忧,因为它不需要攻击者知道帐户的密码。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

“兄弟什么”

Top.gg 社区(拥有超过 170K 成员)也是这次攻击的受害者。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

2024 年 3 月 3 日,用户在社区的 Discord 聊天中提醒“编辑语法”有关源自其帐户的恶意活动。至少可以说,“editor-syntax”非常震惊,因为他意识到通过他的 GitHub 帐户发生了什么。很明显,该恶意软件已经危害了多个人,凸显了攻击的规模和影响。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

有趣的是,攻击者的 Typosquatting 技术非常有说服力,以至于即使是 GitHub 上的用户也成为它的受害者,而没有意识到他们正在受到攻击。当恶意域“piphosted[.]org“,然后,用户在其中一个恶意存储库上打开了一个问题,抱怨它,没有意识到它一直是恶意负载的主机。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

大海捞针

为了进一步隐藏其恶意意图,攻击者在对许多恶意存储库进行更改时采用了一种策略方法。他们将同时提交多个文件,包括包含恶意链接的需求文件以及其他合法文件。这一经过计算的举动旨在最大限度地减少检测的机会,因为恶意链接会与合法依赖项混合在一起,从而降低用户在粗略审查提交的更改时发现异常的可能性。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

攻击者在提交多个文件时隐藏虚假镜像 URL 的示例。

深入了解恶意程序包

除了通过恶意 GitHub 存储库传播恶意软件外,攻击者还利用名为“yocolor”的恶意 Python 包进一步分发包含恶意软件的“colorama”包。他们采用了相同的拼写错误技术,将恶意包托管在域“files[.]pypihosted[.]org“,并使用与合法的”colorama“包相同的名称。

通过操纵包安装过程并利用用户对 Python 包生态系统的信任,攻击者确保只要在项目要求中指定恶意依赖项,就会安装恶意的“colorama”包。这种策略允许攻击者绕过怀疑并渗透到依赖 Python 打包系统完整性的毫无戒心的开发人员的系统中。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

第 1 阶段

第一阶段是未被怀疑的用户下载包含恶意依赖项的恶意存储库或包 - 来自拼写错误域的“colorama”,“files[.]pypihosted.org“。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

恶意代码在 ycolor 包中的外观示例

第 2 阶段

恶意“colorama”程序包包含与合法程序包相同的代码,但其他恶意代码的一小段除外。最初,此代码位于文件“colorama/tests/__init__.py”中,但攻击者后来将其移动到“colorama/init.py”,可能是为了确保更可靠地执行恶意代码。此代码为攻击的后续阶段奠定了基础。

攻击者采用了一种巧妙的技术来隐藏代码中的恶意负载。他们使用大量空格将恶意代码推离屏幕,要求检查包的人员在发现隐藏的恶意内容之前水平滚动很长时间。此技术旨在使恶意代码在快速查看包的源文件时不那么明显。

此代码从“hxxps[:]//pypihosted[.] 获取并执行另一段 Python 代码。org/version“,它安装必要的库并使用”fernet“库解密硬编码数据。然后,解密的代码会搜索有效的 Python 解释器,并执行保存在临时文件中的另一个混淆代码片段。

第 3 阶段

恶意软件进一步发展,从另一个外部链接获取额外的混淆 Python 代码:hxxp[:]//162[.]248[.]100[.]217/inj,并使用“exec”执行它。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

第 4 阶段

经过分析,很明显,攻击者已经考虑混淆了他们的代码。使用中文和日文字符串、zlib 压缩和误导性变量名称等技术只是用于使代码分析和理解复杂化的几种技术。

简化的代码会检查受感染主机的操作系统,并选择一个随机文件夹和文件名来托管最终的恶意 Python 代码,该代码从“hxxp[:]//162[.]248[.]100.217[:]80/克。

恶意软件还通过修改 Windows 注册表以创建新的运行密钥来采用持久性机制,从而确保每次重新启动系统时都执行恶意 Python 代码。这允许恶意软件即使在重新启动后也能在受感染的系统上保持其存在。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

第 5 阶段 — 不让任何一个人掉队

从远程服务器检索到的恶意软件的最后阶段揭示了其数据窃取能力的真实程度。它针对各种流行的软件应用程序并窃取敏感信息,其中一些包括:

浏览器数据:该恶意软件针对各种 Web 浏览器,包括 Opera、Chrome、Brave、Vivaldi、Yandex 和 Edge。它搜索与每个浏览器关联的特定目录,并试图窃取敏感数据,例如 cookie、自动填充信息、浏览历史记录、书签、信用卡和登录凭据。

Discord 数据:该代码通过搜索与 Discord 相关的目录和文件专门针对 Discord。它试图找到和解密 Discord 令牌,这些令牌可用于未经授权访问受害者的 Discord 帐户。

加密货币钱包:该恶意软件包括旨在从受害者系统中窃取的加密货币钱包列表。它搜索与每个钱包关联的特定目录,并尝试窃取与钱包相关的文件。然后,被盗的钱包数据被压缩成ZIP文件并上传到攻击者的服务器。

Telegram 会话:该恶意软件还试图窃取 Telegram 会话数据。它搜索与 Telegram 相关的目录和文件,旨在捕获受害者的会话信息。通过访问 Telegram 会话,攻击者可能会未经授权访问受害者的 Telegram 帐户和通信。

计算机文件:该恶意软件包括一个文件窃取程序组件,该组件会搜索名称或扩展名中包含特定关键字的文件。它面向桌面、下载、文档和最近使用的文件等目录。

Instagram 数据:恶意软件试图通过利用 Instagram 会话令牌从受害者的 Instagram 个人资料中窃取敏感信息。该恶意软件使用被盗的会话令牌向 Instagram API 发送请求,以检索各种帐户详细信息。

对最终有效载荷的进一步分析显示,该恶意软件还包括一个键盘记录组件。它捕获受害者的击键并将其保存到文件中,然后将其上传到攻击者的服务器。此功能允许攻击者监视和记录受害者键入的输入,从而可能暴露敏感信息,例如密码、个人信息和财务详细信息。

被盗数据使用各种技术泄露到攻击者的服务器。该代码包括将文件上传到匿名文件共享服务(如 GoFile 和 Anonfiles)的函数。它还使用 HTTP 请求将被盗信息发送到攻击者的服务器,以及硬件 ID 或 IP 地址等唯一标识符以跟踪受害者。

结论

该活动是恶意行为者通过 PyPI 和 GitHub 等受信任平台分发恶意软件的复杂策略的一个典型例子。

此事件凸显了在安装软件包和存储库时保持警惕的重要性,即使是从受信任的来源安装。彻底审查依赖项、监控可疑网络活动并保持强大的安全实践以降低成为此类攻击受害者的风险至关重要。

随着网络安全社区不断发现和分析这些威胁,协作和信息共享在与软件供应链中的恶意行为者的持续斗争中仍然至关重要。

我们向 Cloudflare 报告了被滥用的域名,这些域名已被删除。

时间线

  • 2022年11月:Pypi 用户“felpes”向 Python 包索引 (PyPI) 添加了三个包,其中包含各种形式的恶意代码。

  • 2024 年 2 月 1 日:域 pypihosted[.]org 已由攻击者注册。

  • 2024年3月4日:top.gg 贡献者的 GitHub 帐户遭到入侵,攻击者利用该帐户将恶意代码提交到组织的存储库。

  • 2024年3月13日:攻击者注册了域名 pythanhosted.org,进一步扩展了他们的域名抢注基础设施。

  • 2024 年 3 月 5 日:“felpes”在 PyPI 上发布了恶意包“yocolor”,充当恶意软件的传递机制。

超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

ioc

  • hxxps[:]//文件[.]pythanhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.5.tar.gz

  • hxxps[:]//文件[.]pypihosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz

  • hxxps://files[.]pypihosted[.]org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.3.tar.gz

  • 162[.]248.101.215

  • pypihosted.org/version

  • 162[.]248.100.217

  • 162.248.100.117

  • 0C1873196DBD88280F4D5CF409B7B53674B3ED85F8A1A28ECE9CAF2F98A71207

  • 35AC61C83B85F6DDCF8EC8747F44400399CE3A9986D355834B68630270E669FB

  • C53B93BE72E700F7E0C8D5333ACD68F9DC5505FB5B71773CA9A8668B98A17BA8

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • windows

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • windows()

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • USB()

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • ()

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • ios

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • windbg

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • ()

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响超过 170K 用户受到使用虚假 Python 基础设施的攻击影响超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • 超过 170K 用户受到使用虚假 Python 基础设施的攻击影响

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月12日12:38:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   超过 170K 用户受到使用虚假 Python 基础设施的攻击影响http://cn-sec.com/archives/2649272.html

发表评论

匿名网友 填写信息