APT-группировка из КНДР использует троянский Terraform для доставки кроссплатформенного вредоноса
Троянский Terraform-провайдер доставляет кроссплатформенный бэкдор
В июле 2026 года исследователи Zscaler ThreatLabz обнаружили кампанию, связанную с группировкой TraderTraitor. Эта APT-группировка, поддерживаемая правительством КНДР, годами нацеливалась на индустрию криптовалют. Кампания также значительно пересекается с инцидентом KelpDAO, где использовались семейства вредоносных программ FLATROOF и ROOFDECK. Злоумышленники использовали троянизированный Terraform-провайдер для доставки Bash-загрузчика. Загрузчик выбирал и скачивал вредоносное ПО, адаптированное под операционную систему жертвы. Вредонос FLATROOF разворачивал Python-скрипты для кражи конфиденциальных данных, а затем устанавливал бэкдор ROOFDECK для получения полного удаленного контроля.
Троянский провайдер запускает вредоносный код при загрузке Terraform
Первоначальный вредоносный файл, обнаруженный ThreatLabz, написан на Go и называется terraform-provider-awsbeta_v1.0.0. Он маскируется под провайдер Amazon Web Services (AWS) для HashiCorp Terraform. Провайдеры Terraform — это исполняемые плагины, которые Terraform загружает для взаимодействия с платформами и сервисами инфраструктуры. Хотя способ доставки троянизированного провайдера неизвестен, бинарные файлы провайдеров Terraform выполняются на рабочих станциях разработчиков и в системах CI/CD. Это указывает на то, что кампания может быть нацелена на облачных инженеров или разработчиков, использующих Terraform. Вредоносный код выполняется при запуске провайдера Terraform. Провайдер использует файл session.lock в системной временной директории как маркер однократного выполнения. При отсутствии маркера провайдер определяет временную директорию, скачивает вторую стадию загрузки по HTTPS, записывает Bash-загрузчик в файл safari_updater во временной директории, добавляет ему права на выполнение и запускает его как отдельный дочерний процесс. Затем создается файл блокировки для предотвращения повторного выполнения. URL загрузки использует домен-двойник hashicorp-terraform[.]io и путь, имитирующий конечную точку метрик легитимного Terraform-провайдера. При этом провайдер продолжает отвечать как обычно, что может затруднить обнаружение компрометации.
Bash-загрузчик выбирает и расшифровывает кроссплатформенные полезные нагрузки
Загруженный файл safari_updater представляет собой Bash-скрипт, поддерживающий macOS, Linux и Windows с совместимой Unix-подобной оболочкой. Скрипт сопоставляет каждую операционную систему с семейством шрифтов, а каждую архитектуру — со стилем шрифта для формирования имени файла следующей стадии загрузки. Полученное имя файла напоминает обычный файл веб-шрифта, например HiraginoSans-Regular.woff на системе macOS с процессором ARM64. Зашифрованные полезные нагрузки маскируются под файлы шрифтов и скачиваются из общедоступного источника, например, из репозитория GitHub. Полезные нагрузки записываются в пути, похожие на пути к легитимным компонентам приложений. Загрузчик пытается скачать полезную нагрузку из трех источников последовательно: динамический DNS-хост, репозиторий GitHub и сайт, размещенный на Vercel. Использование общедоступного хостинга и URL-путей, напоминающих кэши шрифтов, помогает скрыть вредоносный трафик среди обычного трафика разработчиков и веб-активности. Каждый скачанный файл .woff содержит данные шрифта-приманки, за которыми следуют маркер @@ENDFONT@@ и зашифрованный исполняемый файл. Загрузчик извлекает данные после маркера, декодирует их из Base64 и расшифровывает с помощью AES-256-CBC с ключом PTa3WZPQZAjj55t@. Для максимальной совместимости загрузчик может расшифровать полезную нагрузку через Python, Node.js, Perl или OpenSSL, в зависимости от установленного программного обеспечения. На macOS скрипт удаляет атрибут карантина с помощью команды xattr -d com.apple.quarantine и применяет ad hoc подпись кода перед выполнением.
FLATROOF крадет учетные данные браузера и данные криптокошельков
Расшифрованные полезные нагрузки для macOS, Linux и Windows имеют одинаковую структуру исходного модуля Rust и основную функциональность. ThreatLabz оценивает, что вредоносное ПО соответствует семейству FLATROOF, описанному в инциденте KelpDAO. FLATROOF расшифровывает свою встроенную конфигурацию с помощью ключа u73adF39ZT с PBKDF2-HMAC-SHA256, а затем AES-256-GCM. Конфигурация JSON определяет пути установки, механизмы персистентности, интервалы опроса и каналы связи C2, специфичные для платформы. Проанализированные варианты поддерживают три механизма C2: Telegram Bot API для получения команд и эксфильтрации результатов или файлов, опрос GitHub API с использованием настроенного репозитория и токена, а также HTTP-вебхук, контролируемый злоумышленником, для регистрации и постановки задач. FLATROOF также реализует механизмы персистентности, специфичные для платформы: сервис в Linux, механизм выхода из системы в macOS и значение Run в реестре Windows. Его набор команд поддерживает обнаружение системы, управление процессами и файлами, выполнение команд, загрузку полезных нагрузок, выгрузку данных, управление персистентностью, изменение конфигурации и самоудаление. Встроенные Python-стилеры информации FLATROOF использует Python-скрипты, специфичные для операционной системы, для сбора и упаковки артефактов хоста и браузера в сжатый архив для эксфильтрации. Скрипты для Linux и macOS помещают данные во временный каталог temp/collected_data перед созданием temp/collected_data.zip, тогда как Windows-скрипт архивирует файлы из каталога data в collected_data.zip и удаляет локальные файлы после этого. Все три скрипта нацелены на артефакты профиля браузера, которые могут содержать сохраненные учетные данные, файлы cookie, историю просмотров и данные автозаполнения. Скрипты также включают возможности, специфичные для платформы, для кражи конфиденциальных данных из каждой целевой операционной системы. Windows-скрипт содержит два встроенных нативных полезных нагрузки. Первый — 64-битный исполняемый файл Windows, который декодируется с помощью XOR-ключа 0x37 и внедряется в приостановленный процесс Chromium для восстановления мастер-ключей шифрования. Второй компонент, cookie_copy_tool.exe, копирует данные cookie, когда стандартные операции копирования базы данных не удаются. Многословные комментарии в Python-скрипте, использование эмодзи, повторяющаяся обработка исключений и несогласованные соглашения об именовании указывают на то, что части кода могли быть сгенерированы или изменены с помощью большой языковой модели (LLM).
ROOFDECK использует многоуровневое обнаружение C2
ThreatLabz также идентифицировали варианты ROOFDECK для Windows и macOS, вероятно, связанные с этой кампанией. Наиболее отличительной особенностью ROOFDECK является его устойчивый процесс обнаружения C2. Вредоносное ПО сначала считывает локальный файл конфигурации, замаскированный под легитимный файл приложения. Затем оно может извлечь файл Pastebin, содержащий зашифрованный адрес сервера и RSA-подпись, разделенные символами ||. ROOFDECK проверяет подпись перед расшифровкой и принятием адреса сервера. Это предотвращает использование вредоносным ПО скомпрометированных адресов C2. Вредоносное ПО также может извлекать адрес C2 из метаданных профиля Nostr. Этот многоуровневый подход к обнаружению C2 обеспечивает устойчивость и затрудняет блокировку командно-контрольной инфраструктуры.
Опубликовано в канале 9 октября, 13:07
Каждый материал сайта выходит в канале в тот же момент.
Источник: Zscaler ThreatLabz