Читерство

Я никого не призываю побеждать таким образом, я только за честную борьбу и конкуренцию. Но раз вокруг нас одни мошенники не дающие шансов на победу, попробуем повлиять на ситуацию иначе. Вызовем резонанс, сломаем починим систему, что бы её сделали справедливой и честной!

А боты ли?

Я задался этим вопросам ещё в первой статье которую писал на эту тему, тогда меня знатно бомбило от того что победить не дают какие-то странные люди которые вечно в топе и у них куча медалей. Как они это делают, неужели они сверх люди обладающие невероятной реакцией, логикой, и мышлением? Ну конечно же нет, на самом деле это весьма ограниченные люди, которые пытаются самоутвердиться таким низменным способ.

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

Почему это возможно?

Думаю весьма логичный вопрос для многих страждущих, ведь по сути такой возможности быть не должно, вот так тупо и в лоб накручивать себе очки (точнее подменять на любые), и таким образом одерживать победу. Я в начале и сам думал что это просто энтузиасты написавшие код бота, который играет за них, но в реальности всё намного проще, и я вам это покажу. Итак кто же виноват в наличии уязвимости? Безусловно разработчики сервиса, потому что они даже не пытались защитить данные, они не пытались предотвратить текущую ситуацию, хотя она уже больше года беспокоит многих.

Инструментарий

Итак что нам понадобиться что бы осуществить подмену данных? Конечно же мой любимый Charles Web Debugging Proxy  мы с ним знакомы очень давно, и нас многое связывает. Я использовал его ещё в те времена когда ВК болел болезнью под названием Счастливый фермер, эх были времена… Конечно же вас никто не принуждает использовать коммерческий продукт с закрытым исходным кодом. Можно использовать например Squid, весьма неплохой но для новичка сложноват. Или более простой и для многих уже ставший привычным Mitmproxy, справиться с этой задачей на ура.

Какой бы инструмент вы не выбрали, стоит помнить что сайт викиум работает по протоколу https, что подразумевает факт его шифрования. Следовательно вам будет нужно *в зависимости от выбранного инструмента, установить “прозрачный” сертификат, который и будет заниматься расшифровкой и зашифровкой трафика.

Этап развертки

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

Что ищем?

Алгоритм поиска предельно прост. Заходим в игру, и открывает дев тул (F12 для хрома), и переходим во вкладку Network в которой увидим сразу кучу мусора который к тому же будет постоянно пополняться телеметрией от яндекс метрики. Да-да викиум следит за каждым вашим кликом, анализируя и обрабатывая эти данные *(возможно даже продаёт потом). Итак для удобства работы нажимаем на иконку с перечёркнутым кругом

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

wikium читы

Что нам это даёт?

Прежде всего мы получили чёткое понимание что результаты игры отправляются на сервер в виде POST запроса, в теле пакета содержится необходимая информация для сервера, что бы обновить “ваш” счёт и обновить турнирную таблицу. К сожалению Chrome DevTools не обладает инструментарием для отлова и модификации пакетов по этому следующим шагом будет воспроизвести все эти манипуляции в софте описанном выше, в моём случае это Charles.

Charles Web Debugging

Начнём с того что я искренни рекомендую закрыть все вкладки браузера, по причине того что трафик с них так же будет попадать в наше сито, усложняя процесс поиска. Теперь воспроизводим все те же манипуляции, запускаем игру и играем до самого конца (можно не играть на самом деле, просто сделать пару очков для примера).

Breakpoints

Важный этап наших махинаций это установить полученный пакет в список прерывания. Данная манипуляция позволит нам в следующий раз не отдавать пакет серверу, а поймать его в свои грязные читерские лапы, и изменить его содержимое. Как именно настраивать breakpoints в чарлики, я вам конечно же не покажу по этическим соображениям. Но кто ищет, тот всегда найдёт 😉

Повторение цикла

Как и сказал выше, теперь всё что нам нужно это запустить игру снова, и заработать немного очков, совсем не важно сколько. После того как пакет будет пойман, мы просто изменяем занижение “score”: 66666 и жмём на отправку пакета. Следом ловим ещё один, он будет сигнализировать об успехи тёмной операции, а на экране мы увидим заветные цифры.

Подводим итоги

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

А теперь по беспределу