Вредонос TeamPCP уничтожает Kubernetes-кластеры в Иране
Группировка TeamPCP использует новый вредонос, который не просто похищает пароли или устанавливает бэкдоры, а уничтожает целые Kubernetes-кластеры. Как уточнил обнаруживший новое вредоносное ПО исследователь Чарли Эриксен, оно действует избирательно, с привязкой к целям по признаку их расположения.
TeamPCP известна с конца 2025 года и специализируется на облачных атаках: неправильно настроенные Docker API, Kubernetes-кластеры, CI/CD-пайплайны. Компрометация Trivy и кампания CanisterWorm показали, что группа умеет работать на уровне supply chain.
В рамках этой атаки скрипт использует тот же ICP-канистер, что и в кампании CanisterWorm. Адрес так же остался прежним: tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io. Аналогичным образом не изменились командный сервер, код бэкдора и путь сброса файлов. Однако появилась деструктивная нагрузка, адаптированная конкретно под иранские системы.
Вредонос проверяет часовой пояс системы и языковые настройки, а также ищет Asia/Tehran, Iran или локаль fa_IR. При обнаружении включается режим уничтожения. Если искомое не обнаружено, ПО устанавливает бэкдор для долгосрочного доступа. Четыре сценария в зависимости от типа системы и географии.
В Kubernetes-кластерах, которые соответствуют критериям, разворачивается DaemonSet с названием host-provisioner-iran. Внутри находится контейнер kamikaze, который монтирует корень хоста, удаляет всё содержимое и форсирует перезагрузку. DaemonSet запускается на каждом узле, включая control plane. Выполнение одной команды kubectl apply приводит к уничтожению целого кластера.
Для неиранских Kubernetes-кластеров вредоносное ПО применяет более мягкий подход. Устанавливается DaemonSet host-provisioner-std, который распространяет бэкдор CanisterWorm на все узлы через systemd-сервис. Бэкдор связывается с ICP-канистрами каждые 50 минут, получает URL исполняемого файла и запускает их, согласно полученным указаниям. Предусмотрена возможность kill-switch через домен youtube.com.
На расположенных в Иране серверах без Kubernetes выполняется rm -rf / --no-preserve-root. Если есть root, вредоносное ПО также удаляет всё содержимое. При отсутствии root выполняет попытка удаления через sudo, а далее всё равно уничтожаются все доступные данные. На неиранских серверах без Kubernetes вредонос не выполняет каких-либо действий.
Исследователь зафиксировал три версии ПО. Первая загрузилась с souls-entire-defined-routes.trycloudflare.com, вторая — с investigation-launches-hearings-copying.trycloudflare.com. Третья появилась на championships-peoples-point-cassette.trycloudflare.com и обладает способностью распространяться самостоятельно. Последняя версия вредоносного ПО работает без привязки к Kubernetes и получила функции червя. Она имеет два вектора распространения. Первый — кража SSH-ключей, для чего вредонос парсит /var/log/auth.log и /var/log/secure и копирует успешные логины с IP-адресами и именами пользователей. Далее он собирает все приватные ключи из ~/.ssh/ и пытается установить соединение с найденными хостами.
Второй вектор атаки — эксплуатация открытых Docker API на порту 2375. Червь сканирует локальную подсеть и создаёт привилегированные контейнеры с монтированием корневой файловой системы. Оба метода доставляют ту же полезную нагрузку, которая снова проверяет часовой пояс и далее действует по обстановке. Вредоносное ПО маскируется под PostgreSQL. Сервис называется pgmonitor и содержит описание Postgres Monitor Service. Файлы расположены в /var/lib/pgmon/, процессы называются pglog и pg_state. Ранние версии использовали имя internal-monitor и путь /var/lib/svc_internal/.