• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Античит Valve (VAC) — процесс развития и методы борьбы

Sullivan

floppy-диск
Пользователь
Регистрация
25.12.2022
Сообщения
3
Реакции
33
Привет xss.pro! 👋

Более 20 лет я веду борьбу с VAC – Valve Anti-Cheat.
Накопленный мною опыт можно применять не только в разработке читов – в любой области где важно незаметное присутствие в системе (в режиме пользователя с ограниченным Ring 3 доступом — внешним). В рамках статьи мы рассмотрим принципы работы данной анти-чит системы, ее эволюцию, основные техники и приемы противодействия обнаружению.

Предыстория
8 ноября 2000 года состоялся релиз Counter-Strike. Компания Valve выкупила игру и начала тяжелую битву с читерами. В наследство от Half-Life достался анти-чит PunkBuster. Valve решила отказаться от PunkBuster в пользу своей системы – Valve Anti-Cheat в 2002 году.

Что такое VAC?
VAC – полностью автоматизированная система, выполняющая комплекс мероприятий по предотвращению модификации игры с целью получения преимущества.

Архитектура
Система VAC состоит из нескольких взаимосвязанных Client-side модулей, их цель – защита от замены и модификации исполняемых файлов клиента Steam, игры и динамически подключаемых библиотек .DLL, а также Server-side части для выявления читеров с помощью сбора и анализа игровой статистики. В марте 2018 года Valve обнародовала AI-based подход – VACnet.

Untitled.jpg


Принципы работы
Client-side
имеет деление на VAC2 и VAC3 модули.
VAC2 используется в устаревших играх, например Counter-Strike 1.6 и Source.
VAC3 применяется в таких играх как Counter-Strike Global Offensive и Dota 2. При этом используется и VAC2.

VAC2 не имеет принципиальных отличий от PunkBuster и работает по схожему принципу:
– сканирование в реальном времени с использованием встроенной базы данных (хэши MD5 и CRC32, FileSize, FileName);
– проверка настроек игрового движка (например, прозрачность текстур);
– запущенные процессы в системе (посредством GetProcessesByName).

Максимально примитивная технология обнаружения.

Историческая справка
На хак-форумах часто предлагали услугу модификации, как правило, заключающуюся в редактировании файла с помощью любого Hex Editor и рисовании нулей в конце файла. Времена 50 рублей и WebMoney. Можно было озолотиться. Поток клиентов был неисчерпаем, после способ был слит, что вызвало негодование и экзистенциальный кризис местных хакеров 🤬

Как обойти
В приватных читах использовались рандомизаторы, пользователь получал библиотеку с инжектором, которые имели случайные названия файлов, уже модифицированные случайным образом.

В борьбе с Valve случались интересные случаи. Так, однажды наш софт был обнаружен. После дампа и изучения свежих модулей я заметил интересную особенность, Valve применили следующий трюк: сравнение с про-базой происходило по MD5 хэшу части файла. Таким образом был убит паблик способ модификации. Для обхода детектирования по части хэша хорошо подходит scrambling (перемешивание файла на диске).

Untitled.jpg


Untitled.jpg


На схеме можно наглядно наблюдать, что хэш вычисляется не по всему файлу, а по его части. Для примера я смешал только два блока, в реальной практике нужно применять более сложные алгоритмы перемешивания. При этом обращаю ваше внимание, данная техника работает только в случае статического анализа на диске, НЕ в памяти.

Продолжение следует? Интересна ли подобная тематика?
 
Последнее редактирование:
Очень помойный античит. Я вроде видел его даже отключать могли.
Может так показаться, но не стоит недооценивать. Что касается отключения, да, такое было. Но скажите, где такого не было? Я имею опыт работы со многими анти-чит системами, в том числе и топ уровня, на моей практике отключали все, обычно это называют Disabler, как явление достаточно частое.

Что касается именно VAC, в статье мы рассмотрели реализацию VAC2, который применяется в устаревших играх. Внедрять более современную версию нецелесообразно, так как в той же 1.6 или Source в основом игра происходит на серверах сообщества, где роль борьца с читерами отводится админам. А если есть желание зарубиться в соревновательном формате, добро пожаловать на площадки, которые имеют собственные решения, как правило, мощные реализации через драйвер, которые чуть ли не пишут экран.

А вот третий вак уже интереснее. И я думаю мы его тоже рассмотрим, как время позволит. При этом на текущий момент реализована очень мощная система перекрестных проверок, бороться с которой достаточно сложно. Здесь и модерация со стороны сообщества средствами "патруля", где демка подозрительного игрока попадает на просмотр более опытных игроков, обычно после репортов или реакции VACnet.

Также не стоит забывать и про правовое поле, которое также накладывает ограничения. Известны случаи, когда разработчики мощных драйверных решений лишались возможности вести деятельность и проходить сертификацию своих драйверов, так как их решения были признаны шпионскими. Баланс найти очень сложно, аудитория игр от Valve очень большая.

Ну и конечно огромный багаж знаний по движку Source, на котором построены все основные проекты. Так как он почти не изменился и вся архитектура и логика его разобрана по ниточкам, а вокруг него вертится самое мощное хак-сообщество как среди русскоязычных, так и не очень разработчиков.

Если обратить внимание именно на инцидент с отключением, да, он был, но все игроки были заблокированы тем же "патрулем". Если рассматривать "в моменте", то нельзя сказать, что кому-то были доставлены неудобства, скорее здесь нужно внимательно изучить реакцию сообщества.

Очень часто тиммейты не хотят кикать читера и их это забавляет. В последствии результаты такой игры все равно не попадут в статистику, а все игроки, что не кикнули читера по очевидным причинам также получат санкции. При этом команда противника может не страдать, а дружно сдаться.

В целом архитектура и комплекс мер для борьбы это не одна статья, так что у Valve все очень даже продумано. Если разобраться, то очень много интересного можно узнать. Обязательно о многих вещах вам расскажу ;)
 
Может так показаться, но не стоит недооценивать. Что касается отключения, да, такое было. Но скажите, где такого не было? Я имею опыт работы со многими анти-чит системами, в том числе и топ уровня, на моей практике отключали все, обычно это называют Disabler, как явление достаточно частое.

Что касается именно VAC, в статье мы рассмотрели реализацию VAC2, который применяется в устаревших играх. Внедрять более современную версию нецелесообразно, так как в той же 1.6 или Source в основом игра происходит на серверах сообщества, где роль борьца с читерами отводится админам. А если есть желание зарубиться в соревновательном формате, добро пожаловать на площадки, которые имеют собственные решения, как правило, мощные реализации через драйвер, которые чуть ли не пишут экран.

А вот третий вак уже интереснее. И я думаю мы его тоже рассмотрим, как время позволит. При этом на текущий момент реализована очень мощная система перекрестных проверок, бороться с которой достаточно сложно. Здесь и модерация со стороны сообщества средствами "патруля", где демка подозрительного игрока попадает на просмотр более опытных игроков, обычно после репортов или реакции VACnet.

Также не стоит забывать и про правовое поле, которое также накладывает ограничения. Известны случаи, когда разработчики мощных драйверных решений лишались возможности вести деятельность и проходить сертификацию своих драйверов, так как их решения были признаны шпионскими. Баланс найти очень сложно, аудитория игр от Valve очень большая.

Ну и конечно огромный багаж знаний по движку Source, на котором построены все основные проекты. Так как он почти не изменился и вся архитектура и логика его разобрана по ниточкам, а вокруг него вертится самое мощное хак-сообщество как среди русскоязычных, так и не очень разработчиков.

Если обратить внимание именно на инцидент с отключением, да, он был, но все игроки были заблокированы тем же "патрулем". Если рассматривать "в моменте", то нельзя сказать, что кому-то были доставлены неудобства, скорее здесь нужно внимательно изучить реакцию сообщества.

Очень часто тиммейты не хотят кикать читера и их это забавляет. В последствии результаты такой игры все равно не попадут в статистику, а все игроки, что не кикнули читера по очевидным причинам также получат санкции. При этом команда противника может не страдать, а дружно сдаться.

В целом архитектура и комплекс мер для борьбы это не одна статья, так что у Valve все очень даже продумано. Если разобраться, то очень много интересного можно узнать. Обязательно о многих вещах вам расскажу ;)
А какие сейчас актуальные обходы античитов? Вроде знаю есть гипервизор, который позволяет эффективно прятать чит от скана, ну или обходы через драйверы/или Ring0, тот же Battleye или EAC вроде как сканируют глубоко такие вещи?
 
А какие сейчас актуальные обходы античитов? Вроде знаю есть гипервизор, который позволяет эффективно прятать чит от скана, ну или обходы через драйверы/или Ring0, тот же Battleye или EAC вроде как сканируют глубоко такие вещи?
Все зависит от античита, например, где-то достаточно пройтись протектором и замутировать все сплошняком, чтобы избежать сигнатурного обнаружения, такое часто применяют в приватных читах, где каждому пользователю выдают уникальный билд.

А где-то это не прокатит, так как спалить протектор очень легко, и требуется уникальное решение, чтобы еще и не уступало.

Что касается сканирования, это больше в сторону ESEA, там можно запустить любой паблик софт, но точно отлететь в результате ручной модерации. При этом если применить очень приватное решение, то все равно рано или поздно возьмут за причинное место. Они периодически выполняют дамп и кусочками его отправляют в процессе игровой сессии или после, постоянно меняя логику чтобы нельзя было предсказать.

Наиболее эффективное решение, конечно, Battleye. Он ставит хуки на все что можно, используя максимальные привелегии на нулевом кольце. Обходят обычно из под драйвера, да. Иногда встречаются извращенные решения как вы упомянули, гипервизоры и все такое. Но это больше не про коммерческие решения, а разработчики из научного интереса балуются.

А вот то что пускают в продажу обычно очень тривиально и просто, в основном эксплуатируют различные уязвимости системы для инжекта, бывало даже инжектили средствами Windows Defender 🥹

Если не хватает сил найти что-нибудь такое, хотя в паблике обычно много решений, которые нужно только немного доработать напильником, то используют грубые решения начиная от танцев с загрузчиком, и написанием драйвера, так как денег подписать обычно не хватает, плюс сейчас более жесткие правила получения подписи.

Все это работает до тех пор пока не попадет на стол по другую сторону баррикад, после обычно ждет фикс.

При этом важно правильно написать чит, с умом. Разработчики сейчас всеми силами прячут информацию чтобы не получилось получить никаких данных из игры, и нам важно ее сначала незаметно выцепить, а далее найти как же все таки взаимодействовать с игрой и сделать так, чтобы происходило то что нам хочется. Ну и перед всем этим инжект.

Поэтому рецепт примерно такой: найти инжект, найти как прочитать, найти как взаимодействовать и пробраться через паутину навешанных хуков.

Кто-то применяет чуть ли не анализ трафика, расшифровку на лету и отрисовку где-то во вне, на мобильном или внешнем дисплее, Hardware Hacking, так сказать.

Кто-то перехватывает управление мышкой и имитирует движения, чтобы написать какой-нибудь аимбот.

Все очень индивидуально и зависит от фантазии :)
 
Все зависит от античита, например, где-то достаточно пройтись протектором и замутировать все сплошняком, чтобы избежать сигнатурного обнаружения, такое часто применяют в приватных читах, где каждому пользователю выдают уникальный билд.

А где-то это не прокатит, так как спалить протектор очень легко, и требуется уникальное решение, чтобы еще и не уступало.

Что касается сканирования, это больше в сторону ESEA, там можно запустить любой паблик софт, но точно отлететь в результате ручной модерации. При этом если применить очень приватное решение, то все равно рано или поздно возьмут за причинное место. Они периодически выполняют дамп и кусочками его отправляют в процессе игровой сессии или после, постоянно меняя логику чтобы нельзя было предсказать.

Наиболее эффективное решение, конечно, Battleye. Он ставит хуки на все что можно, используя максимальные привелегии на нулевом кольце. Обходят обычно из под драйвера, да. Иногда встречаются извращенные решения как вы упомянули, гипервизоры и все такое. Но это больше не про коммерческие решения, а разработчики из научного интереса балуются.

А вот то что пускают в продажу обычно очень тривиально и просто, в основном эксплуатируют различные уязвимости системы для инжекта, бывало даже инжектили средствами Windows Defender 🥹

Если не хватает сил найти что-нибудь такое, хотя в паблике обычно много решений, которые нужно только немного доработать напильником, то используют грубые решения начиная от танцев с загрузчиком, и написанием драйвера, так как денег подписать обычно не хватает, плюс сейчас более жесткие правила получения подписи.

Все это работает до тех пор пока не попадет на стол по другую сторону баррикад, после обычно ждет фикс.

При этом важно правильно написать чит, с умом. Разработчики сейчас всеми силами прячут информацию чтобы не получилось получить никаких данных из игры, и нам важно ее сначала незаметно выцепить, а далее найти как же все таки взаимодействовать с игрой и сделать так, чтобы происходило то что нам хочется. Ну и перед всем этим инжект.

Поэтому рецепт примерно такой: найти инжект, найти как прочитать, найти как взаимодействовать и пробраться через паутину навешанных хуков.

Кто-то применяет чуть ли не анализ трафика, расшифровку на лету и отрисовку где-то во вне, на мобильном или внешнем дисплее, Hardware Hacking, так сказать.

Кто-то перехватывает управление мышкой и имитирует движения, чтобы написать какой-нибудь аимбот.

Все очень индивидуально и зависит от фантазии :)
Очень интересно, помнится ради интереса ставил Радар на игру PUBG, весь цимес заключался в том что радар стоял на виртуальной машине VirtualBox, и от туда он читал пакеты и расшифровывал их показывая на карте где враг/лут/транспорт. Потом лавочку прикрыли, поставили какое то более навороченое шифрования (вроде бы так). Как итог всё... но ни бана ничего. Я сейчас знаю что пошла мода DMA-платы. Вот это вещь стоит внимания. хоть и дорогая.
 
Очень помойный античит. Я вроде видел его даже отключать могли.
а как же классика от valve с переименованием переменных )))
 
Коллеги, извините за возможный оффтоп. Я когда-то давно видел занятную схему защиты бинарников в Steam. Сам бинарник шифровался, и в него добавлялась секция с зашифрованной DLL от Valve, которая проводила проверки и запускала сервисы Steam. У таких бинарников была сигнатура VLV в DOS-заголовке. Лечилось долгой ручной отладкой с последующим дампом :)
Скажите, кто-нибудь с такой сталкивался? Не подскажете, где о той схеме можно почитать?
 
Коллеги, извините за возможный оффтоп. Я когда-то давно видел занятную схему защиты бинарников в Steam. Сам бинарник шифровался, и в него добавлялась секция с зашифрованной DLL от Valve, которая проводила проверки и запускала сервисы Steam. У таких бинарников была сигнатура VLV в DOS-заголовке. Лечилось долгой ручной отладкой с последующим дампом :)
Скажите, кто-нибудь с такой сталкивался? Не подскажете, где о той схеме можно почитать?
Что-то подозрительную кашу ты несёшь,

Python Crawler Expert, не было там такого.​

 
Что-то подозрительную кашу ты несёшь,

Python Crawler Expert, не было там такого.​

Зря обвиняете, точно такое было... Вот из вредности сейчас найду :)
UPD: Нашел! Скриншот, конечно, слабый пруф, но все же xD
А секция с либой называется .bind
 

Вложения

  • grimdawn.png
    grimdawn.png
    15.5 КБ · Просмотры: 74
  • tron20.png
    tron20.png
    15 КБ · Просмотры: 75
Последнее редактирование:
Наиболее эффективное решение, конечно, Battleye
Battleye регулярно обходят. А как же античит от FACEIT? За всю историю известно лишь пара инцедентов, когда смогли обойти. И заинжектить нормальный чит. Были еще варианты с аимами/тригерами, которые пиксели сравнивали, но это не очень интересно.
 
Battleye регулярно обходят. А как же античит от FACEIT? За всю историю известно лишь пара инцедентов, когда смогли обойти. И заинжектить нормальный чит. Были еще варианты с аимами/тригерами, которые пиксели сравнивали, но это не очень интересно.
Есть несколько частных поставщиков, которые эффективно обходят античит-клиент Faceit. Большинство из них избегают таких функций, как аимбот, из-за количества проверок. Невозможно иметь античит, который остановит все, что вы в него бросаете, потому что всегда есть слепое пятно или слабость ОС, которую вы могли бы использовать.
 
Привет xss.pro! 👋

Более 20 лет я веду борьбу с VAC – Valve Anti-Cheat.
Накопленный мною опыт можно применять не только в разработке читов – в любой области где важно незаметное присутствие в системе (в режиме пользователя с ограниченным Ring 3 доступом — внешним). В рамках статьи мы рассмотрим принципы работы данной анти-чит системы, ее эволюцию, основные техники и приемы противодействия обнаружению.

Предыстория
8 ноября 2000 года состоялся релиз Counter-Strike. Компания Valve выкупила игру и начала тяжелую битву с читерами. В наследство от Half-Life достался анти-чит PunkBuster. Valve решила отказаться от PunkBuster в пользу своей системы – Valve Anti-Cheat в 2002 году.

Что такое VAC?
VAC – полностью автоматизированная система, выполняющая комплекс мероприятий по предотвращению модификации игры с целью получения преимущества.

Архитектура
Система VAC состоит из нескольких взаимосвязанных Client-side модулей, их цель – защита от замены и модификации исполняемых файлов клиента Steam, игры и динамически подключаемых библиотек .DLL, а также Server-side части для выявления читеров с помощью сбора и анализа игровой статистики. В марте 2018 года Valve обнародовала AI-based подход – VACnet.

Посмотреть вложение 48755

Принципы работы
Client-side
имеет деление на VAC2 и VAC3 модули.
VAC2 используется в устаревших играх, например Counter-Strike 1.6 и Source.
VAC3 применяется в таких играх как Counter-Strike Global Offensive и Dota 2. При этом используется и VAC2.

VAC2 не имеет принципиальных отличий от PunkBuster и работает по схожему принципу:
– сканирование в реальном времени с использованием встроенной базы данных (хэши MD5 и CRC32, FileSize, FileName);
– проверка настроек игрового движка (например, прозрачность текстур);
– запущенные процессы в системе (посредством GetProcessesByName).

Максимально примитивная технология обнаружения.

Историческая справка
На хак-форумах часто предлагали услугу модификации, как правило, заключающуюся в редактировании файла с помощью любого Hex Editor и рисовании нулей в конце файла. Времена 50 рублей и WebMoney. Можно было озолотиться. Поток клиентов был неисчерпаем, после способ был слит, что вызвало негодование и экзистенциальный кризис местных хакеров 🤬

Как обойти
В приватных читах использовались рандомизаторы, пользователь получал библиотеку с инжектором, которые имели случайные названия файлов, уже модифицированные случайным образом.

В борьбе с Valve случались интересные случаи. Так, однажды наш софт был обнаружен. После дампа и изучения свежих модулей я заметил интересную особенность, Valve применили следующий трюк: сравнение с про-базой происходило по MD5 хэшу части файла. Таким образом был убит паблик способ модификации. Для обхода детектирования по части хэша хорошо подходит scrambling (перемешивание файла на диске).

Посмотреть вложение 48775

Посмотреть вложение 48782

На схеме можно наглядно наблюдать, что хэш вычисляется не по всему файлу, а по его части. Для примера я смешал только два блока, в реальной практике нужно применять более сложные алгоритмы перемешивания. При этом обращаю ваше внимание, данная техника работает только в случае статического анализа на диске, НЕ в памяти.

Продолжение следует? Интересна ли подобная тематика?

Спасибо за статью, будет интересно почитать если напишешь продолжение. Насколько я знаю, сейчас анти-анти-читы влезают в вак и отрубают ему ноги и руки, т.е. функции которыми он может что-то обнаружить.
 
Battleye регулярно обходят. А как же античит от FACEIT? За всю историю известно лишь пара инцедентов, когда смогли обойти. И заинжектить нормальный чит. Были еще варианты с аимами/тригерами, которые пиксели сравнивали, но это не очень интересно.
Я так понимаю через драйвер?
 
Я так понимаю через драйвер?
Само собой, конкретных подробностей не расскажу, так как никогда этим не занимался, но большинство читов, которые обходят ринг0 античиты имеют свой драйвер.
 
20 лет это серьезно, тут хочешь не хочешь а нужно уже делится накопленной информацией. В общем яростно плюсую из чувств ностальгии. А вообще, насколько сейчас реально поддерживать приватный чит для нужд киберспорта?
 
Battleye регулярно обходят. А как же античит от FACEIT? За всю историю известно лишь пара инцедентов, когда смогли обойти. И заинжектить нормальный чит. Были еще варианты с аимами/тригерами, которые пиксели сравнивали, но это не очень интересно.
FACEIT обходят регулярно, есть варианты которые будут работать 200% всегда. Вопрос в том, что "нормальный" чит там и не нужен. Хватает ESP - AIM уже забанит тебя.
Просто все привыкли что заоблачные цены ставят. Но по знакомству вам за 300 баксов хоть радар сделают, а если хотите идеальный байпасс то придется вложиться в детальку за 800-1200 долларов :D
 
придется вложиться в детальку за 800-1200 долларов :D
Если ты про хардварные читы, то слышал, что фейсит их тоже умеет детектить.
FACEIT обходят регулярно
уже давно не интересовался этой темой, но неск лет назад помнится там всё трудно было
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх