Ошибка античита. Проблема, не запускается, не работает
FACEIT Anti-cheat — это клиент-серверная система, предназначенная для обнаружения игроков, которые используют признанные взломы, читы, программное обеспечение, для получения несправедливого преимущества в игре. Античит доступен только для Windows 8.1 и 10 только в 64-битной версии. Платформа не поддерживает античит для Linux и Mac.
Если на вашем компьютере было запрещенное ПО, то бан снят не будет, даже если вы по ошибке забыли его выключить или оно было установлено на вашем компьютере кем-то другим. Если вы уверены, что на вашем компьютере никогда не было запрещенного программного обеспечения, то есть смысл обратиться в поддержку, создав тикет о своей ситуации.
You need to have the Anti-cheat client running to connect ( Для подключения должен быть запущен клиент анти-чит )
Вы не запустили античит клиент, или подключаетесь не с того аккаунта Steam . Возможно игра была запущена не через Steam а через ярлык из папки с игрой.
AutoHotkey is forbidden, please close it and restart FACEIT AC ( AutoHotkey запрещен, закройте его и перезапустите античит )
AutoHotkey не совместим с клиентом. Вам нужно закрыть AutoHotkey и программы, которые могли быть им скомпилированы, например:
Затем перезапустить клиент.
The service cannot be started ( Служба не может быть запущена )
Пользователь отключит античит. Нужно вручную в службах Windows и вернуть службу FACEIT.
The driver or UNC share you selected does not exist ( Выбранный вами драйвер или общий ресурс UNC не существует )
Возможно вы удалили античит не через установку/удалением программ, а просто файловым менеджером и заново установили. Возможно удалены отдельные файлы папки клиента. Нужно удалить раздел реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<086D343F-8E78-4AFC-81AC-D6D414AFD8AC>_is1
Service has been stopped ( Сервис остановлен )
Если у вас возникла эта проблема, выключите режим отладки системы, выполнив следующие действия:
- Нажмите Пуск и найдите командную строку.
- Щелкните правой кнопкой мыши командную строку и выберите «Запуск от имени администратора».
- Если появится диалоговое окно «Контроль учетных записей пользователей», убедитесь, что отображаемое действие соответствует вашим требованиям, и нажмите «Далее».
- Затем введите bcdedit / debug off и нажмите Enter.
Это должно позволить клиенту запускаться без сбоев.
Forbidden driver ( Запрещенный драйвер)
Клиент анти-чит блокирует работу некоторых драйверов и систем мониторинга/управления оборудованием. Такое ПО может быть уязвимым с точки зрения безопасности, поэтому рекомендуется удалить его. Иногда помогает обновление драйверов или подобного ПО. После этой ошибки и блокировки драйвера, можно попробовать перезагрузить компьютер, э то заблокирует драйвер и возможно позволит вам запустить Anti-Cheat.
Failed to load the launcher DLL (не удалось загрузить библиотеку DLL)
Эта ошибка происходит из-за некорректных обновлений Windows, которые повреждают некоторые ключи реестра. Для исправления,выполните следующие действия:
- Закройте античит (при необходимости убейте его в диспетчере задач)
- Откройте regedit
- Перейдите в HKEY_CURRENT_USER \ Software \ Microsoft \ SystemCertificates \ Root
- Щелкните правой кнопкой мыши ProtectedRoots -> Permissions, выберите свою учетную запись и установите флажок Allow Full Control
- Откройте диспетчер задач, перейдите в Службы, найдите CryptSvc, щелкните правой кнопкой мыши -> Остановить
- Вернитесь в regedit, удалите корневой ключ в HKEY_CURRENT_USER \ Software \ Microsoft \ SystemCertificates
You need to have Kernel Patch Protection enabled to launch FACEIT AC ( Для запуска FACEIT AC необходимо включить защиту ядра от исправлений )
Появление этой ошибки свидетельствует о том, что в вашей ОС внесены изменения в ядро ( Patchguard ). Возможно используется взломанная пиратская Windows , или ваш компьютер заражен вирусом. В крайнем случае потребуется переустановка нормальной версии Windows .
Error verifying digital signature. Make sure your system’s root certificates are up to date ( Ошибка проверки цифровой подписи. Убедитесь, что корневые сертификаты вашей системы актуальны )
Корневые сертификатывашей ОС повреждены или устарели. Исправить ситуацию может загрузка необходимых обновлений с официального сайта microsoft.
You need to enable the NX/Execute Disable bit in your computer BIOS (Вам нужно включить бит NX / Execute Disable в BIOS вашего компьютера)
Перезагрузите компьютер, чтобы войти в меню настройки BIOS (нажмите F2 или DEL), найдите параметр «NX Bit», «Execute Disable bit» или «XD bit» и проверьте включен ли он.
Warning: your system hasn’t been patched against critical Windows security vulnerabilities ( Предупреждение: ваша система не защищена от критических уязвимостей безопасности Windows )
Скорее всего вы используете старую версию Windows 7 и нужно установить все последние обновления безопасности. Для установки обновлений подойдет только оригинальная ОС. Вот обновления для различных версий Windows :
FACEIT Anti-cheat клиент полностью совместим с последней версией OBS. Если вы испытываете трудности в работе с захватом экрана OBS убедитесь, что используете последнюю версию. OBS может работать с разными настройками захвата, например захват окна, захват изображения и захват игры. Чтобы он работал с нашим Античитом, убедитесь, что выбран захват игры.
Проблемы ноутбуков с двумя видеокартами
Иногда при использовании античита на ноутбуках с дискретным видеоадаптером, игра может запускаться не на той видеокарте (интегрированной). Чтобы решить проблему нужно принудительное включение нужной видаекарты ( Nvidia / AMD вместо графического процессора Intel ) через панель управлением дискретной видеокартой.
Падение FPS, лаги и заикания при использовании мыши и / или клавиатуры
При использовании античита, другие программы не блокируются (режим -allow_third_party_software ) и могут работать одновременно и вызывать задержки. Вы можете проверить, вызвана ли эта проблема сторонним приложением, добавив -allow_third_party_software в параметры запуска CS: GO и проведя тестирование без Anti-Cheat. Если при этом у вас нет проблемы, выполните следующие тесты:
- Не стоять в очереди ни на один матч FACEIT
- Запустите античит и игру
- Играйте на сервере, отличном от FACEIT, например Deathmatch
- Проверьте, есть ли у вас проблема сейчас
- В поле поиска Windows введите msconfig и откройте Конфигурация системы
- Перейдите на вкладку «Службы», установите флажок «Скрыть все службы Microsoft», выберите «Отключить все», затем установите флажки «Служба клиента Steam» и «Служба FACEITService»
- Перейдите на вкладку «Автозагрузка», нажмите «Открыть диспетчер задач»
- Щелкните вкладку «Автозагрузка» в диспетчере задач
- Выберите каждый элемент автозагрузки и нажмите Отключить
- Перезагрузите компьютер
- Сыграйте матч FACEIT только с FACEIT AC, Steam и CS GO, закройте все остальное
- Проверьте, осталась ли у вас проблема
Синий экран с указанием FACEIT.sys
Сбои системы могут иметь несколько причин, в том числе:
- Неисправное оборудование
- Разгон
- Неисправное программное обеспечение
- Перегрев
- Неправильные тайминги оперативной памяти
Failed to check for updates ( Не удалось проверить наличие обновлений )
Если у вас строгие настройки брандмауэра, убедитесь, что порт 6789 открыт для TCP. Также рекомендуется убедиться, что если у вас есть антивирус, что клиенту предоставлено исключение, чтобы он мог правильно работать в вашей системе.
FACEIT Anti-cheat защищает игру и блокирует некоторые файлы, которые рассматриваются как подозрительные при попытке загрузки в игру. Если игра работает правильно, то вы можете просто проигнорировать это сообщение. Если это не позволяет запустить игру, то некоторые из файлов Windows или файлы видеодрайвера могут быть изменены и / или повреждены. Пожалуйста, попробуйте следующие решения:
- Выполните сканирование системы с помощью Malwarebytes Anti-Malware, чтобы найти любое вредоносное ПО, которое могло изменить важные файлы Windows.
- Возможно, корневой сертификат вашей системы поврежден или устарел, попробуйте обновить его с помощью обновления Windows: поддержка срочных обновлений доверенного корня для программы корневых сертификатов Windows
- Проверьте наличие поврежденных файлов Windows с помощью средства проверки системных файлов
- Поищите в Google имя заблокированного файла, которое, вероятно, скажет вам, из-за какой программы это происходит. Если файл связан с вашими видео / сетевыми / звуковыми драйверами, простое обновление до последней версии должно решить проблему.
Клиент падает через несколько секунд после запуска или клиент не запускается
- Нажмите Пуск, выберите Все программы, а затем нажмите Стандартные.
- Щелкните правой кнопкой мыши Командная строка и выберите Запуск от имени администратора.
- Если появится диалоговое окно «Контроль учетных записей», убедитесь, что отображаемое действие соответствует желаемому, и нажмите «Продолжить».
- Затем введите bcdedit / debug off и нажмите ввод
Это должно позволить клиенту запускаться без сбоев.
Если у вас возникнут дополнительные вопросы по работе анти-чит клиента, рекомендуется обращаться в поддержку за квалифицированной помощью специалистов.
Эксперт обошел защиту Microsoft Kernel Patch Protection
Xakep #257. Pivoting
Турецкий ИБ-специалист представил PoC-эксплоит для обхода функции Microsoft Kernel Patch Protection (KPP), более известной под названием PatchGuard. Его инструмент получил имя ByePg, и эксплоит касается HalPrivateDispatchTable, чтобы в итоге позволяет вредоносному приложению вмешиваться в работу ядра.
Функция Microsoft Kernel Patch Protection (KPP), более известная под названием PatchGuard, была представлена в далеком 2005 году в Windows XP. Она доступна только для 64-разрядных версий Windows, и ее роль заключается в том, чтобы приложения не могли вмешиваться в работу ядра. В сущности, до выхода PatchGuard многие приложения позволяли себе модифицировать ядро Windows для облегчения своей работы или получения доступа к различным функциям. Антивирусное ПО, драйверы, игровые читы и малварь часто «патчили» ядро с совершенно разными целями. В частности, подобные техники очень любили разработчики руткитов, ведь это позволяло им внедрить малварь на уровне ОС, предоставив ей беспрепятственный доступ к машине жертвы.
Со временем PatchGuard отошел на второй план, на фоне многочисленных защитных механизмов Windows, но ИБ-специалисты продолжали использовать эту функциональность и искать новые способы обхода защиты. Так, в 2015 году, после релиза Windows 10 специалисты CyberArk представили обход PatchGuard названный GhostHook. Он использовал функцию Intel Processor Trace (PT), чтобы обойти PatchGuard и внеси исправления в ядро. Затем, летом текущего года, эксперт Riot Games нашел еще один способ обхода защиты, который был назван InfinityHook и использовал для работы NtTraceEvent API.
Теперь же был создан ByePg, использующий для обхода защиты HalPrivateDispatchTable. Разработчик эксплоита отмечает, что потенциал его использования ограничен исключительно креативностью того, кто его применяет. Хуже того, ByePG помогает обойти не только PatchGuard, но и Hypervisor-Protected Code Integrity (HVCI), функцию, которую Microsoft использует для занесения «плохих» драйверов в черный список.
Все три перечисленные метода обхода защитных функций стали достоянием общественности, так как Microsoft не спешит выпускать исправления и закрывать эти бреши (хотя заплатки для GhostHook и InfinityHook в конечном счете все же были созданы). Дело в том, что для работы таким эксплоитам нужны права администратора, из-за чего в компании отказываются классифицировать их как проблемы безопасности.
Разработчики Microsoft уверены, что если злоумышленник получил доступ к локальной системе с правами администратора, далее он может выполнять любые операции. Вопрос в том, что к PatchGuard эта «отговорка» вряд ли применима, ведь защитный механизм был предназначен именно для защиты ядра от процессов с высокими привилегиями, таких как драйверы или антивирусное ПО.
Также дело осложняется тем, что проблемы в PatchGuard не подпадают пол программу bug bounty, и специалисты, обнаруживавшие такие баги, не могут рассчитывать на денежное вознаграждение. Сотрудник Microsoft, пожелавший остаться неизвестным, рассказал журналистам издания ZDNet, что проблемы PatchGuard компанией вовсе не игнорируются, и исправления для них выходят, пусть и немного медленнее других патчей. Однако исследователи, зная, что не получат денег, а обнаруженным уязвимостям не будут присвоены идентификаторы CVE, предпочитают публиковать результаты свои изысканий в открытом доступе и в целом занимаются изучением подобных проблем весьма неохотно.
Windows 8.1 Kernel Patch Protection — PatchGuard
Периодически, как правило во вторую среду месяца, можно услышать истории о том, что Windows после очередного обновления перестает загружаться, показывая синий экран смерти. В большинстве случаев причиной такой ситуации оказывается либо руткит, либо специфичное системное ПО, фривольно обращающееся со внутренними структурами ОС. Винят, конечно, все равно обновление, ведь «до него все работало». С таким отношением не удивительно, что «Майкрософт» не поощряет использование всего, что не документировано. В какой-то момент, а именно с релизом Windows Server 2003, MS заняла более активную позицию в вопросе борьбы с чудо-поделками сторонних разработчиков. Тогда появился механизм защиты целостности ядра — kernel patch protection, более известный как PatchGuard.
С самого начала он не позиционировался как механизм защиты от руткитов, поскольку руткиты работают в ядре с теми же привилегиями, а следовательно, PatchGuard может быть обезврежен. Это скорее фильтр, отсекающий ленивых разработчиков руткитов.
Что охраняет PatchGuard
Самым популярным местом модифицирования ядра была таблица системных вызовов. При помощи модификации указателей на функции системных вызовов можно было легко их перехватывать, фильтровать, логировать и т. п. Причем этот патч был популярен как для руткитов, так и для антивирусного ПО. Другие интересные для патча объекты — таблицы дескрипторов (GDT, IDT). Через модифицирование глобальной таблицы дескрипторов можно было изменять атрибуты сегментов, создавая бекдоры для кода, а через таблицу дескрипторов прерываний можно было перехватывать… прерывания! Продвинутые же парни сплайсили непосредственно функции ядра.
Соответственно, первая версия PatchGuard защищала:
- таблицы системных вызовов (SST),
- глобальную таблицу дескрипторов (GDT),
- таблицу дескрипторов прерываний (IDT),
- образ ядра,
- ядерные стеки.
С развитием NT перерабатывалось множество компонентов ядра, в том числе и PatchGuard. На текущий момент уже сложно перечислить все, что защищается с его помощью:
- множество системных образов, не только образ ядра (nt, hal, WerLiveKernelApi, tm, clfs, pshed, kdcom, bootvid, ci, msrpc, ndis, ntfs, tcpip, fltmgr),
- критически важные структуры данных ядра (например, список процессов),
- набор MSR (например, model specific регистр IA32_LSTAR),
- KdpStub — процедура отладчика, получающая управление после исключений.
Как охраняет PatchGuard
Стоит отметить, что PatchGuard активно использует новую реализацию обработки исключений, введенной в x64-версиях Windows. Используется он как для обфускации самого PatchGuard, так и для проверки целостности защищаемых образов.
В предыдущих версиях Windows обработчик исключений использовал структуры данных прямо на стеке, что даже позволяло обходить stack cookies при эксплуатации уязвимостей. Основное изменение заключается в хранении специальной таблицы внутри исполняемого образа с записями для каждой отдельной его функции.
За счет того, что адрес начала и конца любой функции можно получить прямо в рантайме, задача подсчета контрольной суммы отдельно взятой функции становится тривиальной. Для сравнения — в x86-версиях контроль целостности образов невозможен из-за того, что непонятно, как определить границы отдельной функции, а образ целиком (или даже отдельные его секции) накрывать контрольной суммой нельзя, поскольку в том же ядре присутствуют функции, которые патчатся самим ядром на лету.
При загрузке ОС PatchGuard создает от 1 до 4 контекстов — структур данных, в которых хранятся копии используемых им функций, контрольные суммы защищаемых структур и ключи шифрования самого контекста. Эти контексты хранятся в неподкачиваемом пуле в зашифрованном виде. О проверке контекстов поговорим чуть позже.
Инициализируются контексты PatchGuard в фазе 1 загрузки ОС. Функция, непосредственно занимающаяся созданием контекста, не имеет публичного символа (будем называть ее KiInitializePatchGuardContext), но найти ее можно внутри функции KiFilterFiberContext. Мы нашли два места, в котором возможно создание контекста PatchGuard:
Первый вариант всегда создает хотя бы один контекст, в то время как второй только в 4% случаев. Также первый вариант примечателен тем, что вызывает функцию KiFilterFiberContext неявно, а именно через «вброс» исключения.
Функция, создающая контекст PatchGuard, обфусцирована настолько, что автоматические средства с ней не справляются, а исследователям внезапно становится неинтересно ее реверсить. В статике это полная каша, 10K+ строк декомпилированного «в лоб» кода (сама декомпиляция в IDA Pro занимает около 40 минут).
Все говорит об обширном использовании макросов:
- даже простейшая операция, такая как взятие случайного числа, размазана на 50+ строк ассемблерного кода;
- все циклы развернуты;
- вставлено много «мертвого» кода;
- используется косвенное обращение к переменным и внешним функциям.
Динамика тоже довольно непроста. Вот пара примеров из того, что рассыпано по коду.
Проверка контекста состоит из двух этапов: сперва проверка структуры самого контекста, которая происходит на DPC-уровне, затем планируется work item, осуществляющий проверку защищаемых структур в системном потоке. Если проверка была удачной, старый контекст удаляется и вместо него создается новый, который будет запущен через случайный интервал времени. Если проверка не удалась, PatchGuard зачищает все свои следы, в том числе зануляя стек, и демонстрирует синий экран с кодом ошибки 0x109: CRITICAL_STRUCTURE_CORRUPTION.
Гифка с саморасшифровывающимся на первом этапе проверки контекстом:
Как победить
Существует несколько подходов к обезвреживанию PatchGuard:
- Такой патч образа ядра, чтобы PatchGuard вообще не инициализировался.
- Патч процедур проверки контекста.
- Хук KeBugCheck с восстановлением состояния системы.
- Отмена запланированных проверок — то, что мы реализовали.
Нам понравился последний способ, поскольку он является самым «чистым»: ничего не нужно хукать и пачтить, необходимо просто заменить значение некоторых переменных.
- KeSetCoalescableTimer
Необходимо просканировать все таймеры, DPC для которых будет содержать DeferredContext с неканоническим адресом, и увеличить интервал ожидания для найденных до бесконечности. - Prcb.AcpiReserved
Просто занулить данное поле. - Prcb.HalReserved
Просто занулить данное поле. - PsCreateSystemThread
Просканировать спящие потоки и раскрутить их стек. Если он упирается в функцию из структуры KiServiceTablesLocked, это наш клиент. Выставляем время спячки, равное бесконечности. - KeInsertQueueApc
Просканировать все рабочие потоки с раскруткой стека. Если в стеке встречаются функции не из кодовой секции ядра, причем раскручивающиеся с использованием данных для функций FsRtlMdlReadCompleteDevEx и FsRtlUninitializeSmallMcb, это точно рабочий поток PatchGuard. Обезвреживаем так же, как в предыдущем варианте. - KiBalanceSetManagerPeriodicDpc
Восстановить «законную» процедуру — KiBalanceSetManagerDeferredRoutine.
Эти действия необходимо успеть совершить за 2 минуты по описанным выше причинам. Результат — проверка контекста никогда не будет запущена, а также не будет запланирована новая. PatchGuard не будет работать.
Windows 10
При осмотре KiFilterFiberContext из Windows 10 Technical Preview мы заметили небольшое изменение. Все старые методы планирования остались прежними. Однако появился новый, который пока что безусловно возвращает STATUS_HV_FEATURE_UNAVAILABLE. Немного покопавшись, мы обнаружили функцию KiSwInterruptDispatch, внутри которой явно идет расшифровка и вызов проверки контекста. Очевидно, что будет добавлена возможность осуществлять проверку контекстов по запросу гипервизора Hyper-V. От гипервизора при определенных условиях будет приходить синтетическое прерывание, обработчик которого будет проверять целостность ядра.
История продолжается
В статье мы старались не указывать имена конкретных функций не потому, что нам жалко. Все просто: имена функций, используемых для расшифровки и проверки контекстов, намеренно изменены разработчиками PatchGuard и меняются в разных версиях ОС.
Вот пример несоотвтествия названия функции тому, чем она действительно занимается. Это та самая функция, копия которой используется для саморасшифровки контекста.
Одно хорошо — все эти функции находятся рядом, так что начать можно с функции KiFilterFiberContext. Очевидно, они все лежат в одном файле исходного кода. Однако проверка целостности ядра не ограничивается одним PatchGuard. В различные части ядра вставлены макросы, осуществляющие проверку тех или иных структур. Каждое такое место приходится искать вручную. Пример:
С вероятностью 50% данная функция осуществляет подсчет контрольной суммы для произвольной функции ядра и планирует ее проверку каждые 2 минуты в DPC с функцией CcBcbProfiler.
Так что удачи в поисках! PatchGuard интересен именно тем, что его весело реверсить 😉