Исследователи Kaspersky обнаружили вредоносные wheel‑пакеты, загружавшиеся в PyPI с июля 2025 года; они доставляли ZiChatBot на Windows и Linux. Главная особенность ZiChatBot — использование REST API Zulip как командно‑контрольного канала вместо отдельного C2‑сервера злоумышленников.

Create a landscape editorial hero image for this Studio Global article: OceanLotus PyPI Attack: How ZiChatBot Abused Zulip APIs for C2. Article summary: Kaspersky linked a July 2025 malicious PyPI wheel package campaign—uuid32 utils, colorinal and termncolor—to OceanLotus; the packages targeted Windows and Linux and delivered a new malware family, ZiChatBot.. Topic tags: cybersecurity, malware, pypi, python, supply chain security. Reference image context from search candidates: Reference image 1: visual subject "Through our daily threat hunting, we noticed that, beginning in July 2025, a series of malicious wheel packages were uploaded to PyPI (the Python Package Index). We shared this inf" source context "OceanLotus suspected of distributing ZiChatBot malware via wheel packages in PyPI | Securelist" Reference image 2: visual subject "In a calculated move that signals the expansion of st
Это не история о том, что злоумышленники «взломали PyPI» или скомпрометировали Zulip. По опубликованным данным Kaspersky, речь идет о кампании распространения вредоносных Python wheel‑пакетов: начиная с июля 2025 года их загружали в Python Package Index, а установленные пакеты скрытно доставляли ZiChatBot — ранее неизвестное семейство вредоносного ПО для Windows и Linux.
Самая важная деталь — не сам факт злоупотребления PyPI, а схема управления зараженными системами. Согласно публикации по анализу Kaspersky, ZiChatBot не связывался с выделенным C2‑сервером злоумышленников, а использовал REST API Zulip, публичного приложения для командного чата, как инфраструктуру command-and-control.
В заметке Securelist Kaspersky пишет, что исследователи во время ежедневного threat hunting заметили серию вредоносных wheel‑пакетов, загруженных в PyPI начиная с июля 2025 года; информацию передали сообществу ИБ, после чего вредоносное ПО было удалено из репозитория.
Эти пакеты не были пустыми «пустышками». По словам Kaspersky, wheel‑пакеты действительно реализовывали функции, заявленные на своих страницах PyPI, но их реальной задачей была скрытая доставка вредоносных файлов. The Hacker News, ссылаясь на тот же разбор Kaspersky, также пишет, что пакеты выглядели рабочими, но предназначались для незаметной доставки ZiChatBot на Windows и Linux.
В публичных сводках названы три поддельные библиотеки PyPI, участвовавшие в кампании:
uuid32-utilscolorinaltermncolorС атрибуцией стоит быть аккуратными. В публикации Securelist Kaspersky формулирует осторожно: образцы были отправлены в Kaspersky Threat Attribution Engine, а результаты указывают, что пакеты могут быть связаны с вредоносным ПО, обсуждавшимся в отчете по киберразведке об OceanLotus. В индексе threat research Kaspersky формулировка прямее: компания относит активность ZiChatBot в PyPI к OceanLotus APT.
Одна публичная сводка описывает уверенность в атрибуции как умеренную.
Технически это была кросс‑платформенная цепочка с дроппером. Индекс исследований Kaspersky сообщает, что вредоносные wheel‑пакеты PyPI были нацелены на Windows и Linux и содержали дроппер, доставлявший вредоносное ПО под названием ZiChatBot.
Одна из публичных сводок описывает дальнейшие шаги так: из wheel‑пакета извлекался DLL или .SO дроппер, затем закрепление выполнялось через реестр Windows или Linux crontab, после чего развертывался ZiChatBot.
Практический вывод для команд разработки простой: проверять нужно не только серверы приложений. Если такие пакеты попадали на рабочие станции разработчиков, в виртуальные окружения, CI‑раннеры, сборочные агенты или контейнерные образы, риск мог возникнуть именно там, где обычно выполняется pip install
И еще один важный урок: «пакет работает» не равно «пакет безопасен». В этой кампании вредоносные wheel‑пакеты, по данным Kaspersky, выполняли заявленные функции и одновременно доставляли скрытые вредоносные файлы.
Zulip — легитимная платформа для командного общения. Именно это и делало схему заметной: по сообщениям о выводах Kaspersky, ZiChatBot не использовал отдельный command-and-control сервер, а применял набор REST API Zulip как C2‑инфраструктуру.
Документация Zulip описывает операции, которые хорошо укладываются в модель «C2 поверх чата»: отправку и получение сообщений, загрузку файлов, редактирование и удаление сообщений, построение message narrows — то есть фильтрованных выборок сообщений — а также работу с темами в каналах. Документация по ботам Zulip также показывает, что боты могут перехватывать, просматривать и обрабатывать сообщения пользователей, а затем отправлять ответы.
На высоком уровне это позволяет представить команды оператора как сообщения в чате или сообщения в конкретной теме, а вредоносное ПО — как клиента, который получает нужные сообщения и публикует результаты обратно через тот же сервис. В доступных публичных материалах не раскрываются конкретный workspace Zulip, учетные данные бота, последовательность endpoint’ов или набор команд ZiChatBot; поэтому корректнее всего говорить, что ZiChatBot злоупотреблял штатной функциональностью REST API Zulip для C2, а не опирался на инфраструктуру C2, напрямую принадлежащую атакующим.
Упоминание Zulip не означает, что сам сервис Zulip был взломан. В цитируемых материалах речь идет о злоупотреблении обычными REST API и бот‑механиками обмена сообщениями, а не о компрометации платформы.
То же относится и к PyPI. Публикация Kaspersky описывает вредоносные wheel‑пакеты, загруженные в репозиторий, и сообщает, что вредоносное ПО позже удалили из PyPI; это не равно взлому инфраструктуры PyPI.
Для защитников главное последствие другое: трафик к легитимному сервису совместной работы может быть подозрительным, если он исходит от хоста, процесса, CI‑задания или сервисной учетной записи, которым незачем обращаться к этому сервису. Одних списков блокировки по «плохим доменам» здесь может быть недостаточно: важны контекст процесса и ожидаемое бизнес‑использование, а не только репутация адресата.
Начать стоит с инвентаризации зависимостей. Ищите uuid32-utils, colorinal и termncolor на машинах разработчиков, сборочных узлах, в виртуальных окружениях, lock‑файлах зависимостей и контейнерных образах.
Проверьте журналы установок и артефакты начиная с июля 2025 года — именно этот период Kaspersky указывает как начало загрузки вредоносных wheel‑пакетов. Если один из названных пакетов найден, лучше сначала сохранить окружение и логи для расследования, а не просто удалить пакет и считать инцидент закрытым.
На Windows имеет смысл искать неожиданное закрепление в Registry; на Linux — подозрительные записи crontab. Это соответствует публично описанной цепочке заражения для кампании.
Отдельно проверьте сетевую и процессную телеметрию: обращения к API Zulip от Python‑интерпретаторов, процессов установки пакетов, CI‑воркеров, серверов или сервисных учетных записей должны объясняться реальным рабочим сценарием. Вопрос не в том, является ли Zulip легитимным сервисом вообще, а в том, должен ли именно этот процесс на этом хосте вызывать Zulip API.
Кампания, связанная с OceanLotus, включала вредоносные wheel‑пакеты PyPI, загружавшиеся начиная с июля 2025 года; среди публично названных пакетов — uuid32-utils, colorinal и termncolor. Они доставляли ZiChatBot на Windows и Linux, а ключевая операционная особенность ZiChatBot заключалась в использовании REST API Zulip для command-and-control вместо выделенного C2‑сервера злоумышленников.
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
Исследователи Kaspersky обнаружили вредоносные wheel‑пакеты, загружавшиеся в PyPI с июля 2025 года; они доставляли ZiChatBot на Windows и Linux.
Исследователи Kaspersky обнаружили вредоносные wheel‑пакеты, загружавшиеся в PyPI с июля 2025 года; они доставляли ZiChatBot на Windows и Linux. Главная особенность ZiChatBot — использование REST API Zulip как командно‑контрольного канала вместо отдельного C2‑сервера злоумышленников.
Командам безопасности стоит искать uuid32 utils, colorinal, termncolor, проверять установки с июля 2025 года, persistence в Registry/crontab и нетипичные обращения к API Zulip.