PyPI 中还有两个恶意 Python 包
导语:8月8日,CheckPoint发布了一份关于Python包索引(PyPI)中10个恶意Python包的报告,pypi 是 Python Package Index 的首字母简写,其实表示的是 Python 的 Packag 索引,这个也是 Python 的官方索引。
8月8日,CheckPoint发布了一份关于Python包索引(PyPI)中10个恶意Python包的报告,pypi 是 Python Package Index 的首字母简写,其实表示的是 Python 的 Packag 索引,这个也是 Python 的官方索引。 你需要的包(Package)基本上都可以从这里面找到。PyPI是软件开发者最受欢迎的Python存储库。这些恶意软件包的目的是窃取开发人员的个人数据和证书。
在CheckPoint的报告发布后不久,卡巴斯基的研究人员就使用其内部自动化系统来监控开源存储库,并在PyPI中发现了另外两个恶意Python包。他们伪装成最流行的开源包,名为“requests“。
上传包的时间:
攻击者使用合法的“requests”包的描述来欺骗受害者安装恶意的包。该描述包含虚假的统计数据,似乎该软件包在一个月内安装了2.3亿次,在GitHub上有超过48000个 “stars” 。项目描述还引用了原始“requests”包的网页,以及开发者的电子邮件。所有提及的合法程序包的名称都被替换为恶意程序包的名称。
下载恶意包之后,很明显源代码几乎与合法的“requests”包的代码完全相同,除了一个文件:exception.py。在恶意程序包中,该脚本最后一次修改是在7月30日,也就是恶意程序包发布的日期。
恶意负载是隐藏在“HTTPError”类中的一个base64编码的Python脚本。该脚本将另一个Python单行脚本写入一个临时文件,然后通过system.start()函数运行该文件。然后,这个单行脚本从https://zerotwo-best-waifu[.]online/778112985743251/wap/enner/injector下载下一阶段脚本并执行它。
下载程序
下一阶段是使用一个名为Hyperion的公开工具进行模糊化的下载程序。混淆可以使用多种技术来完成,例如重命名变量和库函数,添加混合的布尔算术表达式和垃圾代码,以及使用zlib库压缩代码块。
如果操作系统名称不是“nt”(Windows),则下载程序终止。它随机选择 C:\Users\
然后恶意软件从https://zerotwo-best-waifu[.]online/778112985743251/wap/shatlegay/stealer123365下载最后阶段的有效载荷,将其保存到之前生成的位置并执行。
为了在受感染的计算机上实现持久性,该恶意软件在HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run Windows系统注册分支中创建一个名为“Realtek HD Audio Universal Service的注册值。
该脚本在%system32%目录中搜索名为SecurityHealthSystray.exe或SystemSettingsAdminFlows.exe的现有可执行文件,添加一个“&”字符(以确保在命令行字符串中按顺序执行),然后添加带有恶意脚本位置的 Python 解释器。值得注意的是,这种方法不能正常工作,因为系统只启动第一个可执行文件,但实际上没有实现持久性。
最终有效载荷:W4SP Stealer
最终的有效载荷是一个用 Python 编写的木马,并使用与下载程序相同的模糊处理程序进行了模糊处理。该恶意软件的代码被其开发者命名为“W4SP Stealer”。
启动后,窃取者通过向 https://api.ipify.org 发出 GET 请求来识别受害者设备的外部 IP 地址,并安装两个合法的 PyPI 包——“requests”和“pycryptodome”,以便将泄露的数据发送到操作员,并使用密码学从浏览器中解密 cookie 和密码。然后恶意软件开始在不同的线程中从浏览器收集 Discord 令牌、保存的 cookie 和密码。
收集到的密码和cookie保存在文件%TEMP%\wppassw.txt和%TEMP%\wpcook.txt中,格式如下:
窃取程序在受害者设备上创建的所有文件都以“< - w4sp stealer on TOP - >”开头。所有收集到的数据通过Discord webhook 发送给操作人员,并以美化的格式呈现:
窃取程序还为包含关键字“mail”、“card”、“bank”、“buy”、“sell”等的 URL 创建并发送保存的浏览器凭据列表(完整列表参见附录)。除此之外,它还从 MetaMask、Atomic 和 Exodus 钱包以及 Steam 和 Minecraft 凭证中收集数据。
收集凭据后,窃取程序开始遍历受害者名为“下载”、“文档”和“桌面”的目录,寻找包含以下单词的文件名:
有趣的是,这个列表包含了多个法语单词:“mot de passe”(密码),“mdp”(mot de passe的缩写),“banque”(银行),“compte”(账户)。然后将匹配的文件上传到同一个 Discord 频道。
窃取程序还从 zerotwo-best-waifu[.]online/778112985743251/wap/dsc_injection 下载 一个JavaScript 有效负载,并将其写入 Discord 的 index.js 文件。然后它会阻止正在运行的 discord.exe 进程,因此用户必须重新启动 Discord,从而激活有效负载。
注入的脚本会监控受害者的行为,例如更改他们的电子邮件地址、密码或账单信息。更新的信息也会发送到 Discord 频道。
研究人员已经向 PyPI 安全团队和 Snyk 漏洞数据库报告了这两个包。
卡巴斯基解决方案检测到的威胁有:
· Trojan.Python.Inject.d
· Trojan.Python.Agent.gj
发表评论