ShadowV2: Новый ботнет для DDoS-атак в аренду объединяет Python, Go и Docker

botnet

Компания Darktrace в ходе последнего расследования раскрыла новую киберпреступную кампанию, получившую название ShadowV2. Эта кампания примечательна тем, что сочетает в себе традиционное вредоносное программное обеспечение с современными технологиями разработки и эксплуатации приложений (DevOps). ShadowV2 представляет собой сложную платформу для организации распределённых атак типа «отказ в обслуживании» (DDoS) по модели «киберпреступность как услуга» (Cybercrime-as-a-Service). Её инфраструктура напоминает легитимное облачное приложение, что усложняет обнаружение и подчёркивает необходимость для защитников усиливать мониторинг облачных рабочих нагрузок, контейнерной оркестрации и активности API.

Описание

Основой кампании является Framework командования и управления (Command-and-Control, C2), написанный на Python и размещённый на платформе GitHub CodeSpaces. Для первоначального проникновения злоумышленники используют распространитель (spreader) на Python, который реализует многоэтапное развёртывание через Docker. После компрометации системы на неё устанавливается троян удалённого доступа (Remote Access Trojan, RAT), созданный на языке Go. Этот RAT использует RESTful механизм регистрации и опроса, что позволяет исполнять команды и поддерживать связь с операторами.

Уникальность ShadowV2 заключается в сложности используемых им инструментов. Злоумышленники применяют такие передовые методы, как быстрая перезагрузка HTTP/2, обход режима Cloudflare Under Attack Mode (UAM) и крупномасштабные HTTP-флуды. Это демонстрирует их способность сочетать различные DDoS-техники с целенаправленным использованием уязвимостей. Наличие спецификации OpenAPI, реализованной с использованием FastAPI и Pydantic, а также полноценной панели входа и интерфейса оператора указывает на то, что инфраструктура больше похожа на платформу «DDoS-as-a-Service», чем на традиционную бот-сеть. Это подчеркивает тенденцию, при которой современное вредоносное ПО все чаще копирует дизайн и удобство легитимных облачных приложений.

Первоначальное проникновение начинается с Python-скрипта, размещённого в GitHub CodeSpaces, что подтверждается заголовками запросов, такими как "User-Agent: docker-sdk-python/7.1.0" и "X-Meta-Source-Client: github/codespaces". Кампания нацелена на экспонированные демоны Docker, в частности, работающие на AWS EC2. В отличие от многих других атак, которые используют готовые образы из Docker Hub, злоумышленники применяют иной подход: сначала создаётся универсальный контейнер на основе Ubuntu, внутри которого устанавливаются необходимые инструменты, а затем этот контейнер используется как образ для развёртывания живого контейнера с вредоносными аргументами, передаваемыми через переменные окружения. Возможно, такой метод выбран для того, чтобы избежать оставления forensic артефактов на своих собственных системах.

Docker-контейнер выступает в роли обёртки для одного бинарного файла, размещаемого в "/app/deployment". Это ELF-бинарник, написанный на Go, который не был лишён символов отладки, что облегчило анализ. Текущая версия вредоносной программы не была обнаружена системами OSINT, такими как VirusTotal. Используя доменное имя из переменной "MASTER_ADDR" и другие индикаторы компрометации (IoC), исследователи Darktrace обнаружили две более ранние версии вредоносного ПО, загруженные в VirusTotal 25 июня и 30 июля соответственно. Ни одна из них не имела срабатываний антивирусов, что может указывать на то, что файлы были загружены жертвой атаки или самими злоумышленниками для проверки детектирования.

Вредоносная программа начинает работу с «звонка домой», используя идентификаторы "MASTER_ADDR" и "VPS_NAME", переданные через переменные окружения Docker. Она генерирует уникальный "VPS_ID" (имя хоста, сконкатенированное с текущей меткой времени Unix), который используется для всех последующих коммуникаций с C2-сервером. Если malware перезапускается, сервер сообщает импланту его оригинальный "VPS_ID" для обеспечения преемственности. Затем программа запускает два основных цикла: каждую секунду отправляется «сердцебиение» (heartbeat) на эндпоинт "/api/vps/heartbeat", а каждые 5 секунд опрашивается эндпоинт "/api/vps/poll/<VPS ID>" на предмет новых команд.

Чтобы изучить функциональность, исследователи Darktrace создали специальный клиент, который имитировал поведение импланта на зараженном сервере. Это позволило им перехватить команды от C2. Было зафиксировано начало атаки на целевой домен с использованием атаки быстрого сброса HTTP/2 с 120 потоками. Анализ кода показал, что команды содержат такие поля, как метод (GET/POST), уникальный идентификатор атаки, URL для отчетности по статистике, цель атаки, продолжительность атаки, количество потоков и дополнительный прокси.

Вредоносное ПО создает несколько потоков, каждый из которых запускает настраиваемое количество HTTP-клиентов с использованием библиотеки fasthttp для выполнения высокопроизводительных HTTP-запросов и организации HTTP-флуда. Кроме того, программа поддерживает несколько флагов для включения различных механизмов обхода защиты, в том числе обхода режима UAM Cloudflare. Когда этот флаг активирован, вредоносное ПО пытается использовать встроенный бинарный файл ChromeDP для решения задачи JavaScript Cloudflare и получения cookie, который затем включается в последующие запросы, хотя на практике этот метод часто оказывается неэффективным против современных систем защиты. Флаг для атак быстрого сброса HTTP/2 позволяет использовать уязвимость в мультиплексировании HTTP/2, когда клиент создает и сразу же отменяет тысячи запросов в одном соединении, значительно увеличивая нагрузку на сервер.

C2-сервер, расположенный за Cloudflare, использует HTTP для коммуникации. Анализ ошибок, возвращаемых при отправке некорректных запросов, показал использование библиотеки Pydantic, что указывает на написание API на Python. Изначально авторы оставили публично доступной документацию Swagger UI на основе OpenAPI спецификации, которую удалось получить исследователям. Документация подробно описывает все эндпоинты API, включая поля запросов и ответов, а также комментарии самих злоумышленников. Это подтвердило, что платформа предназначена для многопользовательского использования: в API присутствует система аутентификации, разграничение прав доступа (администратор vs пользователь) и лимиты на типы атак. Наличие эндпоинтов для управления чёрным списком недоступных для атак хостов может указывать как на защиту собственной инфраструктуры авторов, так и на возможную модель продажи «защиты» жертвам, что ранее наблюдалось в других DDoS-сервисах.

Попытка посещения основного домена приводит к показу фейкового уведомления о конфискации, однако доступ к панели управления по пути "/login" остаётся активным. Интерфейс панели высокого качества, написан с использованием фреймворка Tailwind и включает анимации, описывая себя как «передовую платформу для атак», что окончательно подтверждает её nature как сервиса по найму для DDoS-атак.

уведомление

Использование контейнеризации, расширяемых API и полнофункционального пользовательского интерфейса в кампании ShadowV2 ясно демонстрирует продолжающуюся эволюцию модели «киберпреступность как услуга». Возможность предоставлять модульную функциональность через RAT на основе Go и предоставлять структурированный API для взаимодействия с оператором подчеркивает высокий уровень сложности современных злоумышленников. Для защитников последствия этого значительны: эффективная защита требует глубокого понимания контейнерных сред, постоянного мониторинга облачных рабочих нагрузок и поведенческого анализа, способного обнаруживать аномальное использование API и шаблоны оркестрации контейнеров. Наличие полнофункциональной панели управления DDoS-as-a-Service подчеркивает необходимость рассматривать такие кампании не как изолированные инструменты, а как развивающиеся платформы, которые постоянно адаптируются к защитным мерам.

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

IPv4

  • 23.97.62.136
  • 23.97.62.139

Domains

  • shadow.aurozacloud.xyz

SHA256

  • 1b552d19a3083572bc433714dfbc2b75eb6930a644696dedd600f9bd755042f6
  • 1f70c78c018175a3e4fa2b3822f1a3bd48a3b923d1fbdeaa5446960ca8133e9c
  • 2462467c89b4a62619d0b2957b21876dc4871db41b5d5fe230aa7ad107504c99

Yara

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