Под видом античита: в ПО R0Guard для CS2/CS:GO обнаружен удалённый бэкдор с 14 беззащитными API

information security

Специалисты компании "Хуронг" (Huo Rong) получили жалобы от пользователей на аномальную сетевую активность приложения, позиционируемого как античит для игровых платформ Counter-Strike 2 и Counter-Strike: Global Offensive. Проведённый анализ показал, что программа под названием R0Guard на деле содержит полнофункциональный бэкдор, предоставляющий неавторизованный удалённый доступ к заражённой системе. Разработчик реализовал модуль удалённого управления, который через обратный туннель FRP (Fast Reverse Proxy) выставляет локальный порт 54425 в публичную сеть. Злоумышленник может отправлять произвольные HTTP-запросы на этот порт, причём 14 из 63 выявленных API-интерфейсов не требуют никакой аутентификации.

Описание

Программа распространяется через официальный сайт сообщества CS2/CS:GO как средство борьбы с нечестными игроками. Установщик пытается убедить пользователя обойти защиту браузера, заявляя, что файл якобы безопасен. Ключевой модуль R0Guard защищён полной виртуализацией VMProtect 3.x, что превращает его код в последовательность инструкций виртуальной машины и сильно затрудняет статический анализ. Однако динамическая проверка подтвердила наличие HTTP-сервера с 63 эндпоинтами.

После запуска R0Guard.exe создаёт HTTP-службу на адресе 127.0.0.1:54425, используя библиотеку cpp-httplib. Одновременно с этим запускается встроенный клиент FRP версии 0.65.0, подписанный действительным EV-сертификатом издателя. Он считывает жёстко прописанные параметры конфигурации - адрес сервера "local-api-direct.r0csgo[.]com:20046", токен аутентификации "nEF3B3bmJgmntR0CeIEJWyHAr3lwGA62" и устанавливает обратный HTTP-прокси. В результате порт 54425, изначально доступный только локально, становится открытым через интернет по адресу вида "https://<уникальный_идентификатор>.local-api-direct.r0csgo.com:20046". При каждом запуске файл конфигурации FRP записывается во временную папку со случайным именем, после чего удаляется, не оставляя следов на диске.

Анализ безопасности API выявил два класса интерфейсов. Панельные API (49 штук) защищены паролем: после ввода пароль хешируется алгоритмом SHA256, затем через функцию, защищённую VMP, генерируется параметр sign и отправляется на удалённый сервер "api.r0csgo.com/v2/auth/check_pass". При успешной проверке сервер выдаёт сессионный токен. Однако обойти эту защиту можно простой модификацией памяти - заменой трёх байтов на "B0 01 C3" (mov al, 1; ret). После этого все 49 панельных интерфейсов становятся доступны без пароля.

Гораздо опаснее 14 скрытых API-интерфейсов, которые вообще не содержат кода проверки аутентификации. Они не отображаются в панели управления и активируются только прямым HTTP-запросом. Любой, кто имеет доступ к порту 54425 - через FRP-туннель, локальную сеть или иным способом - может выполнять произвольные команды в системе. Среди этих интерфейсов: "POST /api/execute_command" (выполнение любой команды cmd.exe через Windows API CreateProcess), "GET /api/list_directory" (рекурсивный обход папок), "GET /api/download_file" (скачивание файлов из интернета на диск жертвы), "POST /api/extract_archive" (распаковка ZIP-архивов в произвольную директорию), "GET /api/open_directory" (удалённое открытие окна проводника), а также ряд сетевых утилит - ping, traceroute, DNS-запросы, сканирование TCP-портов и скоростной тест. Все эти интерфейсы работают без какой-либо авторизации: доступ к ним открыт для любого, кто может отправить HTTP-запрос на соответствующий эндпоинт.

Особо отмечается интерфейс "execute_command". Серверная часть напрямую передаёт содержимое поля "command" из JSON-тела POST-запроса в запуск "cmd.exe /c <ввод>". Вывод команды захватывается через анонимный канал и возвращается клиенту в виде JSON. Отсутствуют какие-либо фильтры, белые списки или ограничения. Экспериментальная проверка показала, что через этот интерфейс можно успешно выполнить "whoami", "systeminfo", "netstat", "tasklist" и любые другие команды, включая запуск PowerShell. Интерфейс "download_file" позволяет загрузить произвольный файл по URL непосредственно на компьютер жертвы, не прибегая к встроенным средствам Windows, что делает загрузку незаметной.

Помимо неаутентифицированных API, панельная часть содержит десятки функций, доступных после преодоления аутентификации (путём подбора пароля, его обхода через patch памяти или использования уязвимости в самом приложении). В их числе - мониторинг системы (CPU, память, диски, GPU, информация об ОС и пользователе), просмотр и завершение процессов, H.264-трансляция рабочего стола с частотой 30 кадров в секунду и битрейтом 2 Мбит/с, полный набор операций с файлами (чтение, запись, загрузка, удаление, переименование, создание папок), несколько способов создания скриншотов (включая аппаратное ускорение NVIDIA и AMD), а также API для работы с реестром и проверки производительности дисков. Отдельно присутствуют интерфейсы для управления Steam: получение идентификаторов, путей установки CS:GO и CS2, переключение аккаунтов и отправка команд в игровой процесс.

Итоговые выводы экспертов таковы: R0Guard реализует функциональность, многократно превышающую потребности античита. Комбинация удалённого выполнения команд, потоковой трансляции экрана и полного файлового доступа позволяет классифицировать его как Remote Access Trojan (RAT). 14 интерфейсов без аутентификации делают бэкдор максимально опасным - для его активации не требуется знать пароль, достаточно сетевой доступности порта. Кроме того, токен для FRP-туннеля одинаков для всех инсталляций и жёстко зашит в программе, что упрощает прогнозирование адресов туннеля по аппаратному отпечатку машины. Сочетание коммерческой подписи кода, VMProtect и регулярных обновлений придаёт вредоносной программе признаки зрелого коммерческого malware.

Пользователям, обнаружившим у себя R0Guard, рекомендуется немедленно завершить процессы "R0Guard.exe" и "frpc.exe", проверить сетевые подключения на наличие адресов, содержащих "r0csgo.com", удалить папку "C:\r0_guard", очистить временные файлы, содержащие "frpc_*.toml", и деинсталлировать приложение через панель управления. Для полной уверенности следует также проверить, не были ли загружены и запущены дополнительные вредоносные компоненты через интерфейс "download_file".

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

Domain

  • api.r0csgo.com
  • local-api-direct.r0csgo.com

SHA256

  • 03b73804cdd6ee4ea363c233216e9bc36eae98772548d8cbd8ac10a9a60b3d24
  • 9c9fd1ab06198b6d0aa3222006a7f97e2cb29c5ea3ab1d5f408784c008a32515

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