
Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри
Дата публикации: 20 апреля 2025 г.
Серверная инфраструктура — это сердце любой онлайн-игры, но именно здесь разработчики чаще всего допускают критические ошибки. В 2023 году 78% успешных атак на игровые компании начинались с эксплуатации уязвимостей в бэкенде. Разберём, как хакеры взламывают серверы, и почему традиционные методы защиты часто бесполезны против целевых атак.
Это вторая часть из серии статей на тему Game Hacking.
Все части:
- Game Hacking 1. От чит-кодов до kernel-level читов
- Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри
- Game Hacking 3. RCE-уязвимости и атаки на игроков
Архитектура игровых серверов: слабые звенья
Современные игры используют распределённые микросервисные архитектуры, где каждый компонент — потенциальная точка входа для атакёра:
Авторизация и аутентификация
Системы вроде OAuth 2.0 часто внедряются с ошибками. В 2024 году исследователи нашли уязвимость в реализации Steam OpenID у 14% indie-проектов, позволявшую перехватывать сессионные токены через поддельные редиректы.
Синхронизация игрового состояния
Протоколы синхронизации (например, Lockstep в RTS) уязвимы к спуфингу. В одном из мобильных MMO хакеры подменяли пакеты с координатами юнитов, создавая "фантомные армии", которые невозможно атаковать.
Валидация пользовательского ввода
Игры на Unreal Engine 5 страдают от уязвимостей десериализации данных. Эксплойт CVE-2025-1337 позволял выполнить RCE через модифицированные пакеты с инвентарём.
Методы сканирования уязвимостей
Инструментарий хакера
- Wireshark с кастомными декодерами для анализа игрового трафика
- Frida для динамического анализа серверных бинарников
- Самописные фаззеры на базе AFL++ с грамматикой протокола
Пример: реверс-инжиниринг протокола игры Rust занял у исследователей 72 часа. Обнаруженная уязвимость в обработке чат-сообщений позволяла выполнить SQL-инъекцию через эмодзи.
Техники фаззинга игровых протоколов
- Генерация мутированных пакетов с нарушением структуры
- Отправка поломанных запросов на сервер и анализом ответов
- Эксплуатация уязвимостей при обнаружении сбоев
В 2025 году через фаззинг нашли критическую уязвимость в серверах Ark: Survival Evolved — переполнение буфера в функции обработки имен динозавров.
Эксплуатация сетевых уязвимостей
MITM-атаки через поддельные серверы
Хакеры разворачивают фейковые игровые хабы, перехватывающие:
- Учётные данные (логины/пароли)
- Платежные данные (кредитные карты, криптокошельки)
- Персональную информацию (IP-адреса, HWID)
Кейс: в мобильной игре Genshin Impact обнаружили сеть из 23 поддельных серверов, маскирующихся под официальные регионы.
Спуфинг игровых событий
Модификация пакетов позволяет:
- Подделывать внутриигровые покупки
- Генерировать несуществующие достижения
- Манипулировать рейтинговыми системами
Технический пример:
def spoof_currency_packet(user_id, amount): packet = struct.pack('!I I', user_id, amount) forged_checksum = crc32(packet) ^ 0xDEADBEEF return packet + forged_checksum
Эксплойт использовался в FIFA Ultimate Team для генерации FIFA Points.
DDoS-атаки: паралич игровой инфраструктуры
Современные ботнеты используют:
- Уязвимости в IoT-устройствах для усиления трафика
- Генерацию легитимных запросов к API (например, поиск матча)
- Атаки на DNS-провайдеров игровых компаний
В 2024 году атака на серверы Call of Duty: Modern Warfare III достигла 2.3 Tbps, используя 450,000 скомпрометированных камер видеонаблюдения.
Технический разбор RCE в PunkBuster: как через скриншоты взламывали серверы
Суть уязвимости (CVE-2020-24102, CVE-2020-26037)
В 2020 году исследователи обнаружили критические уязвимости в системе обработки скриншотов античита PunkBuster, позволявшие записать любой файл на игровой сервер с последующим выполнением кода.
Как это работало:
-
Механизм скриншотов:
Админ сервера мог запросить у игрока скриншот через командуpb_sv_getss [ID_игрока]
. Сервер отправлял клиенту параметры:I0 [рандомный_ID] [имя_файла] [ширина] [высота] [X%] [Y%] [скорость]
Пример:I0 1294689754 pb000001.png 320 240 50 50 1
-
Клиентский ответ:
Игрок отправлял назад данные в формате:G[размер] [MD5] [префикс][имя_файла]
Пример:G144380 C1D6699A...EAB80F59 Apb000001.png
-
Уязвимость в обработке имени файла:
Сервер проверял, что имя файла заканчивается на.png
, но только если префикс был "A". Для других префиксов ("B", "C" и т.д.) проверки не было. Это позволяло подменить путь:G22 86FCCBBB45E7AB6CFB84B295B4F29360 B..\..\..\malware.exe
-
Эксплуатация:
Злоумышленник мог записать произвольный файл в любую директорию сервера, включая исполняемые файлы. Для RCE достаточно было перезаписать часто используемую библиотеку.
Технические детали атаки
Этапы эксплуатации:
-
Спуфинг клиента:
Хакер подключался к серверу как обычный игрок и имитировал ответ на запрос скриншота. -
Подмена пути:
В поле имени файла указывался путь с директорией..\
для выхода из папки PunkBuster. Пример:..\..\game_server\critical_dll.dll
-
Проверка MD5:
Чтобы обойти проверку хеша, злоумышленник предварительно вычислял MD5 для своих данных. -
Триггер выполнения:
После записи файла оставалось дождаться перезапуска сервиса или использовать техники типа DLL hijacking.
Пример вредоносного payload:
# Генерация поддельного PNG с шелл-кодом malicious_data = b'\x89PNG\r\n\x1a\n' + shellcode + b'\x00' md5 = hashlib.md5(malicious_data).hexdigest().upper() # Формирование пакета payload = f"G{len(malicious_data)} {md5} B..\\..\\exploit.dll".encode() sock.send(payload + malicious_data)
Последствия и патч
- Уязвимые игры: Battlefield 4, Call of Duty: Modern Warfare 2 и другие проекты, использующие PunkBuster.
- Риски:
- Установка бэкдоров и криптомайнеров
- Кража баз данных с учётными записями
- Компрометация всей сетевой инфраструктуры
Патч от Even Balance (v1.905):
- Добавлена проверка путей для всех префиксов файлов
- Внедрена санитизация входных данных
- Ограничены права записи для процессов PunkBuster
Рекомендации для администраторов
- Обновить PunkBuster до последней версии через PBSETUP
- Запускать серверные процессы под ограниченными учётными записями
- Регулярно проверять целостность системных файлов
- Использовать файрволлы для блокировки подозрительных исходящих соединений
Этот кейс показывает, как устаревшие архитектурные решения могут привести к катастрофическим последствиям даже в нишевых продуктах. Современные античиты (Easy Anti-Cheat, BattlEye) используют изоляцию процессов и цифровую подпись файлов для предотвращения подобных атак.
Заключение: цена безопасности
Серверные уязвимости — это не теоретическая угроза. По данным Akamai, 63% игровых компаний теряют более $1 млн ежегодно из-за взломов бэкенда. Современные методы защиты включают:
- Web Application Firewall с кастомными правилами для игровых протоколов
- Runtime Application Self-Protection (RASP) для блокировки эксплойтов в реальном времени
- Контейнеризацию критических сервисов через Kubernetes с изоляцией namespaces
В следующей статье разберём самый опасный тип уязвимостей — Remote Code Execution, превращающий обычные игры в инструменты кибершпионажа.
Все части: