В репозитории PyPI выявлены вредоносные пакеты, нацеленные на кражу криптовалюты

В каталоге PyPI (Python Package Index) выявлено 26 вредоносных пакетов, содержащих в скрипте setup.py обфусцированный код, определяющий наличие идентификаторов криптокошельков в буфере обмена и меняющий их на кошелёк злоумышленника (предполагается, что при совершении оплаты жертва не заметит, что перенесённый через буфер обмена номер кошелька отличается).

Подмену выполняет сценарий JavaScript, который после установки вредоносного пакета встраивается в браузер в форме браузерного дополнения, которое выполняется в контексте каждой просматриваемой web-страницы. Процесс установки дополнения привязан к платформе Windows и реализован для браузеров Chrome, Edge и Brave. Поддерживается подмена кошельков для криптовалют ETH, BTC, BNB, LTC и TRX.

Вредоносные пакеты маскируются в каталоге PyPI под некоторые популярные библиотеки при помощи тайпсквотинга (назначение похожих имён, отличающихся отдельными символами, например, exampl вместо example, djangoo вместо django, pyhton вместо python и т.п.). Так как создаваемые клоны полностью повторяют легитимные библиотеки, отличаясь только вредоносной вставкой, злоумышленники рассчитывают на невнимательных пользователей, совершивших опечатку и не заметивших отличий в названии при поиске. С учётом популярности исходных легитимных библиотек (число загрузок превышает 21 млн копий в день), под которые маскируются вредоносные клоны, вероятность поймать жертву достаточно велика, например, через час после публикации первого вредоносного пакета его успели загрузить более 100 раз.

Примечательно, что неделю назад та же группа исследователей выявила в PyPI 30 других вредоносных пакетов, некоторые из которых также маскировались под популярных библиотеки. За время атаки, которая продолжалась около двух недель, вредоносные пакеты были загружены 5700 раз. Вместо скрипта для замены криптокошельков в указанных пакетах использовался типовой компонент W4SP-Stealer, обеспечивающий поиск на локальной системе сохранённых паролей, ключей доступа, криптокошельков, токенов, сессионных Cookie и другой конфиденциальной информации, и отправку найденных файлов через Discord.

Вызов W4SP-Stealer осуществлялся через подстановку выражения “__import__” в файлы setup.py или __init__.py, которое было отделено большим числом пробелов, чтобы вывести вызов __import__ за пределы видимой области в текстовом редакторе. В блоке “__import__” выполнялось декодирование блока в формате Base64 и его запись во временный файл. Блок содержал скрипт для загрузки и установки в системе W4SP Stealer. Вместо выражения “__import__” подключение вредоносного блока в некоторых пакетах осуществлялось через установку дополнительного пакета при помощи вызова “pip install” из скрипта setup.py.


Выявленные вредоносные пакеты, подменяющие номера криптокошельков:

  • baeutifulsoup4
  • beautifulsup4
  • cloorama
  • cryptograpyh
  • crpytography
  • djangoo
  • hello-world-exampl
  • hello-world-example
  • ipyhton
  • mail-validator
  • mysql-connector-pyhton
  • notebok
  • pyautogiu
  • pygaem
  • pytorhc
  • python-dateuti
  • python-flask
  • python3-flask
  • pyyalm
  • rqeuests
  • slenium
  • sqlachemy
  • sqlalcemy
  • tkniter
  • urlllib

Выявленные вредоносные пакеты, отправляющие конфиденциальные данные из системы:

  • typesutil
  • typestring
  • sutiltype
  • duonet
  • fatnoob
  • strinfer
  • pydprotect
  • incrivelsim
  • twyne
  • pyptext
  • installpy
  • faq
  • colorwin
  • requests-httpx
  • colorsama
  • shaasigma
  • stringe
  • felpesviadinho
  • cypress
  • pystyte
  • pyslyte
  • pystyle
  • pyurllib
  • algorithmic
  • oiu
  • iao
  • curlapi
  • type-color
  • pyhints

Release. Ссылка here.