Данная заметка является продолжением цикла статей о современных покер ботах, с первой и второй частями, а также дополнением ко второй части, вы можете ознакомиться на страницах нашего сайта.
Кошки-мышки
Покер румы не любят ботов. Поэтому каждая игорная площадка, в текстах Условий и Требований предоставления собственных услуг, налагает запрет на эксплуатацию искусственного интеллекта. В то же время, большинство сайтов, в определённой степени, активно борется с явлением боттинга, и в данной заметке мы рассмотрим – какие именно меры предпринимаются операторами онлайн покера. В то же время, однако, я не буду размышлять о способах улучшения безопасности игорных сайтов так же, как и не стану приводить полный список мероприятий, осуществляемых румами для обнаружения ботов. Тому есть несколько причин:
1. Публичное разоблачение противодействий румов предупредит боттеров, поэтому существующие, но неизвестные, ровно как и новые методы – не должны быть раскрыты;
2. В настоящий момент я поддерживаю контакт с одним или более покер сайтами, с целью достижения трудового сотрудничества (совместно с Ноа Стивенс-Давидовичем) и оказания помощи в выселении ботов (своё предложение мы опубликовали тут).
Таким образом, данная заметка будет повествовать о существующих барьерах безопасности, которые создают покер румы на пути боттеров, и о том – как эти барьеры преодолеваются самими боттерами. Все сказанное мной далее, вероятно, известно среди хороших операторов искусственного интеллекта, поэтому ничему новому я их не научу.
Итак, методов борьбы румов с боттерами существует практически столько же, сколько самих румов. Боты, однако, имеют массу основных свойств, в виду которых все они похожи между собой, поэтому существует ряд стандартных процедур предпринимаемых румами против искусственного интеллекта. В свете различных степеней защиты, все боттерские приключения берут своё начало из-за столов наименее охраняемых площадок. Как только операторы получат свой первый заработок в небольших румах, они смогут посвятить время совершенствованию систем анти-обнаружения своего бота, постепенно расширяя бизнес.
Далее, в форме «действие-противодействие», мы рассмотрим некоторые популярные приёмы покер румов, используемых ими против боттеров на протяжении последних нескольких лет. Условно, все подобные мероприятия можно разделить на два типа:
• Обнаружение присутствия бота в руме;
• Вмешательство в рабочий процесс бота (данный пункт будет рассмотрен во второй части заметки);
Обнаружение
Существует несколько методов, прибегая к которым румы засекают действующих за их столами ботов. Обнаружение проходит без предупреждения для самого бота (т.е. он не видит, например, всплывающее окно, где написано: «Вы бот?») и эффективность его, в зависимости от применяемого метода, бывает различной. Рассмотрим самые популярные из данных приёмов:
Исполняемые файлы
Боттеры: запускают бота и клиентскую часть программы на одном компьютере.
В самом начале своего пути – покер румы ещё не обладали свойствами обнаружения ботов, поэтому боттеры могли свободно действовать в рамках единственной операционной системы;
Румы: обнаружение имени процесса.
Ответным шагом покер сайтов стало примитивное отслеживание процессов, запущенных в системе пользователей, на наличие подозрительных названий, например – winholdem.exe;
Боттеры: динамическое переименование процесса.
Многие операторы, продающие ботов широкой общественности стали вносить поправки в свой продукт, благодаря которому пользователи могли переименовывать процесс, ответственный за работу бота в операционной системе;
Румы: обнаружение подозрительных процессов по параметрам.
Впоследствии, покер румы стали отслеживать не имена, а сторонние свойства процессов (вроде объёма занимаемой памяти), чтобы засечь действующего бота;
Боттеры: использование руткит-подобных техник для сокрытия присутствия бота в системе.
Операционные системы Windows ведут сбор информации об активных рабочих процессах благодаря штуковине, именуемой «структура EPROCESS». Данная структура предполагает двухсвязный список всех запущенных процессов системы (*.exe фалов). Связанный список, в свою очередь, это способ упорядочивания кучи объектов, предполагающий создание ссылок на каждый запущенный в системе процесс.
Итак, покер сайты ищут запрещённые процессы в системе пользователя, проходя через связанный список, элемент за элементом, сравнивая каждую его деталь с допустимыми безопасностью рамками. Но, чтобы обойти эту дотошную проверку – достаточно было просто удалить секретный процесс из этого списка! Провернуть такой ход, помогало обращение к данным системы и последующее перенаправление процесса, ответственного за работу покер бота, на адрес нового элемента списков (в виду двухсвязности списка – это нужно сделать дважды). Благодаря такому ходу боттеры смогли противостоять методам традиционных проверок. Примечательно, что даже после формального удаления из системы – процесс будет продолжать свою работу. Это связано с тем, что внутренние процессы операционной системы запускает не сам Windows, который, в то же время, поддерживает работу списков, являющихся частью любого процесса.
Румы: замена традиционных методов обнаружения процессов в системе на альтернативные.
Если вы получили достаточно глубокий доступ к системе, то в вашу компетенцию входит возможность обнаружения чего угодно (хотя лично я не в курсе – насколько глубоко в систему проникает запущенный на компьютере пользователя покер клиент). Absolute Poker, например, использовал для этих целей штуковину под названием «WinRing0», что в сущности представляло собой драйвер ядра ОС, который получал широкий доступ к вашему компьютеру, для сканирования ботов и чего-то подобного. Как-нибудь позже я напишу о системе безопасности AP, в частности.
Боттеры: перенос работающего бота на другой компьютер
Если на компьютере нет запрещённых активных процессов – то и засекать будет нечего. Исполнение подобного метода стало доступно благодаря нескольким способам, из которых два основных это:
• Программное обеспечение дистанционного управления;
• Виртуализация операционной системы;
Используя такие программы как RDP или VNC, пользователь получает возможность удалённого управления компьютером через сетевое соединение. Сущность взаимодействия заключается в пересылке сигналов между ботом и компьютером, исполняющим клиентскую программу рума. Действуя в рамках сторонней операционной системы, бот получает запрос на действие от VNC или RDP, запущенных на компьютере с работающим программным обеспечением рума, чтобы затем – ответить обратным сигналом, который и будет выполнен VNC/RDP. Любой из аналогов удалённого управления рабочим столом – разрешён румами для использования игроками, которые, например, хотят играть, но не имеют в распоряжении нужного софта на временно используемом ими ПК.
Виртуализация открывает перед пользователем возможность запускать одну или более виртуальных операционных систем (клиент) на его собственной ОС (хост). Запустив программное обеспечение рума внутри, а бота – вне виртуальной системы, боттер открывает доступ к управлению румом для своего бота, параллельно лишая сканнеры рума возможности отследить какие-то следы наличия искусственного интеллекта. Виртуальные машины это довольно распространённое явление и также используются рядовыми игроками в покер, по нескольким причинам:
• Безопасность: запуская покер рум в рамках сторонней (виртуальной) операционной системы, вы сможете уберечь важные данные от повседневных источников опасности;
• Вариации ОС: игрок в покер может использовать не-Windows системы (например Linux или Mac OS X) для повседневной работы, а благодаря виртуальной машине с установленной на ней Windows – игрок получает возможность работать со стандартным программным обеспечением румов.
Как видите – оба метода могут быть использованы для законных целей, и оба они ограничивают покер сайты в сканировании вашей ОС на предмет запрещённых программ. В большинстве случаев техническая поддержка румов отмечает пользователей, использующих один из этих методов, чтобы следить за их игрой более внимательно.
Важно отметить, что покер румы находят запрещённые программы только если знают – что именно нужно искать. Традиционные и некоторые из альтернативных методов поиска ботов работают только для скачиваемых аналогов ИИ (которые всегда обладают одинаковыми свойствами и характеристиками), но не для ботов ручной сборки. В случае с кустарными ботами, всё, что могут сделать румы – сканировать систему на возможные следы инструментов, с помощью которых эти самые боты были созданы.
Несколько лет назад в сети появился некий блог, в содержании которого была опубликована базовая основа для написания покер бота. Спустя пару недель после этого, пользователи, которые желали открыть этот сэмпл у себя на компьютере, установили Visual Studio (среда программирования) с уже установленным в системе софтом PokerStars. В результате эти игроки получили электронное письмо от рума, предупреждающее, что использование ботов – нарушает правила. Вывод очевиден: покер румы обращают пристальное внимание даже на предтечи деятельности боттеров, ведь в описанном случае речь не шла даже о рабочей версии бота.
Чтение данных с сайта
Дабы иметь возможность участвовать в играх рума, боту, как вы уже знаете, нужно быть в курсе – что происходит за столами. Это, в свою очередь, влечёт за собой дополнительные трудности для боттера, использующего нестандартные методы извлечения данных. Наряду с методами, которые мы рассматривали в первом выпуске нашего цикла, существуют и другие, подробнее о которых мы поговорим прямо сейчас. Итак, напомним – боты имеют возможность получать информацию с помощью:
• Скрэппинга (Scraping), или интерпретация происходящего на экране;
• Использования потока информации, предоставляемого сами румом;
• Предыдущего действий, но производимого не столь явным путём (т.е. чтение пула памяти или перехват команд);
• Перехвата и расшифровки трафика;
Боттеры: прямое обращение в функции Windows API для перехвата данных об игре.
Один из путей извлечения информации из-за столов это вторжение между процессами взаимодействия операционной системы пользователя и клиентской стороной программного обеспечения рума. Например, многие сайты используют окна чата, интегрированные в виртуальные столы, которые в действительности реализуются благодаря прямой связи с одной из встроенных функций Windows. Боттеры перехватывают этот диалог систем и передают его содержимое своему боту.
Румы: в случае, если вы не транслируете чат через встроенные системы операционной системы Windows, то перехватывать будет нечего.
Боттеры: использование функций Windows API для запроса данных из покер клиента.
Если покер рум поддерживает функцию чата дилера, то это делает возможным утечку информации в принципе. В представленном случае мы рассматриваем функцию бота – запрашивать данные рума, чтобы получить их копию. Как это происходит? Windows может предложить несколько довольно удобных функций для боттеров: в данной операционной системе программы обмениваются сообщениями о статусах друг друга и одна из команд для получения таких сообщений – WM_GETTEXT. Таким образом, если бот «говорит» покер клиенту: «WM_GETTEXT, пожалуйста, данные своего чата на мой адрес», то клиент послушно реагирует, как и большинство приложений Windows.
Румы: блокируют принятие команды WM_GETTEXT для своего программного обеспечения.
Довольно простая блокировка доступа, которую можно реализовать на низких языках программирования. Благодаря такому нововведению румы прекратили отвечать на запросы бота, просто игнорируя указанную команду.
Боттеры: прямое чтение памяти клиента покер рума.
Вышеуказанное противодействие служб безопасности онлайн покер сайтов привело боттеров к следующему шагу эволюции. Логично предположить, что в случае, когда окно чата дилера отображается на вашем мониторе – эти данные транслируются ещё где-то, в рамках вашей же системы. А если вы имеете в руках хотя бы обрывок этого чата, то сможете перерыть всю память покер клиента в поисках совпадений. Реализованная в подобной манере, функция перехвата данных трудноопределима румами (особенно, если настроена она с использованием виртуальных машин), однако и создание подобного хука – практически не реализуемо ни для кого, кроме опытных хакеров.
В конце концов, покер румы всегда будут испытывать надобность в сообщении с операционной системой пользователя для реализации обмена входящей и выходящей информацией клиентской и серверной программами. Таким образом, боттер всегда сможет найти доступный для перехвата информации источник. Тем не менее, существование такого явления как «чат дилера» и без того содержит все необходимые для бота данные, добыть которые не составляет особенного труда.
Характерные следы взаимодействия
Боттеры: когда ИИ определился в своем решении действовать за отдельно взятым столом, ему необходимо нажать одну из кнопок.
Подобная активность игрока (или, как в нашем случае, бота) поможет покер клиенту определить – какое именно действие было предпринято. Самым простым способом реализовать нажатие кнопки для бота – установить определённые точки за столом, куда ему нужно будет отправлять сигнал клика мыши.
Румы: начали анализировать позиции курсора мыши пользователей в те моменты, когда они нажимали на кнопки за столами, а также засекать время, затрачиваемое игроками на принятие решения.
В большинстве случаев люди не имеют возможности реагировать на действия за столом мгновенно, в отличие от ботов. Точно также живой человек не может всегда попадать в одни и те же точки одних и тех же кнопок за столом. Таким образом, на первичных стадиях борьбы с ботами, сайты учитывали две указанные особенности в поведении своих пользователей.
Боттеры: рандомизировали время реакции и позиции кликов мыши.
Теперь боты в состоянии имитировать поведение человека – передвигать курсор мыши и задерживаться перед принятием того или иного решения. Время от времени боты могут исполнять даже миссклики.
Другим характерным признаком ботов, который также достоин упоминания, это сбои в их логике в некоторых ситуациях. Например, существовали боты, которые автоматически уходили в сит-аут, если за столом оказывалось менее 4-х игроков. В этой связи игроки получили возможность управлять активностью бота при некоторых обстоятельствах. Таким образом, реальностью для ботов такого были ситуации, когда сидя за HU столом игрок уходил в сит-аут каждую руку, будучи не на баоотне, чтобы тут же вернутся и получить свой баттон обратно. Осуществляя такое действие даже на протяжении сотен рук – игрок никак не влиял на решение бота оставаться именно за этим столом.
Характерные следы игровых сессий
Боттеры: настройка ботов на регулярную игру или игру по расписанию.
Люди не в состоянии играть 24/7. Точно так же, они не могут стартовать свои ежедневные игровые сессии в одно и то же время, с точностью до секунд, в отличие от ботов, операторы которых настраивают (или настраивали до тех пор, пока не получили бан) свои программы именно таким образом.
Румы: составление логов о периодах активности и временных затратах пользователей в рамках игр румов.
Подобная статистика, очевидно, необходима для анализа поведения игроков. Хорошие сайты имеют автоматизированную систему, сообщающую о подозрительных пользователях.
Боттеры: рандомизировали расписание игровых сессий, ввели перерывы в активности ботов и т.д.
Очередной защитный барьер, обойти который не составило труда для боттера.
Припоминаю из личного опыта, как видел ботов играющих ровно 8 часов (NL100), а затем уходящих из-за столов ещё на ровно 8 часов, в то время как очередная восьмичасовая фаза начиналась для другой партии ботов. Посменная работа велась с 18 учётных записей (могу ошибаться насчёт их количества, дело было давно).
Стиль игры
Боттеры: «Ух ты, наконец-то плюсовой бот! Запускаем его сразу с 16 аккаунтов!»
Если бот может делать $1k в месяц, то 16 ботов смогут делать $16k. Ну так – какие проблемы?
Румы (или, чаще всего, игроки): «Эй, тут 16 полностью идентичных игроков на лимит!».
Существует предельно низкая вероятность того, что 16 человек смогут играть в полностью аналогичном, статистически, стиле, поэтому использование боттерами таких методов – игра в поддавки.
Боттеры: присваивают каждому боту немного различающиеся характеристики.
Члены покер сообщества часто определяли покер ботов, которые оказывались раскрытыми благодаря исследованию деятельности группы игроков со схожими параметрами поведения. Последний случай раскрытия деятельности ботов в Ongame https://www.cgm.ru/news/884, например, был реализован именно благодаря методу групповых исследований.
А что будет дальше?
Вы, вероятно, подметили, что в каждой из рассмотренных нами цепочек «действие-противодействие» последнее слово остаётся за боттерами. Важно, однако, знать, что приведённые примеры – сугубо базовые. На сегодняшний день существует ряд более комплексных мер, предпринимаемых обеими сторонами, говорить о которых я не будут здесь и сейчас. Тем не менее, во второй части «Обнаружения ботов» мы поговорим о некоторых техниках румов, о которых, скорее всего, вы никогда не слышали! Кроме прочего, во второй части этой заметки мы рассмотрим актуальные методы обнаружения ботов. Приведённые в этой статье методы боттеров могут быть использованы без вмешательства в рабочие процессы клиентской части программного обеспечения покер рума, поэтому их влияние на сторонних игроков исключено. В следующий раз мы обратимся к более вредной для пользователей румов категории боттерских приёмов, явно затрагивающих сторонних игроков.
Томас Баккер, соучредитель ресурса «Subject: Poker», программист и автор обучающей литературы о покере. Следить за обновлениями его работ можно на страницах этого блога, а также в twitter’e.
Источник: http://www.pokeroff.ru
Комментарии