Семь месяцев воровали ключи от AWS — и сами оказались жертвой майнера и вымогателей. Карма работает

leer en español

3315
Семь месяцев воровали ключи от AWS — и сами оказались жертвой майнера и вымогателей. Карма работает

Специалисты восстановили всю инфраструктуру кибератак, не взломав ни одной жертвы.

image

Специалисты VulnCheck случайно вышли на целую преступную инфраструктуру, начав проверять подозрительные подключения к своим ловушкам. Сначала в поле зрения попали 27 IP-адресов из одной сети, которые атаковали одну и ту же уязвимость. Дальнейший анализ показал, что за ними скрывался не набор случайных серверов, а организованный кластер для кражи облачных учётных данных.

Отправной точкой стали атаки на CVE-2026-21859 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:N/A:N — 5.8 Medium), уязвимость в Mailpit, инструменте для тестирования электронной почты. Все 27 адресов находились в одной подсети и использовали похожие сертификаты с именами вида pkNN@. По временным меткам удалось проследить активность с ноября 2025 года по апрель 2026 года.

Затем специалисты сопоставили данные с уязвимыми узлами в интернете. Три сетевых признака, связанные с настройками SSH, особенностями ответа TCP и отпечатком TLS на порту kubelet, резко сузили круг поиска. По отдельности такие признаки встречались у тысяч и даже миллионов серверов, но вместе дали всего 21 совпадение по всему миру.

Так удалось найти не только часть уже замеченных атакующих машин, но и два узла, которые ловушки VulnCheck раньше не видели. Один оказался управляющим узлом кластера Kubernetes, который координировал работу, но сам не сканировал цели. Второй, вероятно, был рабочим сервером, который ловушки VulnCheck ещё не замечали.

Изучив подсеть, специалисты нашли 25 одинаковых одностраничных веб-приложений на Vite и React с заголовком MeowProject. Все они использовали один и тот же ключ SSH и совпадали по сетевым признакам с атакующей инфраструктурой. На управляющем узле также обнаружилось приложение Cluster Monitor на порту 30010. Его открытая точка проверки состояния сообщала о подключении к MongoDB.

Проверив дальше, специалисты убедились, что кластер использовал Cilium, сетевой слой для Kubernetes. Операторы явно пытались защитить инфраструктуру. Доступ к kubelet требовал проверки подлинности, интерфейс наблюдения Hubble был закрыт взаимным TLS, а сервер программного интерфейса Kubernetes не был доступен извне.

Главной целью операции, судя по найденным данным, была кража облачных учётных данных. На управляющем узле работал набор портов в диапазоне 20001–20057. При подключении обработчик последовательно отправлял команды для чтения файлов с учётными данными AWS, настроек Git, переменных окружения и данных из служб метаданных Amazon EC2 и ECS/Fargate.

Каждый шаг завершался маркером вида _*HP_DONE*<hex>. VulnCheck считает этот шаблон полезным индикатором компрометации. Его можно искать в сетевом трафике и данных с конечных устройств, поскольку конкретный шестнадцатеричный суффикс менялся, но сама структура маркера сохранялась.

Логика атак хорошо совпадала с набором используемых уязвимостей. Инфраструктура атаковала Gravity SMTP, LiteSpeed Cache, Laravel, PHPUnit, Mailpit и маршрутизаторы Cisco RV320. За исключением сетевого оборудования Cisco, все перечисленные продукты часто встречаются в средах разработки, на облачных серверах и в контейнерах, где могут храниться ключи доступа к облачным сервисам.

Самая ироничная часть истории обнаружилась позже. Среди узлов той же подсети нашлись два сервера, связанные с продуктом Diony для управления рестораном и клиентским сервисом Soka. В открытом доступе о такой компании почти не было следов, а на серверах работали MongoDB и Redis без проверки подлинности.

Один Redis-сервер хранил 15 активных хешей токенов обновления пользовательских сеансов. Второй уже использовал посторонний майнер. Злоумышленники записали задания в Redis так, чтобы закрепиться через планировщик задач, а процесс майнера замаскировали под kworker, название, похожее на служебные процессы ядра Linux.

MongoDB тоже уже успели взломать. В базе лежала записка с требованием выкупа в 0,0068 BTC. Через пять дней требование обновили до 0,0074 BTC, но из-за падения курса биткоина сумма в долларах даже немного снизилась.

По версии VulnCheck, атакующая инфраструктура пыталась получать обратные командные оболочки на взломанных серверах и перенаправлять их на управляющий узел. Операторские панели, вероятно, показывали новые подключения, украденные учётные данные и состояние всей сети. Библиотека socket.io в клиентской части указывала на то, что события поступали в реальном времени, без постоянного ручного обновления интерфейса.

Вся подсеть исчезла 8 июня 2026 года. Специалисты продолжили искать похожие сертификаты и совпадения по тем же сетевым отпечаткам, но новых следов пока не нашли. По их оценке, история показывает, как сочетание данных с ловушек и внешнего сканирования позволяет восстановить инфраструктуру преступной операции, не трогая жертв и не подключаясь к их системам.