World of Tanks, беглый анализ используемых технологий безопасности

Dec 02, 2012 19:16

Антиотладочных механизмов/крипторов/обфускаторов на вскидку не обнаружил, спокойно ковырял в ольке 1.10. Клиент большой, но видимо это единственная защита от анализа - типа вам будет лень ковырять СТОЛЬКО добра :) Ну и 9й cpp рантайм с замангленными именами неизменно доставляет, когда видишь километровые имена функций в отладчике ( Read more... )

fun, security, games, online, research

Leave a comment

ctocopok December 8 2012, 08:38:28 UTC
Если я правильно понял, то сам пароль не хранится в файле C:\Users\\AppData\Roaming\Wargaming.net\WorldOfTanks\preferences.xml там сохраняется логин (e-mail) в виде base64 текста в параметре login,

Насколько я помню, перед base32 (а не 64) кодированием логина и пароля в preferences.xml пароль шифруется обычным XOR по смешному ключу в виде прикольного слова.
RSA? не, не слышали. в *этой* части клиента его нет.

И движок надо не в ехе расковыривать, а в питоне. Там все вкуснее и интереснее.
Хотя, если поможете снять дамп некоторых модулей, находящихся именно в ехе (прилинкованных из Питона же), будет оченно приятно и благодарственно.

Reply

roman_pro December 8 2012, 12:00:14 UTC
Может это в старых версиях так было ? У меня связка base64_decode+CryptUnprotectData нормально расшифровывает данные, колхоза на базе XOR не обнаружил (возможно плохо искал).

А что ковырять надо питон - это я уже понял, там интересные потрошка торчат например в файле accountcommands.pyc:

CMD_SET_MONEY
CMD_ADD_XP
CMD_ADD_TMAN_XP
CMD_UNLOCK_ALL

говорящие названия команд. Правда наивный шаг прописать эти команды в preferences.xml примерно так:

KEY_F9

KEY_F10

KEY_F11

KEY_LEFTMOUSE

KEY_MOUSE1

...

не проканал. Иначе всё было бы слишком уж просто :)

Reply

ctocopok December 10 2012, 06:13:05 UTC
Взглянул в preferences.xml после долгого перерыва.
Действительно, раньше пасс умещался в 16-20 байт (на глазок, не считал), а счас это - длиннющая строка.
И тем не менее, уверен, расшифровывается она в самом питоне.
хотя, возможно, Питон импортирует нечто, на С компилированное. В таком ключе работы Питона я не разбирался. :)

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

В общем, добро пожаловать в клуб ковырятелей танчиков :)

Reply

roman_pro December 10 2012, 06:44:57 UTC
Эта часть наверное неинтересна, но для коллекции всё же приведу :)

Reply

ctocopok December 10 2012, 08:15:46 UTC
Да, прикольно.
и верно подмечено, самое вкусное - в Питоне. А самое-самое - в Питоне на сервере :)
Еще в клиенте есть обрывки SQL-запросов (я последнюю версию клиента смотрел, когда она была 0.7.1 вроде, то есть несколько месяцев назад, еще солнышко светило).
Интересно было бы посмотреть, как создаются и пишутся реплеи, удостовериться, что в клиент не идут лишние данные (wall-hack , aim-bot), пощупать на предмет arbitrary SQL-запросов в плане получения лишней информации о чужих аккаунтах.

прием подкладки фейковой dll мне очень по нраву, сам когда-то так какой-то простой lpt-dongle обманывал.

Reply

roman_pro December 10 2012, 08:49:21 UTC
Что-то мне подсказывает, что разработчики/админы используют тот же клиент, только на сервере у них стоят флажки в базе, после чего клиент открывает дополнительные возможности. Явно там админская и отладочная консоль есть, надо бы понять как их вызвать.

Приём с dll старый, но не теряющий своей актуальности.

Reply


Leave a comment

Up