Команда по исследованию угроз компании Socket обнаружила целенаправленную атаку на цепочку поставок в экосистеме NuGet, которая представляет серьёзную опасность для разработчиков веб-приложений на ASP.NET. Злоумышленник опубликовал четыре вредоносных пакета, которые при совместном использовании создают многоступенчатую систему для скрытой кражи данных аутентификации и авторизации, а также для установки бэкдоров в приложениях жертв. За две недели эти пакеты суммарно набрали более 4500 загрузок, прежде чем исследователи инициировали процедуру их удаления.
Описание
В центре кампании находится пакет NCryptYo, который использует технику типоскваттинга, имитируя название популярной библиотеки NCrypto. В то время как настоящая библиотека предоставляет реализации алгоритмов AES и RSA, NCryptYo является замаскированным дроппером, чьи публичные методы не выполняют полезных функций и возвращают "null". Его задача - незаметно развернуть второй этап атаки. Три других пакета - DOMOAuth2_, IRAOAuth2.0 и SimpleWriter_ - выполняют функции сбора данных и скрытого управления. Все они были опубликованы одним и тем же актором под ником "hamzazaheer" с 12 по 21 августа 2024 года.
Сложная маскировка и многоуровневая архитектура
Атака демонстрирует высокий уровень технической изощрённости. Пакет NCryptYo не просто маскируется под легитимную библиотеку по названию. Он также имитирует имя системной DLL ("NCrypt.dll") и пространство имён ("NCrypt"), что затрудняет его обнаружение. Код пакета защищён мощным обфускатором .NET Reactor, который включает в себя противодействие отладке, проверку целостности и, что наиболее важно, механизм шифрования на уровне JIT-компилятора.
Этот механизм работает путём перехвата процесса компиляции в реальном времени (Just-In-Time) в среде выполнения .NET. Когда вредоносная сборка загружается, её статический конструктор, который выполняется автоматически, устанавливает хуки в виртуальную таблицу JIT-компилятора. Это позволяет расшифровывать тела методов непосредственно перед их выполнением, что делает статический анализ практически бесполезным. На платформе VirusTotal только один из 72 антивирусных движков смог идентифицировать вредоносный файл "NCrypt.dll".
Согласованная работа пакетов через общую инфраструктуру
Все четыре пакета связаны между собой общими артефактами сборки и инфраструктурой. Три из них содержат идентичный, зашифрованный с помощью GZip и модифицированного Base64, токен аутентификации длиной более 400 символов. При расшифровке он раскрывает API-ключ и идентификатор проекта, которые используются для связи с одним и тем же командным сервером (C2). Метаданные сборок указывают на идентичную среду сборки - Windows NT 10.0.22631, компилятор LangVersion 12.0 и включённые небезопасные блоки кода.
Архитектура атаки сознательно разделена на два этапа. NCryptYo (этап 1) не содержит сетевого кода. Его единственная задача - расшифровать и развернуть полезную нагрузку второго этапа, которая представляет собой локальный прокси-сервер, работающий на "localhost:7152". Этот прокси служит шлюзом для всех остальных пакетов, перенаправляя трафик на внешний C2-сервер злоумышленника, адрес которого динамически получается во время выполнения.
Функциональность пакетов-компаньонов: кража данных и создание бэкдоров
Пакеты DOMOAuth2_ и IRAOAuth2.0 внедряются в систему авторизации ASP.NET Identity. Они регистрируют вредоносные службы через механизм внедрения зависимостей (Dependency Injection) и начинают эксфильтрацию конфиденциальных данных при любом обращении к методам управления разрешениями. В C2 передаются GUID пользователей, идентификаторы ролей, сопоставления пользователей и ролей, а также права доступа на уровне модулей.
Ключевая опасность заключается в двустороннем канале управления. Сервер злоумышленника может не только получать данные, но и отправлять обратно модифицированные ответы о разрешениях. Поскольку эти ответы принимаются приложением без должной валидации, атакующий может дистанционно предоставлять себе права администратора или изменять политики доступа, создавая персистентный бэкдор прямо в логике авторизации приложения.
Пакет SimpleWriter_, маскирующийся под утилиту для конвертации HTML в PDF, добавляет в арсенал злоумышленника возможности безусловной записи файлов и скрытого выполнения процессов. Каждый вызов его метода отправляет сигнал на C2, записывает управляемый злоумышленником контент на диск и запускает локальные бинарные файлы с невидимым окном. Это делает его опасным даже при отсутствии сетевого подключения.
Цель и последствия атаки
Основная цель данной кампании - не прямое заражение машины разработчика, а компрометация приложений, которые он создаёт. Установив контроль над слоем авторизации на этапе разработки, злоумышленник получает доступ к развёрнутым в production приложениям. Это означает, что тысячи конечных пользователей скомпрометированных систем могут оказаться под угрозой утечки данных и несанкционированного доступа.
Рекомендации для разработчиков и специалистов по безопасности
Для предотвращения подобных инцидентов эксперты рекомендуют ряд мер. Разработчикам следует тщательно проверять зависимости на предмет типоскваттинга, обращая внимание на незначительные опечатки в названиях, подозрительных авторов и аномально низкое количество загрузок. Важно декомпилировать подозрительные пакеты для поиска маркеров обфускации, таких как атрибут "[SuppressIldasm]" или статические конструкторы со сложной логикой. Следует насторожиться, если простое добавление директивы "using" приводит к выполнению кода. Также необходимо мониторить нестандартные сетевые подключения к localhost, например, на порту 7152.
Командам безопасности рекомендуется внедрять автоматическое сканирование зависимостей в конвейерах CI/CD. Следует блокировать пакеты, которые манипулируют JIT-компилятором или используют многоуровневую обфускацию. Ключевыми индикаторами компрометации являются жёстко заданные токены аутентификации, отсутствие конфигурируемости сетевых endpoints и запуск процессов с флагом "CreateNoWindow". Реализация поведенческого мониторинга, отслеживающего постоянные подключения к нестандартным портам на localhost, также поможет в обнаружении подобных угроз.
Обнаружение этой кампании подчёркивает растущую сложность атак на цепочки поставок. Злоумышленники переходят от простого внедрения вредоносного кода к созданию сложных, многоэтапных систем, которые маскируются под легитимные инструменты разработки. Внимание к безопасности зависимостей на всех этапах жизненного цикла ПО становится не просто рекомендацией, а критической необходимостью.
Индикаторы компрометации
SHA256
- 44f3766323d813752e9ec879edf17a284f5ed971f814777f18f5e8f83c1ff5ba
- 6d64d0ca9b3262eb00396e2c441a389fb748b750a3f16b8d086456cc3364d397
- 7c1a9a681411c528ee2bd291450d955f9d599a03cf34a530d9c526451c63c0aa
- c2ac85bcbf38c6a4e1b4ba971742f126eb0deaf486b7bd396858d98a3773de73
Malicious Packages
- NCryptYo
- DOMOAuth2_
- IRAOAuth2.0
- SimpleWriter_
Threat Actor Identifiers
- hamzazaheer
Hardcoded Credentials
- Auth token: 9ujkh@(ik#@!mpoid-0ePpasj@onbxwWmi@lllmcoPiKe:Wc_/pz[cb&#[KW6Dk_-mf&j!fKU.W/*n6/rLLXYPm%D6u