ZiChatBot 恶意软件通过 PyPI 包使用 Zulip C2 传播
三个 PyPI 包在 Windows 和 Linux 上分发 ZiChatBot 恶意软件,使用 Zulip 聊天 API 进行隐蔽的 C2 —— Kaspersky 识别出全球 12 个以上受害组织。

ZiChatBot 恶意软件通过 PyPI 包使用 Zulip C2 传播
执行摘要
卡巴斯基研究人员在 Python 包索引(PyPI)仓库中发现了三个恶意包,这些包传递了一个以前未记录的恶意软件家族,被称为 ZiChatBot。这些包伪装成文件转换、PDF 处理和系统实用程序的合法工具,部署了一个基于 Python 的后门,使用 Zulip 聊天 API 进行命令和控制(C2)通信。根据卡巴斯基的分析,这场活动至少已经破坏了全球技术、金融和教育部门的至少 12 个组织,确认在 Windows 和 Linux 系统上都有感染。这一发现突出了威胁行为者滥用合法协作平台以规避网络检测的新兴趋势。
技术分析
这三个 PyPI 包 — pdf-converter-tool、file-utils-pro 和 sys-info-collector — 在 2026 年 3 月至 4 月之间上传,并在卡巴斯基向 PyPI 管理员报告之前累积了超过 5000 次下载。每个包都包含合法的功能代码以及在安装期间通过 setup.py 钩子执行的混淆 Python 脚本,这是一种由 MITRE 记录为 T1195.001(供应链破坏)的技术。
执行后,恶意软件会投放一个 Python 有效载荷,通过 Windows 上的计划任务和 Linux 上的 cron 作业(T1547.001)建立持久性。然后后门连接到一个专用的 Zulip 组织(zichatbot.zulipchat.com),使用硬编码在有效载荷中的 API 凭证。Zulip 的流式 API 允许 ZiChatBot 通过看似良性的聊天流量接收命令和外传数据,根据卡巴斯基的报告,这使得传统网络监控工具的检测难度大大增加。
ZiChatBot 支持一系列命令,包括文件上传/下载、shell 执行、进程枚举和从浏览器存储中收集凭据。恶意软件使用 AES-256 加密进行其有效载荷阶段和 RC4 用于 C2 通道混淆。卡巴斯基指出,代码质量表明是一个中等技能的开发人员,三个包中有一些可重用的模块。恶意软件似乎没有使用任何零日漏洞;它完全依赖于用户自愿安装恶意的 PyPI 包。
入侵指标
卡巴斯基发布了三个恶意轮包和相关 Zulip 域的 SHA-256 哈希值。下面的 IOCs 直接来自他们的公开披露。防御者还应该监控到 zichatbot.zulipchat.com 和 api.zulipchat.com 在端口 443 上的出站连接,因为这些是主要的 C2 端点。
战术、技术与程序
ZiChatBot 的操作流程遵循一个可重复的模式:通过 PyPI 供应链(T1195.001)获得初始访问,通过 Python 解释器执行(T1059.006),通过计划任务/cron 持久性(T1547.001),通过代码混淆和合法服务滥用进行防御规避(T1027.002),以及通过 Zulip 的 Web 服务 API 进行 C2(T1102.002)。使用合法的协作平台进行 C2 是从传统的 HTTP/S 或 DNS 隧道的一个显著演变,因为 Zulip 流量在这些工具被白名单的环境中不太可能触发警报。
威胁行为者背景
卡巴斯基没有将 ZiChatBot 归因于任何已知的威胁行为者或团体。恶意软件的操作安全 —— 包括使用专用的 Zulip 组织和加密的有效载荷 —— 表明是一个财务动机的行为者,但研究人员明确表示,归因仍然不确定。该活动相对较低的下载量和缺乏复杂的规避技术可能表明这是一个较小规模的行动,而不是国家赞助的努力。
缓解措施与建议
使用 PyPI 的组织应该实施包完整性验证,并尽可能限制安装到策划的内部仓库。防御者应该监控对 Zulip 或类似协作平台的意外出站连接,特别是那些不合法使用这些服务的系统。这三个恶意包已经从 PyPI 中移除,但卡巴斯基警告说,相同或变体包可能以不同的名字重新出现。安全团队还应该审查在 2026 年 3 月至 5 月期间安装了这些包的任何系统,并进行取证分析,以寻找凭证盗窃或横向移动的迹象。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。
