Lazarus Group использует словарные файлы VS Code для скрытой доставки вредоносного кода в кампании Contagious Interview

APT

Группировка Lazarus, действующая при поддержке Северной Кореи, разработала новую модификацию кампании Contagious Interview. Вредоносное программное обеспечение размещается в конфигурационных файлах редактора Visual Studio Code (VS Code) и маскируется под безобидный словарь проверки орфографии. Метод нацелен на разработчиков, которые в рамках фиктивных собеседований или тестовых заданий загружают репозитории с кодом. При открытии такого проекта в VS Code срабатывает автоматическая задача, запускающая многоступенчатый дроппер.

Описание

Первичным вектором заражения служит файл tasks.json, размещённый в каталоге .vscode репозитория. Редактор VS Code поддерживает механизм задач, которые могут выполняться при открытии папки (событие runOn: folderOpen). Злоумышленники настраивают задачу таким образом, что она запускается каждый раз, когда пользователь открывает проект в редакторе. Этот подход обеспечивает не только первичное заражение, но и повторное выполнение вредоносного кода после каждого перезапуска VS Code.

Новым элементом кампании стал резервный файл-дроппер с именем .vscode/spellright.dict. Данный файл имитирует пользовательский словарь популярного расширения SpellRight, однако вместо списка слов содержит более шести килобайт сильно обфусцированного JavaScript. Само расширение SpellRight не скомпрометировано: злоумышленники лишь используют его название для снижения подозрений. Файл имеет размер, типичный для словарей, но его содержимое - полноценный скрипт. Как показал [анализ] команды OpenSourceMalware, в нём применяются несколько слоёв обфускации: строки хранятся в массиве с доступом через шестнадцатеричные смещения, массив перемешивается во время выполнения, имена переменных заменены на бессмысленные комбинации с префиксом _0x.

После деобфускации становится ясна логика работы дроппера. Первый этап создаёт в домашней директории пользователя скрытую папку с именем Programs_X64 - такое название выбрано для маскировки под стандартный каталог программ Windows. Затем скрипт записывает в эту папку второй этап - файл main.js, который устанавливает связь с сервером управления (C2). Адрес C2 - ip-regions-check.vercel.app, размещённый на платформе Vercel. Выбор этой площадки не случаен: домены Vercel широко используются и редко блокируются, серверная часть поддерживает HTTPS, а развёртывание происходит быстро и без привязки к конкретному лицу. Вредоносный запрос использует кастомный заголовок x-secret-header: secret для аутентификации и включает идентификатор кампании 3aeb34a38, позволяющий отслеживать жертв.

Ключевой опасностью является строка eval(response.data) в коде main.js. Она позволяет выполнять произвольный JavaScript, поступающий от C2-сервера, без каких-либо ограничений. Атакующий получает полный удалённый доступ к файловой системе, возможность запускать процессы, считывать переменные окружения и загружать дополнительные модули. Ошибки при выполнении скрываются - блок catch возвращает false, что затрудняет обнаружение сбоев.

Третий этап обеспечивает закрепление в системе и запуск бэкдора. Для Windows используется команда PowerShell с параметром WindowStyle Hidden, которая инициализирует npm, устанавливает пакеты axios, request и sqlite3, а затем запускает main.js в фоновом режиме с перенаправлением вывода в app.log. Для Linux и macOS применяется аналогичная последовательность через bash с nohup, что позволяет процессу выживать после закрытия терминала. Установленные пакеты являются легитимными: axios и request нужны для HTTP-коммуникации, а sqlite3 - для работы с базами данных при последующих командах.

При обращении к C2-серверу злоумышленники отдают финальную полезную нагрузку, объём которой достигает полутора мегабайт JavaScript, свёрнутого в одну строку. Этот код содержит шесть уровней обфускации, включая шифрование строк алгоритмом RC4 с индивидуальными ключами, Base64-кодирование, перемешивание массива во время выполнения и анти-отладочные проверки на основе регулярных выражений. Такая защита делает статический анализ практически невозможным и затрудняет работу автоматических песочниц.

Целевой аудиторией кампании остаются разработчики, особенно работающие в сферах криптовалют, блокчейна и финансовых технологий. По оценкам Chainalysis, северокорейские хакеры в прошлом году похитили около двух миллиардов долларов США. Доступ к системам инженеров позволяет похищать закрытые ключи криптокошельков, получать доступ к инфраструктуре бирж и похищать интеллектуальную собственность. Новая техника с использованием VS Code снижает необходимость в ручном вмешательстве: автоматическое выполнение задач делает атаку более надёжной и менее зависимой от действий жертвы.

Разработчикам рекомендуется проявлять осторожность при работе с репозиториями, полученными от незнакомых лиц в рамках собеседований или фриланс-проектов. Перед открытием проекта в VS Code следует проверять содержимое каталога .vscode на наличие файлов tasks.json и нестандартных словарей. Корпоративные среды могут использовать политики безопасности, запрещающие автоматический запуск задач, а также инструменты анализа цепочек поставок, способные выявлять подобные аномалии.

Данный случай подтверждает тенденцию к усложнению атак Lazarus Group, которые всё глубже проникают в инструментарий разработчиков и используют доверенные платформы вроде Vercel для размещения компонентов управления. Эволюция кампании Contagious Interview демонстрирует, что злоумышленники адаптируются к усилению защиты и продолжают искать новые, менее заметные способы доставки вредоносного кода.

Индикаторы компрометации

IPv4

  • 146.70.41.188

Domain

  • ip-regions-check.vercel.app

URL

  • https://ip-regions-check.vercel.app/api/ip-check-encrypted/3aeb34a38
Комментарии: 0