超过 17 万用户受到使用假 Python 基础设施的攻击影响 | xxx超过 17 万用户受到使用假 Python 基础设施的攻击影响 – xxx
菜单

超过 17 万用户受到使用假 Python 基础设施的攻击影响

三月 26, 2024 - 安全维基


超过 17 万用户受到使用假 Python 基础设施的攻击影响Checkmarx Research团队近期发现了一场针对软件供应链的攻击活动,有证据表明多个受害者已被成功利用。这些受害者包括Top.gg、GitHub组织(一个拥有超过170k用户的社区)以及几名独立开发者。威胁行为者在此次攻击中使用了多种战术、技术和程序(TTPs),包括通过盗取浏览器cookie进行账户接管、提交经过验证的恶意代码、设置自定义Python镜像以及向PyPi注册表发布恶意包。本博客将介绍这次攻击及其所使用的技术手段。

关键点

  • 攻击者结合多种战术、技术和程序(TTPs)发起了一场悄无声息的软件供应链攻击,窃取了受害者的敏感信息。
  • 威胁行为者创建了多个带有诱人描述的恶意开源工具,以诱骗受害者,这些受害者很可能是通过搜索引擎找到这些工具的。
  • 一名攻击者分发了一个托管在假冒Python基础设施上的恶意依赖项,并将其与GitHub上流行的项目和合法的Python包关联起来。威胁行为者接管了GitHub账户,发布了恶意Python包,并使用了社交工程手段。
  • 这个多阶段且具有规避性的恶意负载会收集密码、凭据以及从感染系统中提取出的更多有价值数据,并将它们泄露到攻击者的基础设施中。
  • 在这次攻击中,威胁行为者部署了一个假冒的Python包镜像站,并成功地用来部署流行软件包“colorama”的一个有毒副本。
  • 受害者中还包括一位top.gg的贡献者,其代码仓库被此次攻击影响到了top.gg社区(成员超过170,000人)。

我刚刚被黑客攻击了

“今天我在使用我的笔记本电脑,像平常一样在命令行中折腾Python和其他东西,直到我看到一个奇怪的消息说我的Python中的colorama有问题,我没有太在意,因为我对这些东西已经习以为常了,所以我就直接跳过了。几分钟后,我在使用的另一个脚本中收到了同样的错误消息。当我看到这个时,我知道发生了什么事,我被黑客攻击了。” 这个令人不寒而栗的描述来自最近一篇博客文章的作者Mohamed Dief之口。他是一名安全研究员,在克隆代码库”maleduque/Valorant-Checker”时成为了一场复杂恶意软件攻击的受害者。

Mohamed的故事只是这场恶意软件活动影响范围的一个例子。这场活动的攻击者采用了一种狡猾的策略通过GitHub上的恶意代码库传播恶意软件。

假冒Python镜像

这次攻击的基础架构包括了一个看起来像是Python包镜像的网站,并在域名”files[.]pypihosted[.]org”下注册。

这个域名的选择是对官方Python镜像”files.pythonhosted.org”的一个巧妙地混淆拼写行为(Typosquat),因为后者通常是PyPi包官方工件文件存储的地方。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

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

超过 17 万用户受到使用假 Python 基础设施的攻击影响

托管恶意“colorama” 

威胁行为者获取了Colorama(一个非常受欢迎的工具,每月下载量超过1.5亿次),复制了它,并插入了恶意代码。然后,他们使用空格填充在Colorama内隐藏有害的有效载荷,并在其伪造的域名假镜像上托管了这个修改过的版本。这种策略使得用肉眼识别包的有害性质变得更加困难,因为它最初看起来像是合法的依赖项。#GitHub账户接管 攻击者的范围不仅限于通过自己的账户创建恶意仓库。他们设法劫持了具有高声誉的GitHub账户,并使用这些账户下的资源进行恶意提交。其中一个受害者是GitHub账户editor-syntax,他也是Top.gg GitHub组织的维护者之一,并且有权限写入Top.gg的git仓库。通过控制这个受信任的账户,攻击者使用盗用的GitHub身份editor-syntax向top-gg/python-sdk仓库进行了一次恶意提交。他们在requirements.txt中添加指示从他们的假Python镜像下载被污染的colorama版本。他们还利用该帐户将多个恶意GitHub仓库加星以提高其可见性和可信度。#通过被盗Cookie接管账户 很可能是通过被盗cookie接管了“editor-syntax”的GitHub帐户。攻击者获得了帐户会话cookie的访问权限,使他们能够绕过身份验证并使用GitHub UI执行恶意活动。这种帐户接管方法特别令人担忧,因为它不需要攻击者知道帐户密码。超过 17 万用户受到使用假 Python 基础设施的攻击影响

bro 发生什么事了(默默打了一套闪电五连鞭) 

拥有超过170K名成员的Top.gg社区也是这次攻击的受害者。超过 17 万用户受到使用假 Python 基础设施的攻击影响2024年3月3日,用户在社区的Discord聊天中提醒“editor-syntax”他的账户发起的恶意活动。”editor-syntax”至少可以说非常震惊,当他意识到通过他的GitHub账户发生了什么事情时。很明显,恶意软件已经危害了多个人,突显出攻击的规模和影响。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

有趣的是,攻击者的域名抢占技术非常具有说服力,以至于一位GitHub用户在不知不觉中成为了受害者。当恶意域名“piphosted[.]org”被关闭后,该用户在一个恶意仓库中提交了一个issue,抱怨此事,却没有意识到自己已经成为了恶意负载的宿主。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

大海捞针 

为了进一步隐藏其恶意意图,攻击者在修改许多恶意代码库时采用了一种战略性的方法。他们会同时提交多个文件,包括包含恶意链接的需求文件和其他合法文件。这种精心计算的举动旨在降低被发现的机会,因为恶意链接会与合法依赖项混合在一起,在用户粗略审查提交的更改时减少了发现异常的可能性。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

深入剖析恶意软件包 

除了通过恶意的GitHub仓库传播恶意软件之外,攻击者还利用了一个名为“yocolor”的恶意Python软件包来进一步分发包含恶意软件的“colorama”软件包。他们采用了相同的 typosquatting技巧,将恶意软件包托管在域名“files[.]pypihosted[.]org”上,并使用与合法的“colorama”软件包相同的名称。通过操纵软件包安装过程并利用用户对Python生态系统的信任,攻击者确保了每当项目的要求中指定了恶意依赖项时,就会安装恶意的“colorama”软件包。这种策略使攻击者能够绕过怀疑并渗透到依赖于Python打包系统完整性的不知情开发者的系统中。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

第一阶段 

在第一阶段,毫无戒心的用户会从“files[.]pypihosted.org”这个恶意域名下载包含恶意依赖项“colorama”的恶意仓库或软件包。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

第二阶段

恶意的“colorama”软件包包含与合法软件包相同的代码,另外还有一小段附加的恶意代码。最初,这段代码位于文件“colorama/tests/init.py”中,但攻击者后来将其移动到“colorama/init.py”,可能是为了确保恶意代码更可靠地执行。此代码为攻击的后续阶段奠定了基础。攻击者采用了一种巧妙的技术来隐藏恶意负载在代码中。他们使用大量空白字符将恶意代码推到屏幕外,要求检查该软件包的人需要水平滚动屏幕很长一段时间才能发现隐藏的恶意内容。这种技术旨在使快速审查软件包源文件时不易注意到恶意代码。此代码从”hxxps[:]//pypihosted[.]org/version,”获取并执行另一段Python代码,该代码安装必要的库,并使用“fernet”库解密硬编码的数据。然后解密后的代码搜索有效的Python解释器,并在临时文件中保存另一个混淆的代码片段并执行它。 

第三阶段 

恶意软件进一步发展,从另一个外部链接 hxxp://162.248.100.217/inj 获取更多混淆的 Python 代码,并使用 “exec” 执行它。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

第四阶段 

经过分析,很明显攻击者已经考虑了如何混淆代码。例如使用中文和日文字符字符串、zlib压缩以及误导性的变量名等技术,这些都是为了增加代码分析和理解的复杂性。简化后的代码会检查受感染主机的操作系统,并选择一个随机文件夹和文件名来存放最终的恶意Python代码,该代码从”hxxp[:]//162[.]248[.]100.217[:]80/grb”检索。恶意软件还采用了持久化机制,通过修改Windows注册表创建一个新的运行键,以确保每次系统重启时都会执行恶意Python代码。这使得恶意软件即使在系统重启后也能保持在受感染系统中的存在。

超过 17 万用户受到使用假 Python 基础设施的攻击影响

第五阶段 – 吃干抹净 

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

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

Discord数据:代码通过搜索与Discord相关的目录和文件,特别针对Discord。它试图定位并解密可用于未经授权访问受害者Discord帐户的Discord令牌。 

加密货币钱包:恶意软件包括一个列表,列出了它旨在从受害者系统中窃取的加密货币钱包。它搜索与每个钱包相关的特定目录,并尝试窃取与钱包有关的文件。然后将被盗的钱包数据压缩成ZIP文件并上传到攻击者的服务器。Telegram会话:恶意软件还试图窃取Telegram会话数据。它搜索与Telegram相关的目录和文件,旨在捕获受害者的会话信息。通过访问Telegram会话,攻击者可能会潜在地获得未经授权访问受害者的Telegram帐户和通信。 

计算机文件:恶意软件包括一个文件窃取组件,该组件搜索包含特定关键字在其名称或扩展名中的文件 

结论 

本次攻击是恶意行为者通过 PyPI 和 GitHub 等可信平台分发恶意软件的复杂策略的一个典型例子。此事件凸显了即使来自可信来源,安装包和代码库时也应保持警惕的重要性。彻底审查依赖关系、监控可疑网络活动以及保持强大的安全实践对于减轻受到此类攻击的风险至关重要。随着网络安全社区不断揭示和分析这些威胁,协作和信息共享在与软件供应链中的恶意行为者持续战斗中仍然至关重要。我们将被滥用的域名报告给 Cloudflare,此后这些域名已被关闭。作为 Checkmarx 供应链安全解决方案的一部分,我们的研究团队不断监控开源软件生态系统中的可疑活动。我们跟踪并标记可能表明存在不当行为的“信号”,并及时通知我们的客户以帮助保护他们。共同努力维护开源生态系统的安全。

时间线 

2022年11月:PyPI用户“felpes”在Python包索引(PyPI)中添加了包含各种形式恶意代码的三个软件包。2024年2月1日:攻击者注册了域名pypihosted[.]org。

2024年3月4日:顶级.gg贡献者的GitHub账户被入侵,攻击者利用它将恶意代码提交到组织的代码库中。 

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

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

恶意包 

Package Name Version Username Date Released jzyrljroxlca 0.3.2 pypi/xotifol394 21-Jul-23 wkqubsxekbxn 0.3.2 pypi/xotifol394 21-Jul-23 eoerbisjxqyv 0.3.2 pypi/xotifol394 21-Jul-23 lyfamdorksgb 0.3.2 pypi/xotifol394 21-Jul-23 hnuhfyzumkmo 0.3.2 pypi/xotifol394 21-Jul-23 hbcxuypphrnk 0.3.2 pypi/xotifol394 20-Jul-23 dcrywkqddo 0.4.3 pypi/xotifol394 20-Jul-23 mjpoytwngddh 0.3.2 pypi/poyon95014 21-Jul-23 eeajhjmclakf 0.3.2 pypi/tiles77583 21-Jul-23 yocolor 0.4.6 pypi/felpes 05-Mar-24 coloriv 3.2 pypi/felpes 22-Nov-22 colors-it 2.1.3 pypi/felpes 17-Nov-22 pylo-color 1.0.3 pypi/felpes 15-Nov-22 type-color 0.4 felipefelpes 01-Nov-22

IOChxxps[:]//files[.]pythanhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.5.tar.gz hxxps[:]//files[.]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



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