В публичном реестре npm обнаружена масштабная кампания по хищению учётных записей Telegram. Два пакета - common-tg-service и ams-ssk - оказались звеньями одной инфраструктуры, нацеленной на пользователей из Индии. Первый выступает в роли клиентского фреймворка для автоматического перехвата контроля над аккаунтами, второй служит серверной частью, обеспечивающей хранение файлов и управление ботами. Оба пакета опубликованы под одним и тем же идентификатором издателя shetty123, что указывает на единого оператора.
Описание
Пакет common-tg-service маскируется под полезную утилиту для приложений на NestJS. В его описании указаны стандартные функции: интеграция с Telegram-ботами, управление каналами, статистика и даже приём платежей через UPI (индийская платёжная система). На деле внутри дистрибутива находится полноценный инструмент для захвата аккаунтов. Все 502 версии этого пакета, выпущенные с первой по последнюю, содержат вредоносный код. Еженедельная аудитория загрузок достигает 28 тысяч установок. Установочные скрипты отсутствуют, поэтому проверки на этапе npm install не срабатывают. Злонамеренная активность запускается только во время выполнения приложения.
Вторая часть схемы - пакет ams-ssk. Он заявлен как библиотека для управления файлами в NestJS, но на самом деле разворачивает на стороне оператора API для загрузки, скачивания и упаковки данных. Его код не атакует хост, на котором установлен, однако предоставляет интерфейс, который common-tg-service использует для получения полезных нагрузок. Оба пакета имеют идентичную структуру обмана: скопированное из шаблона NestJS описание, неработающая ссылка на репозиторий GitHub и указание автора Mad_man.
Детальный анализ содержимого common-tg-service раскрывает набор автоматизированных методов захвата аккаунтов Telegram. Первый шаг - принудительная установка двухфакторной аутентификации (2FA) на все аккаунты, которые проходят через сервис. Пароль жёстко задан в коде: Ajtdmwajt1@, а адрес для восстановления - почтовый ящик оператора storeslaksmi@gmail.com. Для подтверждения смены пароля пакет подключается к тому же ящику по протоколу IMAP, автоматически считывает пришедший от Telegram код подтверждения и отправляет его обратно. Жертва не замечает никаких уведомлений.
После установки 2FA пакет принудительно завершает все прочие активные сессии на аккаунте, кроме собственной. Каждое удаление сессии сопровождается отправкой оператору бота с данными: номер телефона, страна, модель устройства. Таким образом законный владелец теряет доступ к своему аккаунту без возможности восстановления.
Второй механизм - перехват одноразовых кодов (OTP), которые Telegram присылает от официального отправителя 777000. Все входящие сообщения из этого чата немедленно пересылаются в управляемый оператором канал вместе с номером телефона. Этого достаточно, чтобы злоумышленник мог войти в аккаунт в любой момент.
Более того, фреймворк постоянно проверяет, не сменил ли пользователь пароль 2FA после захвата. Для каждого скомпрометированного аккаунта выполняется проверка по протоколу SRP. Если пароль изменён, аккаунт помечается как "чуждый" и оператор получает уведомление. Это позволяет оперативно реагировать на попытки жертв вернуть контроль.
Управление всей бот-сетью осуществляется через удалённую конфигурацию на сервисе npoint[.]io. В исходный код зашиты учётные данные для входа в учётную запись dodieajt[@]gmail.com и тот же самый пароль Ajtdmwajt1@. Любое изменение настроек на npoint мгновенно применяется ко всем запущенным экземплярам пакета, без необходимости перевыпуска версий.
Для обхода блокировок по IP или при получении HTTP-ответов с кодами 403 и 495 пакет перенаправляет запросы через прокси-сервер helper-thge.onrender.com. Аутентификация на этом ретрансляторе выполняется по ключу santoor, который также общедоступен в коде. Этот же ключ используется в качестве универсального API-ключа для административных эндпоинтов самого пакета. В сочетании с жёстко прописанным списком IP-адресов оператора (включая серверы в Сингапуре и Европе) это создаёт надёжный бэкдор: любой, кто прочитал исходники, может авторизоваться как владелец инфраструктуры.
Индикаторы нацеленности на индийских пользователей очевидны: в коде упоминается интеграция с UPI, среди доменов фигурирует report-upi.netlify[.]app, а подсказка для 2FA содержит фразу password - India143. Всё указывает на то, что целью кампании является получение доступа к аккаунтам Telegram для последующего мошенничества с платежами.
Пакет ams-ssk служит серверной опорой этой схемы. Он развёрнут на доменах cms.paidgirl[.]site и promoteClients2.glitch[.]me. Его API предоставляет те же маршруты для загрузки и скачивания файлов, которые вызывает common-tg-service. Кроме того, в коде ams-ssk обнаружена переменная окружения bot_ADMIN_CHAT_ID, указывающая на чат администратора оператора. Таким образом, два пакета образуют замкнутую экосистему: один похищает учётные данные, другой обслуживает инфраструктуру.
Последствия масштабны. Любой проект, использующий common-tg-service в любой версии, автоматически передаёт оператору все аккаунты Telegram, обработанные приложением. Организациям и частным лицам следует немедленно проверить свои системы на наличие этого пакета, удалить его, сменить пароли 2FA и восстановить почту для восстановления на всех скомпрометированных аккаунтах. Также необходимо заблокировать исходящие соединения к перечисленным доменам и IP-адресам. Сама по себе публикация common-tg-service в публичном реестре под видом безобидной библиотеки - серьёзный сигнал о том, что проверка пакетов по формальным признакам (отсутствие установочных скриптов, шаблонное описание) недостаточна для выявления угроз.
Индикаторы компрометации
IPv4
- 13.228.225.19
- 148.230.84.50
- 18.142.128.26
- 31.97.59.2
- 54.254.162.138
Domains
- cms.paidgirl.site
- promoteClients2.glitch.me
- report-upi.netlify.app
- tgchats.netlify.app
- tg-chats.netlify.app
- zomcall.netlify.app
SHA1
- 5061bc9611e31a48a8085cfab4cb875a6cc633ec
- 80da04770a779330803bdd00d00a354adc12859a