
Мы, команда Threat Intelligence экспертного центра безопасности Positive Technologies, в рамках недавнего автоматизированного аудита проектов, размещенных в главном репозитории Python-кода, нашли 28 вредоносных пакетов, которые уже много месяцев вредили пользователям. В совокупности они были скачаны 59 000 раз.
Отчет о перечисленных ниже проектах был передан команде Python Package Index (PyPI), благодаря чему проекты были удалены.
Как мы обнаружили эти пакеты
Мы постоянно работаем над качеством нашей экспертизы. В сервисе PyAnalysis мы пробуем новые методы эффективного обнаружения проектов, угрожающих безопасности пользователей. Так, в прошлом году мы подключили обнаружение применения техник typosquatting и starjacking.
Typosquatting подразумевает использование видоизмененных названий популярных проектов в надежде, что разработчик опечатается и напишет, к примеру equests, request или rquest — все это настоящие вредоносные проекты, мимикрирующие под requests, и их код можно посмотреть в сервисе.
Starjacking — это указание ссылки на популярный репозиторий GitHub в качестве домашней страницы для PyPI-проекта. PyPI отображает информацию о звездах и форках, из-за чего создается неверное впечатление о благонадежности проекта. Механизм этой атаки мы подробно разбирали в этой статье. В начале года мы добавили деобфускатор на основе трансформера AST, значительно облегчающий обнаружение сложных вредоносных проектов.
Сейчас мы внедряем решения ML для поиска плохих проектов, и в рамках сканирования обнаружили несколько десятков плохих релизов в 28 проектах. О наиболее интересных из них мы и расскажем.
«Этический ресерч»
В рамках этой кампании мы выделили проекты следующих разработчиков:
-
ai-codesign:-
ai-codesign;
-
-
synapseml-dev:-
synapseml-vw; -
synapseml-opencv; -
synapseml-lightgbm; -
synapseml-deep-learning; -
synapseml-core; -
sqlanalyticsconnectorpy; -
library-metadata-cooker; -
fsspec-wrapper; -
azure-synapse-ml-predict;
-
-
intel-pytorch:-
azureml-data;
-
-
prose-codeaccelerator:-
prose-datainsights; -
prose-codeacceleratorlab; -
prose-codeaccelerator; -
azureml-codeaccelerator.
-
Все эти пакеты были созданы 1 марта 2023 года. Автор использовал названия пакетов, пересекающиеся с именами популярных проектов по машинному обучению. Например, synapseml-lightgbm мимикрирует сразу под три пакета:
-
synapseml, пакет Microsoft для Apache Spark; -
lightgbm, популярную библиотеку по машинному обучению; -
synapseml-cognitive, существовавшую ранее библиотеку от Microsoft.
В рамках этой кампании вредоносная составляющая пакетов выглядит одинаково:
Исключение сканера безопасности snyk из целей может свидетельствовать о том, что серия пакетов является исследованием, проводимым этой компанией. Однако авторы не оставили в описании проекта и на полях метаинформации ничего, что помогло бы это подтвердить. Полное условие выглядит так:

К слову, автор многочисленных пакетов лукавит в комментарии к коду на первой картинке, утверждая, что чувствительная информация не отправляется, ведь помимо имени устройства, имени пользователя, текущей рабочей и домашней директорий, от пользователя еще утекает внешний IP-адрес, который как минимум логируется веб-сервером.
Для злоумышленника такие тестовые пакеты могут служить пробой пера для понимания профиля потенциальных жертв в рамках дальнейшего развития вектора атаки.
«Install Utils»
Пакеты за авторством пользователя acamach0, относящиеся к сентябрю 2022 года (и, получается, обнаруженные только в начале 2024), отправляют избыточную телеметрию (имя пользователя, путь до текущей рабочей директории вкупе с IP-адресом по факту HTTP-запроса) в процессе установки:
installutilsИз интересного можно отметить, что в процессе установки проект делает дополнительные проверки с небольшим сокрытием названий:
check_path ищет файл или папку mwinit в листинге директорий, перечисленных в PATH, а find_path — evaluate«Кошачьи баннеры»
В рамках этой кампании мы выделили следующие пакеты:
-
catbannersxd; -
catbannerslol.
Оба пакета опубликованы 26 сентября 2023 года. Тут все прекрасно: и стать жертвой вредоносного программного обеспечения класса Trojan-Downloader, и на котика посмотреть 🙂
По ссылке нас ждет файл весом 22 мегабайта, использующий PyInstaller. Исходный код скомпилирован под Python 3.9 и представляет собой проект PySilon (продвинутый Remote Administration Tool (RAT), написанный на Python и функционирующий через Discord-бота), он включает в себя несколько скриптов:
-
misc.pyc— сервисные функции для хеширования файлов и обхода директорий; -
discord_token_grabber.pyc— получение сессионного токена учетной записи Discord; -
get_cookies.pyc— извлечение кук из Chromium-based браузеров и Firefox; -
passwords_grabber.pyc— извлечение паролей из Chromium-based браузеров; -
source_prepared.pyc— реализация функций бэкдора; отправление украденной информации злоумышленникам, затем ожидание управляющей команды.
Набор команд включает в себя запись экрана, возможность захватить экран и звук и стримить их в голосовом канале, получение изображений с веб-камеры, подмену криптокошельков в буфере обмена, работу с файловой системой и выкачивание файлов, вызов синего экрана смерти, шифрование файлов и многое, многое другое.
«Pymodify»
Мы обнаружили проекты, использующие одинаковую обфускацию:
-
muchar:procleaner(декабрь 2022 года); -
pymodify:pymodify(ноябрь 2022 года).
Код проектов защищен следующим образом:
При снятии обфускации пакета procleaner нашему взору предстает реверс-шелл:
В пакете pymodify логика сложнее: он периодически делает скриншоты экрана и отправляет их по FTP злоумышленнику, обогащая данные IP-адресом жертвы:
«Confuser Malware»
Автором пакета pyconfuserm, выпущенного в октябре 2023 года, является пользователь Fadi002. Сам пакет заявляет в своем описании: «This modules allows you to protect python scripts».
Проект состоит из двух файлов: setup.py и __init__.py. Второй защищен, под ним ожидается скрипт-протектор:
На деле все не так радужно, нас встречает Trojan-Downloader:
Злоумышленник использует сервис repl.co , облачную интегрированную среду разработки и хостинга приложений, и это замечательно, ведь это позволит нам посмотреть на все проекты, доступами к которым «поделился» злоумышленник.
Так, троян предлагает нам скачать и запустить файл dism.exe, но в директории лежит больше файлов:
Исполняемые exe-файлы являются экземплярами трояна XWorm класса RAT, позволяющего скрытно наблюдать за действиями жертвы и дающего полный контроль над всей периферией (в том числе возможность перенаправить злоумышленнику данные с веб-камеры, микрофона, рабочего стола, файловой системы). XWorm также имеет функцию добавления жертвы в ботнет для осуществления DDoS-атаки.
Учетная запись, похоже, создана специально для вредоносных кампаний. Первая активность аккаунта датируется 9 июля 2023 года, последняя — 9 декабря 2023 года. Учетка содержит несколько проектов, хранящих XWorm.
«Многофункциональный стилер MIKU+»
Однострочник на скриншоте выше, относящийся к проекту ForgyP от апреля 2023 года, раскрывается в комплексную малварь аж на 1369 строк, включая в себя:
-
кражу учетных записей Discord;
-
получение сохраненных паролей, платежных карт, кук, данных автозаполнения для форм, истории посещения, закладок из браузеров;
-
сбор файлов криптокошельков;
-
сбор с файловой системы файлов с интересными расширениями и ключевыми словами, например
passw,secret,seed,2fa,nft,metamask,wallet; -
сбор учетных записей Telegram, Steam, Riot Games.
Некоторые части логики этого стилера почти что в неизменном виде мы встречали в разнообразном вредоносном программном обеспечении, но это, пожалуй, самое полное собрание действий.
«License check проекты»
К этой маленькой кампании мы относим пакеты пользователя `Lonewolf2132` request-forTest, request-1InterIIT и request-TestLib. Они созданы 8 февраля 2023 года, и их объединяет общая логика работы: в процессе установки будет запущена «проверка лицензии»:
Проверка лицензии приводит к исполнению скачанного кода.
«Неправильный калькулятор»
Возможно, вы хотите свой персональный калькулятор? Пользователь tsuto создал для этого проект calculator-6a16205c5a683383.
В итоге нас обманули, расходимся: нас встречает реверс-шелл, пусть наверняка уже и не работающий.
Будьте в безопасности в мире открытого программного обеспечения
В рамках исследования мы показали, что вредоносное ПО может скрываться несколько месяцев, а то и лет, пока его обнаружат. Уменьшить шанс того, что вредоносное программное обеспечение попадет в ваши процессы разработки, можно с помощью наших решений:
-
PT Application Inspector — инструмент для тестирования безопасности вашей кодовой базы и выявления уязвимостей;
-
PT Container Security — инструмент обеспечения процессов безопасной разработки с использованием Docker и Kubernetes;
-
PT PyAnalysis — облачный сервис для выявления вредоносных пакетов в Python Package Index. Благодаря ему и был проведен данный ресерч.
? О поиске вредоносного программного обеспечения в PyPI с помощью ML мы подробнее расскажем на киберфестивале Positive Hack Days 2, который пройдет 23–26 мая в «Лужниках». С удовольствием ждем вас!
Обнаруженные вредоносные пакеты
-
azureml-codeaccelerator -
azureml-data -
azure-synapse-ml-predict -
calculator_6a16205c5a683383 -
django-navbar-client-TEST -
ForgyP -
fsspec-wrapper -
installutils-demo -
installutils-nohook -
installutils-nohookwheel -
justmsgbox -
klldv5 -
library-metadata-cooker -
procleaner -
prose-codeaccelerator -
prose-codeacceleratorlab -
prose-datainsights -
pyconfuserm -
pymodify -
request_1InterIIT -
request_forTest -
request_TestLib -
sqlanalyticsconnectorpy -
synapseml-core -
synapseml-deep-learning -
synapseml-lightgbm -
synapseml-opencv -
synapseml-vw
Станислав Раковский и команда threat intelligence PT Expert Security Center
ссылка на оригинал статьи https://habr.com/ru/articles/813977/
Добавить комментарий