«Возвращаюсь к блоггингу: следующая заметка о ботах появится в течение следующих 24 часов. Будем обозревать систему безопасности CEREUS», — рассказал Томас Баккер сообщением в твиттер. Небезызвестный деятель онлайн индустрии, порадовавший публику серией блогов о ботостроительстве в конце прошлого года – неожиданно прекратил информировать членов покер сообщества. Возвращение Томаса заставило ждать без малого четыре месяца и сегодня герой возвращается с новой заметкой.
Томас Баккер, 21 марта 2011 года
«Небезопасная безопасность: раскодирование защиты SSL 4-мя строками дополнительного кода».
Защита покер сайтов от вторжения искусственного интеллекта является многосторонней задачей. Список включает в себя активное обнаружение – поиск ботов на серверах рума и на стороне клиента, а также пассивную защиту: периодически обновляя барьеры безопасности, оператору нужно осложнить жизнь боттера, который пытается проникнуть в систему. В рамках этой заметки, на примере программного обеспечения Cereus Network, мы узнаем — как могут обходиться протоколы защиты румов.
С момента происшествий Чёрной пятницы Cereus Poker Network неизбежно покинула ряды функционирующих операторов. Именно по этой причине нижеследующая история нашла оплот в моём блоге. Многие помнят, что представительства сети Cereus пережили многочисленные скандалы в прошлом. Одним из случаев подобного характера стала шумиха вокруг уязвимости в системе безопасности сети: технари из PokerTableRatings обнаружили, что поток данных между сервером и клиентом зашифрован весьма недобросовестно. Ответом на публичное сообщение стала немедленная реакция ответственных лиц сети, которые быстро перекрыли утечку с помощью внедрения протокола безопасности SSL. С этого момента все сообщения типа сервер-клиент были налажены и любой (включая боттеров) злоумышленник лишился возможности перехватывать драгоценный трафик слишком легко. Правильно?
Вероятно вы в курсе — что на самом деле означает для боттера лёгкий и успешный перехват трафика онлайн покер сети. Такой боттер может получать данные о статусе игры за столами и передавать их своему искусственному интеллекту, забыв о необходимости скрэппить или считывать память, а также страхе оказаться обнаруженным. Кроме прочего, это возможность изменять сетевой трафик: перед боттерами откроются широкие возможности по сокрытию или замене любых данных, которые отсылает и принимает сервер покер оператора. Одним словом — имея полный контроль над сетевым трафиком можно было бы полностью обойти все барьеры безопасности. Что ж, давайте посмотрим, что мы можем сделать с клиентской частью программного обеспечения Cereus …
Взглянуть на схему работу внутренних механизмов
После того, как Cereus переключились на новый протокол безопасности, я задался целью изучить метод реализации этого их действия. Проследовав в директорию с установленной клиентской программой на своём компьютере, я обнаружил два интересных файла:
• libeay32.dll
• ssleay32.dll
Оба они относятся к OpenSSL, криптографическому пакету с открытым исходным кодом для работы с протоколами SSL/TLS. Безусловно, это один из методов обезопасить клиент, но с точки зрения боттера – выбор очень интересный. Почему? На этот вопрос лучше не отвечать.
Скажу лишь, что Cereus никогда не отличался слишком усердной борьбой против ботов, но какие-то усилия всё же прилагались. Насколько мне известно [как вы знаете, я и сам пробовал себя в роли боттера] программное обеспечение сети инициировало запуск специального модуля, целью которого было обнаружение известных ботов среди запущенных процессов операционной системы пользователя. А примерно за год до закрытия они внедрили и нечто под названием «WinRing0», представлявшее собой драйвер ядра и открывавший запущенной клиентской программе сети более развёрнутый доступ к вашему ПК, для сканирования на предмет наличия ботов и так далее. А тем временем Cereus продолжали использовать уязвимый OpenSSL, сводя полезность нововведений к минимуму.
Ход Троянским Конём
Что можно сделать с имеющейся в нашем распоряжении библиотекой DLL, которую сеть использует для передачи всего своего трафика? То, для чего лучше всего подходит любой открытый канал связи: посмотреть на его исходный код и делать всё, что душе угодно!
Я скачал исходный код для OpenSSL с их официального сайта — www.openssl.org/source/. Затем я посмотрел на код внутри файлов программного обеспечения Cereus и сравнил его с исходным кодом, чтобы определить – какая его часть отвечает за шифрование и расшифровку трафика. Процесс довольно незамысловатый, но требующий времени, поскольку в архиве с исходными кодами, которые я скачал с сайта, было всего 2,215 файлов…
Так или иначе, после некоторых копаний в куче вложенных мануалов я, наконец, обнаружил искомый файл – он расположился в директории «openssl-1.0.0X/ssl”-directory» и назывался «ssl_lib.c». Файл включил в себя две интересующие нас функции [код].
С того дня как в Cereus стали использовать новые протоколы безопасности, шифрование и дешифрование трафика сети проходило именно через две указанные функции. Таким образом, боттер, имеющий намерение получить ценную для него информацию – нашёл бы вышеупомянутый код очень полезным для себя: просто добавив пару строк своего собственного кода, хакер мог бы наладить экспорт всех данных в буфер, откуда и начался бы заветный процесс реверс-инжиниринга сетевого протокола Cereus (что, разумеется, займёт довольного много времени).
Скажем проще: путём добавления нескольких простых строк кода в эти функции я мог бы чрезвычайно ненавязчиво перехватить локальный сетевой трафик, который моему покер клиенту передаёт сервер Cereus. Это, разумеется, не означает, что я могу также легко управлять чужими данными – нет, я облегчаю просмотр трафика только локально, на своём собственном компьютере.
Так или иначе, наличие упомянутого DLL позволяет нам сделать кое-что ещё, помимо простого перехвата данных. Например, вписать своего бота (или какой-то код, который инициирует запуск нашего ИИ) прямо в функцию безопасности Cereus. Благодаря этому модуль обнаружения ботов Cereus никогда не увидит нашего вторжения, потому что теперь бот и рум, это один и тот же процесс в рамках системы!
Так как же противостоять такому вторжению?
Существует несколько способов. Во-первых, они должны были интегрировать заветный код OpenSSL (ту самую библиотеку DLL, которой мы воспользовались) в исполняемый файл клиента сети. Благодаря этому хакер полностью утратил бы возможность перекомпиляции [изменения кода] систем безопасности.
Во-вторых, даже если мы представим, что реализация вышеуказанного метода слишком сложна – члены Cereus, по крайней мере, могли бы организовать проверку контрольных сумм файлов в директории своей клиентской программе при её запуске. То есть каждый запуск программного обеспечения рума инициировал бы проверку целостности тех или иных DLL и в случае их несоответствия оригиналам – форсировал бы их скачивание из интернета с целью замены. Подобным же методом пользуются многие другие сайты – iPoker, например.
Но ведь и это можно обойти!
Да. Каждая система безопасности клиентской стороны программы, в достаточной степени, подвержена взлому: не имеет значения, сколько уровней защиты использует разработчик, потому что всегда наступает момент, когда любой инструмент шифрования рума оказывается в руках пользователя. Тем не менее, разработчик может попытаться сделать их сложно доступными. Частые и небольшие изменения системы свяжут руки хакеров.
На примере Cereus мы видим, что попыток усложнить доступ к механизмам безопасности – просто не было. Для получения ключей кодирования не надо было прибегать к таким комплексным операциям как считывание памяти. Не нужно было никаких хуков, чтобы перехватывать закрытые сообщения между клиентом и сервером оператора. Пара элементарных строк кода и клик кнопки «компилировать» решили все эти задачи на «отлично».
В том случае, если покер румы всерьёз озабочены безопасностью своего программного обеспечения, им необходимо продумывать каждый возможный расклад и прорабатывать каждый фрагмент клиентской стороны. Если оператор допускает лики своего ПО, боттеры непременно отыщут и бесцеремонно воспользуются ими. Для этого у них есть невероятный финансовый стимул. Сегодня наступает время, когда операторам необходимо задумываться над безопасностью своих сервисов предельно серьёзно.
Томас Баккер, соучредитель ресурса «Subject: Poker», программист и автор обучающей литературы о покере. Следить за обновлениями его работ можно на страницах этого блога, а также в twitter’e.
Источник: http://www.pokeroff.ru
Комментарии