Приманка в виде тестового задания: кампания PolinRider получила полный контроль над рабочей станцией за три часа

APT

В конце августа 2026 года крупная международная компания из списка Fortune 500 развернула подставную рабочую станцию и стала ждать. Приманка сработала примерно через три часа. Злоумышленник нашёл её, вступил в контакт и провёл полное вторжение. Наблюдение длилось почти 167 часов, с 27 августа по 3 сентября. Работа оператора шла в реальном времени. Площадку полностью контролировали и оснастили средствами мониторинга. Получен не набор сигнатур и не пересказ чужого отчёта. Зафиксирована живая последовательность действий за клавиатурой.

Описание

Поведение совпадает с кампанией PolinRider. Это операция по компрометации цепочки поставок в открытых репозиториях, связанная с КНДР. Активность приписывают кластеру Contagious Interview и группировке Famous Chollima. Обе входят в состав группы Lazarus и пересекаются с деятельностью APT37. Уверенность в атрибуции умеренная. Основания - модель приманки, загрузчик WinosStager, программа для кражи информации семейств XFiles и OmniStealer. Сюда же относится повторное использование ранее описанной инфраструктуры. Кампания рассчитана прежде всего на разработчиков и инженеров сборки.

Подставной сотрудник играл роль менеджера по продукту в международной туристической компании. Организация-приманка насчитывала более двух с половиной тысяч рабочих станций и две тысячи пользователей. Все они работали в среде Microsoft Active Directory. Злоумышленник уговорил сотрудника запустить заражённый пакет под видом тестового задания для трудоустройства. Кампания, описанная Socket в середине 2026 года, построена на той же схеме. Кандидату предлагают решить учебную задачу. Вместе с задачей в его рабочей среде запускается вредоносный код. Инструментами доставки выступили пакет для Python из открытого реестра и временный репозиторий с заданием. Такой приём группа использует регулярно.

Первый этап занял меньше минуты. Загрузчик, встроенный в заражённый пакет, обратился к внешнему командному серверу. Следом системная оболочка и утилита для скачивания файлов забрали две полезные нагрузки с анонимного файлообменника. Обе программы записались во временную папку. Их имена напоминали обозначения системных обновлений. Затем загрузчик задействовал публичный репозиторий с исходным кодом как второй канал доставки. Оператор немедленно перезагрузил машину. Так он закрепился и сбросил состояние системы. Через полчаса он обратился к системному хранилищу паролей. Ещё через два часа в папке загрузок появился архив, защищённый паролем. Скорее всего, его готовили к выносу.

Через три дня оператор вернулся. Теперь он действовал от имени системной учётной записи. Команды он подавал через PowerShell без участия пользователя. Он скрытно установил интерпретатор Python на уровне всей машины. Затем добавил набор библиотек. Они нужны для чтения буфера обмена, снятия снимков экрана и отправки данных по сети. Одновременно появились три независимых механизма закрепления. Все они маскировались под штатный компонент оптимизации среды .NET от Microsoft. Настоящий компонент в системном профиле не размещается. Поэтому такая маскировка хорошо заметна при проверке. Сразу после этого программа для кражи информации начала отправлять данные о рабочей станции на внешний узел. При каждом сеансе она меняла строку идентификации браузера.

Злоумышленника интересовали три вещи: учётные данные, исходный код и криптовалюта. Он обращался к узлам сети Ethereum. Он же использовал инструменты для кражи содержимого буфера обмена и криптокошельков. Ещё одной целью было системное хранилище паролей. Всё это указывает на одного оператора. Сопоставление внешнего узла, принимавшего данные, связало приманку, рабочую станцию и сборщик информации в единую цепочку. Полный цикл атаки управлялся с одной машины. Он шёл от поддельного задания до сбора сведений.

Такие схемы опасны своей незаметностью. Вредоносный код распространяется через обычные реестры пакетов, которыми пользуются каждый день. Сотрудник видит привычную команду установки. Проверка зависимостей при этом остаётся формальностью во многих командах. Компании экономят время и подключают внешние библиотеки без разбора. Между тем одна заражённая зависимость открывает доступ ко всей среде сборки. Через неё злоумышленник получает ключи доступа, токены и исходный код продуктов. Для организаций это означает риск утечки интеллектуальной собственности. Для сотрудников - риск компрометации личных криптокошельков, поскольку вредоносное ПО ищет и их.

Открытые репозитории давно служат удобным каналом для таких атак. Разработчик или инженер сборки запускает пакет у себя и редко проверяет его происхождение. Поэтому главная мера защиты - контроль зависимостей. Проверять нужно реестры пакетов для разных языков программирования: npm, PyPI, Packagist и Go. Любую машину, где установлен заражённый пакет, следует считать подозрительной до проверки с чистого устройства. Полезно ограничить исходящие соединения. Обращения к нестандартным портам и к публичным адресам по незащищённым протоколам должны вызывать вопросы. Стоит отслеживать и поведение загрузчиков. Речь идёт о запуске внешних утилит для скачивания файлов, скрытой установке интерпретаторов на уровне всей системы, появлении библиотек для работы с буфером обмена на машинах, не предназначенных для разработки. Регулярный аудит задач планировщика и точек автозапуска помогает находить маскировку под системные службы. Двухфакторная аутентификация и своевременное обновление средств защиты остаются базовыми мерами. Пока открытый исходный код лежит в основе современной разработки, цепочка поставок будет приоритетной целью для групп, действующих в интересах государств.

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

Комментарии: 0