Операция PCPcat: разоблачение воров учетных данных, скомпрометировавших уже 59 тысяч серверов Next.js

information security

Исследователи кибербезопасности обнаружили широкомасштабную кампанию, получившую название Operation PCPcat. В рамках этой кампании злоумышленники целенаправленно крадут конфиденциальные данные из развертываний Next.js. Используя активные исследования через сеть ловушек (honeypot), специалистам удалось получить доступ к API центра управления (Command and Control, C2) злоумышленников. В результате были раскрыты тревожные операционные показатели: подтверждено 59 128 скомпрометированных серверов при успешности атак в 64,6%. Данная кампания наглядно демонстрирует, как сегодня выглядит промышленный масштаб хищения учетных данных, и показывает пути для его обнаружения.

Описание

Кампания PCPcat была выявлена при мониторинге Docker-ловушки. Атака основана на эксплуатации уязвимостей в Next.js/React и сочетает несколько опасных техник. Во-первых, для удаленного выполнения кода (Remote Code Execution, RCE) используются уязвимости CVE-2025-29927 и CVE-2025-66478. Во-вторых, происходит систематическое извлечение учетных данных и другой чувствительной информации. В-третьих, на скомпрометированных системах устанавливается инфраструктура C2 для обеспечения устойчивости (persistence) и туннелирования трафика. Управление всей сетью осуществляется через API-ориентированный центр управления.

Наиболее критичным открытием стала информация, полученная в результате прямой разведки активного C2-сервера. Статистика подтвердила, что менее чем за 48 часов кампания успешно скомпрометировала 59 128 серверов. Высокий процент успеха в 64,6% указывает на эффективность используемых эксплойтов и масштабность сканирования. Вся операция демонстрирует признаки крупномасштабной разведывательной кампании по извлечению данных в промышленных объемах.

Атака начинается с массового сканирования публично доступных доменов Next.js. Вредоносная программа react.py использует сложную цепочку команд для идентификации и эксплуатации уязвимостей. После первоначальной проверки уязвимости с помощью команды "id" происходит эксплуатация CVE-2025-29927 и CVE-2025-66478. Эти специфичные для Next.js уязвимости позволяют выполнить команду через манипуляцию JSON-полезной нагрузкой с прототипным загрязнением (prototype pollution) и инъекцию команд в "child_process.execSync()". Результаты затем извлекаются через перенаправление HTTP-заголовков.

После подтверждения уязвимости вредоносная программа приступает к систематическому поиску и извлечению чувствительных данных. В приоритете находятся файлы окружения, такие как ".env", ".env.local", ".env.production" и ".env.development". Также извлекаются системные переменные окружения, SSH-ключи из "~/.ssh/", облачные учетные данные из "~/.aws/credentials" и "~/.docker/config.json", учетные данные Git и история команд bash. В некоторых случаях программа пытается получить доступ к критическим системным файлам, таким как "/etc/shadow" и "/etc/passwd".

Для обеспечения долгосрочного доступа кампания PCPcat устанавливает на скомпрометированные системы полноценную инфраструктуру C2. С помощью команды загрузки и выполнения скрипта "proxy.sh" устанавливаются несколько компонентов. Во-первых, это GOST v2.12.0, SOCKS5-прокси на localhost:1080, используемый для туннелирования злонамеренного трафика. Во-вторых, FRP (Fast Reverse Proxy) v0.52.3, который создает исходящее соединение с C2 для обратного туннелирования и доступа к локальным сервисам. В-третьих, сканер React, который в бесконечном цикле запрашивает у C2 новые цели для атаки, поддерживая активность скомпрометированной машины в ботнете. Для обеспечения устойчивости создаются службы systemd с авто-перезапуском, что позволяет вредоносному ПО сохраняться после перезагрузки системы.

Инфраструктура управления кампанией базируется на сервере с IP-адресом 67.217.57[.]240, географически расположенном в Сингапуре. Сервер использует несколько портов для разных функций: порт 666 для раздачи полезных нагрузок, порт 888 для сервера FRP и порт 5656 для основного API C2. Программный отпечаток сервера указывает на использование Python 3.12.3.

API центра управления, доступный по адресу "http://67.217.57[.]240:5656", отличается простотой и отсутствием какой-либо аутентификации, что упрощает его анализ. Ключевые конечные точки включают в себя "GET /domains?client=<ID>", которая выдает сканирующим узлам пакеты по 2000 IP-адресов для атаки. Конечная точка "POST /result" принимает похищенные данные в формате JSON без какой-либо валидации, всегда отвечая статусом 200 OK. Наиболее информативной оказалась конечная точка "GET /stats", которая в реальном времени раскрывает операционную статистику кампании, включая общее количество сканирований и успешных компрометаций. Простая проверка работоспособности доступна через "GET /health".

Полный конвейер извлечения данных работает по четкому алгоритму. Сканирующий узел запрашивает цели через API. Для каждого IP-адреса в пакете он пытается эксплуатировать уязвимость CVE-2025-29927. Если RCE подтверждается, происходит извлечение файлов ".env", системных переменных, SSH-ключей, учетных данных AWS, Docker, Git и истории команд. Все данные упаковываются и отправляются на C2 через "POST /result". При наличии доступа на сервере развертывается постоянная инфраструктура C2 для туннелирования и устойчивости.

В ловушке также был зафиксирован вектор атаки через уязвимый Docker API. Злоумышленники пытались создать контейнер с образом Alpine Linux, который при запуске автоматически загружал и выполнял скрипт "proxy.sh". Это превращало контейнер в новый узел ботнета, открывая возможности для перемещения по сети (pivoting).

Кампания PCPcat служит тревожным напоминанием о критической важности своевременного обновления зависимостей, особенно в таких популярных фреймворках, как Next.js. Организациям, использующим подобные технологии, необходимо усилить мониторинг необычной сетевой активности, неавторизованных процессов и попыток доступа к файлам с учетными данными. Обнародованные индикаторы компрометации (Indicators of Compromise, IoCs), включая IP-адреса C2, сигнатуры файлов и сетевые правила для систем обнаружения вторжений (IDS), позволяют начать активный поиск угроз в собственных инфраструктурах.

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

IPv4 Port Combinations

  • 67.217.57.240:5656
  • 67.217.57.240:666
  • 67.217.57.240:888

URLs

  • http://67.217.57.240:5656/domains
  • http://67.217.57.240:5656/health
  • http://67.217.57.240:5656/result
  • http://67.217.57.240:5656/stats
  • http://67.217.57.240:666/files/proxy.sh
  • http://67.217.57.240:666/files/react.py

YARA

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