Эксперты обнаружили в PyPI семь вредоносных пакетов, использующих SMTP-серверы Gmail и веб-сокеты для кражи данных и удаленного выполнения команд.
Пакеты были обнаружены аналитиками Socket, которые сообщили о своих находках в PyPI, после чего пакеты были удалены. Однако некоторые из них присутствовали в PyPI более четырех лет, а один пакет и вовсе был загружен более 18 000 раз.
Исследователи нашли малварь в следующих пакетах:
- Coffin-Codes-Pro (9000 загрузок);
- Coffin-Codes-NET2 (6200 загрузок);
- Coffin-Codes-NET (6100 загрузок);
- Coffin-Codes-2022 (18 100 загрузок);
- Coffin2022 (6500 загрузок);
- Coffin-Grave (6500 загрузок);
- cfc-bsb (2900 загрузок).
Пакеты Coffin выдавали себя за легитимный пакет Coffin, который представляет собой легкий адаптер для интеграции шаблонов Jinja2 в проекты Django.
Вредоносная функциональность пакетов была направлена на скрытый удаленный доступ и хищение данных через Gmail.
Пакеты использовали жестко закодированные учетные данные для входа на SMTP-сервер Gmail (smtp.gmail.com) и отправляли своим операторам собранную на машинах жертв информацию, позволяющую получить удаленный доступ к взломанной системе. Поскольку Gmail является доверенным ресурсом, брандмауэры и системы EDR вряд ли сочтут такую активность подозрительной.
После передачи данных по почте вредонос подключался к удаленному серверу, используя WebSocket через SSL, и получал инструкции по настройке зашифрованного двунаправленного туннеля от хоста к атакующему.
Используя класс Client, малварь пересылала через туннель трафик с удаленного хоста в локальную систему, тем самым обеспечивая доступ к внутренней панели администратора и API, передачу файлов, кражу электронных писем, выполнение шелл-команд, сбор учетных данных и боковое перемещение.
Исследователи полагают, что пакеты были в основном ориентированы на кражу криптовалюты. Об этом свидетельствуют используемые почтовые адреса (например, blockchain.bitcoins2020@gmail.com) и тот факт, что ранее злоумышленники уже применяли похожую тактику для кражи приватных ключей Solana.