В отрасли энергетики, коммунальных услуг и переработки отходов зафиксирована сложная целевая атака, связанная с северокорейскими государственными хакерами. Её главным инструментом стал новый удалённый троян, который не только похищает криптовалюту, но и крадёт исходный код, учётные данные разработчиков и токены доступа к облачной инфраструктуре. Этот инцидент демонстрирует эволюцию тактики APT-групп, которые всё чаще маскируют вредоносное ПО под легитимные проекты с открытым кодом.
Описание
Специалисты Threat Response Unit (TRU) компании eSentire в феврале 2026 года обнаружили на компьютере одного из клиентов подозрительную активность, которую с высокой степенью уверенности атрибутировали северокорейской APT-группе. Основанием послужили совпадения тактик, техник и процедур (TTPs) с ранее известными кампаниями, описанными, например, в отчёте Ransom-ISAC. Угроза, получившая название DEV#POPPER, изначально показалась инструментом для кражи криптовалюты, однако дальнейший анализ выявил её более широкие цели, включающие компрометацию цепочки поставок программного обеспечения.
Инцидент начался, когда сотрудник компании-жертвы клонировал с GitHub репозиторий под названием «ShoeVista», замаскированный под платформу электронной коммерции. Запуск фронтенд-приложения активировал скрытый вредоносный скрипт, который через серию промежуточных стадий загружал основную полезную нагрузку. Примечательно, что исходный код самого трояна DEV#POPPER был извлечён не с традиционного командного сервера, а из данных транзакций в блокчейнах Tron и Ethereum, что усложняет его блокировку и анализ. Финальная стадия атаки также разворачивала OmniStealer - похитителя информации на Python, нацеленного на пароли, данные браузеров и кошельки криптовалют.
Атака демонстрирует кросс-платформенность: хотя большинство жертв используют macOS, вредоносное ПО также поддерживает Windows и Linux. Это расширяет потенциальный круг целей и усложняет защиту гетерогенных ИТ-сред. Технический анализ показал высокую степень обфускации кода на всех этапах. Первые стадии, написанные на JavaScript, использовали сложные методы запутывания, включая шифрование строк алгоритмом RC4, их хранение в перемешанных массивах и множество косвенных вызовов функций для сокрытия логики.
Для противодействия анализу DEV#POPPER применяет несколько техник. Во-первых, код вызывает ошибки в отладчике Node.js в своём исходном минифицированном виде. Во-вторых, реализована проверка целостности с помощью регулярных выражений: если код был отформатирован (beautified), запускается бесконечный цикл. В-третьих, используется регулярное выражение, вызывающее катастрофический backtracking, что «зависает» отладчик. Кроме того, вредоносное ПО проверяет окружение на наличие признаков анализа: имена хостов, связанные с облачными провайдерами (AWS, Azure, GCP), системами CI/CD (GitHub Actions, Jenkins), контейнерами (Docker) или песочницами для анализа malware. При обнаружении таких признаков выполнение прекращается.
После успешного запуска троянец устанавливает постоянное соединение с командным сервером с помощью библиотеки socket.io-client и начинает выполнять команды. Среди них - сбор системной информации, геолокации по IP, содержимого буфера обмена, загрузка файлов и директорий на сервер злоумышленников, а также выполнение произвольного JavaScript-кода, отправляемого с C2. Для обеспечения устойчивости в системе DEV#POPPER внедряет свой код в файлы популярных приложений, использующих Node.js, таких как Visual Studio Code, GitHub Desktop и Discord. При запуске этих легитимных программ активируется и скрытая вредоносная функциональность.
Параллельно запускаемый OmniStealer проводит масштабный сбор конфиденциальных данных. Его цели обширны: пароли, история, cookies и данные крипто-расширений из браузеров (Chrome, Edge, Firefox); файлы настольных кошельков для Bitcoin, Ethereum, Solana и других криптовалют; учётные данные Git; пароли из диспетчера учётных данных Windows, связки ключей macOS и GNOME Keyring Linux; а также файлы облачных хранилищ (Dropbox, OneDrive, iCloud). Все собранные данные архивируются в защищённый ZIP-архив и отправляются на командный сервер по HTTP или, в качестве запасного варианта, через Telegram.
Для помощи сообществу специалисты eSentire разработали и открыли инструмент «DEV#STOPPER.js» для автоматической деобфускации промежуточных стадий и финальных нагрузок, подобных DEV#POPPER. Этот скрипт, работающий на основе парсера Babel, позволяет восстановить исходную логику кода, облегчая его анализ и понимание механики атаки.
Данный инцидент служит серьёзным напоминанием об угрозах, связанных с цепочкой поставок программного обеспечения. Атака началась с клонирования репозитория, который на первый взгляд выглядел безобидным проектом. Организациям, особенно в критически важных отраслях, необходимо ужесточить политики контроля за использованием открытого кода, внедрять решения для анализа безопасности программных компонентов (SCA) и обучать разработчиков основам кибергигиены. Для индивидуальных разработчиков рекомендации включают тщательную проверку репозиториев перед клонированием, использование двухфакторной аутентификации на GitHub и никогда - хранение чувствительных данных, таких как API-ключи или токены доступа, в переменных окружения или конфигурационных файлах проектов. Борьба с такими сложными угрозами требует сочетания технических средств, постоянного мониторинга и повышения осведомлённости всех участников процесса разработки.
