Новая кампания NuGet typosquatting занимается распространением вредоносных пакетов, которые используют интеграцию MSBuild с Visual Studio для выполнения кода и скрытой установки вредоносных программ.
NuGet - это менеджер пакетов с открытым исходным кодом и система распространения программного обеспечения, позволяющая разработчикам загружать и включать в свои проекты готовые к работе библиотеки .NET.
Угрозы, нацеленные на такие системы распространения ПО, как npm и PyPI, в последнее время проявляют интерес к NuGet, которая ориентирована преимущественно на пользователей Windows и стала очень популярной среди разработчиков ПО.
Сокрытие кода с помощью MSBuild
Последняя NuGet-кампания была замечена компанией ReversingLabs 15 октября 2023 года. В ней использовались различные пакеты typosquatting для установки вредоносного ПО.
Среди пакетов, замеченных в этой кампании, можно назвать следующие:
- CData.NetSuite.Net.Framework
- CData.Salesforce.Net.Framework
- Chronos.Platforms
- DiscordsRpc
- Kraken.Exchange
- KucoinExchange.Net
- MinecraftPocket.Server
- Monero
- Pathoschild.Stardew.Mod.Build.Config
- SolanaWallet
- ZendeskApi.Client.V2
Новизна этой кампании заключается в том, что вместо стандартного подхода, заключающегося во включении загрузчиков в сценарии установки, эти пакеты используют интеграцию NuGet с MSBuild для выполнения кода.
Интеграция NuGet с MSBuild - это функция, появившаяся в NuGet v2.5 с целью поддержки "родных" проектов, автоматизации процесса сборки и тестирования, а также предоставления разработчикам возможности определять пользовательские действия и разрешать зависимости.
Когда NuGet устанавливает пакет, содержащий папку '\build', он автоматически добавляет в проект элемент MSBuild, ссылающийся на файлы .targets и .props в этой папке. Процесс сборки использует эти файлы для задания конфигураций, свойств или пользовательских задач.
Несмотря на то, что эта новая интеграция NuGet была добавлена для улучшения процесса сборки и упаковки программных проектов, она вызвала опасения по поводу последствий для безопасности, поскольку добавляет новый метод автоматического запуска сценариев при установке пакета.
В случае, обнаруженном ReversingLabs, вредоносный код скрыт в файле .targets в каталоге "build" в виде свойства, реализующего функциональность сценариев PowerShell, использовавшихся в предыдущих версиях пакетов.
При выполнении код получает исполняемый файл с внешнего адреса и запускает его в новом процессе.
Впервые эта техника была представлена исследователем безопасности в 2019 году для иллюстрации того, как процесс MSBuild может быть использован для запуска кода при установке пакетов NuGet.
"Во-первых, строковый артефакт в первой строке файла 'IAmRootDemo' привел нас к корню этой техники выполнения", - поясняет Карло Занки из ReversingLab в отчете, предоставленном Герман Геншин.
"Несколько лет назад, в 2019 году, пакет IAmRoot был опубликован К. Аугусто Пройете (C. Augusto Proiete). Цель пакета: "Продемонстрировать, что любой пакет NuGet может запустить произвольный код на вашей машине"."
Однако это первый задокументированный случай использования угрозами данной функции во вредоносных NuGet-пакетах.
Эволюция существующих кампаний
По данным ReversingLabs, обнаруженные пакеты NuGet, которые были удалены, являлись частью текущей кампании, начавшейся в августе 2023 года.
Однако до середины октября она не злоупотребляла интеграциями MSBuild.
Более ранние версии использовали сценарии PowerShell ('init.ps1') для получения полезной нагрузки из репозитория GitHub.
Это свидетельствует о том, что злоумышленники постоянно совершенствуют свои методы, чтобы сделать атаки более скрытными.
Аналитики также отмечают тесную связь с кампанией, о которой в начале месяца сообщала компания Phylum, где злоумышленники использовали typosquatting для имитации криптовалютных проектов и доставки SeroXen RAT.
По данным ReversingLabs, исполнители угроз пытались установить новые пакеты сразу после удаления предыдущих, что свидетельствует о намерении продолжить кампанию.
По новым правилам Дзена свежие материалы показываются в первую очередь подписчикам, которые реагируют на публикации. Поэтому не забывайте подписаться, поставить лайк и оставить комментарий, так вы будете первым узнавать о всех новых статьях на нашем канале!