LA2Soft форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » LA2Soft форум » В А Ж Н О ! ! ! » Продажа !!! la2brute 1.4 + Monster_1[1].7


Продажа !!! la2brute 1.4 + Monster_1[1].7

Сообщений 1 страница 2 из 2

1

ЦЭНА 50евро !!!
ICQ 235366536 !!!

0

2

// LineAge II: breaking the laws
// publishing date: 17.07.06
// darkgrey / d4rk@securitylab.ru
// m00.blackhat.ru

I. Введение

II. Login-сервер

    1. Шифрование пакетов
    2. Структура пакетов
    3. Конструктор RequestAuthLogin-пакетов на Си

III. Game-сервер.

    1. Процесс авторизации на сервере
    2. Шифрование пакетов
    3. Протокол
    4. xID и ObjectID
    5. Примеры пакетов:
         a) скупка/продажа
         b) личка
         c) OID и IID
         d) говорим с NPC на примере разучивания скиллов

IV. Проблемы и как можно их использовать

    1. отсутствие лимита на кол-во попыток авторизации
    2. шифрование пакетов
    3. Удалённое определение версии lineage2 сервера
    4. Удалённое "подвешивание" login-сервера
    5. Клонирование
    6. Создание "мутантов" и смешение скиллов
    7. Бессмертие
    8. 'remote DoS' и что это даёт
    9. integer overflow в сетевом движке l2j
    10. SQL-injection
    11. Заточка (или сказка о 100%-ом enchant'е)
    12. Геодата (хождение сквозь стены)
    13. Прикол с SocialAction (0x1b)
    14. Баг в Ride (0x6a)
    15. Выкидываем из игры чаров
    16. Баг с RequestRestartPoint (оживление и побег из тюрьмы)
    17. Раздеть чужого персонажа не зная ни логина, ни пароля - разве это реально?
    18. Итог

V. Баги нового поколения

VI. Пара слов о С4

VII. Послесловие

VIII. Ссылки

IX. Приложения к статье

I. Введение.

Что же такое lineage? Это представитель новомодного жанра (класса?) игрушек - MMORPG
(Massively Multiplayer Online Role-Playing Game). Я бы даже сказал один из самых
удачных и популярных, если не самый =). Конечно, трудно говорить о популярности этой
игры, т.к. посчитать точное количество "втянувшихся" в lineage, наверное, невозможно,
но такие серверы как lineageii.ru (с максимально зарегистрированным онлайном в
10 000 человек) и оффициальный lineage2.com (со всеми 100 000, при том, что он платный)
дают понять, что цифра должна быть внушительной.
Суть игры заключается в том, что (как и в любой другой RPG) у вас есть свой персонаж и
огромный мир, в котором нужно добывать деньги, одежду, оружие, опыт. Для того, чтобы в конечном
итоге драться с такими же как ты игроками и тешить своё самолюбие победами. Некоторым людям,
у которых ну никак не ладится реальная жизнь, она позволяет самореализоваться в виртуальном мире -
стать известным воином и даже найти невесту (да, девушек в lineage играет тоже немало).
Среди всех остальных online (да и не только online) игр, lineage подкупает своей
графикой. Мне лично поначалу казалось невероятным, что кто-то смог создать такие
чудесные трёхмерные красоты для простой игры.
Но есть у игры и тёмные стороны. Во-первых, она имеет свойство затягивать. Причём не
просто затягивать, а вызывать зависимость, с которой крайне сложно бороться. Во-вторых,
сами понимаете, в индустрии, в которой крутятся сотни тысяч игроманов из практически
всех слоёв общества, дело без денег не обойдётся (как и всё в нашей жизни). Ведь у
некоторых людей, имеющих семью, работу, просто нет времени на то, чтобы месяцами
прокачивать своего персонажа до нужного уровня. Такая геймерская прослойка породила
на свет личностей, которые начали продавать игровые уровни и вещи за реальные деньги,
создав тем самым новую нишу в мире lineage. На данный момент, в зависимости от величины
сервера (и рейтов), стоимость хорошо одетого персонажа высокого уровня может варьироваться
от 300$ (на умирающем antaras.ru) до 5 000$ на официальном сервере. Самое смешное-
это покупка вещей у администрации того или иного сервера. Вдумайтесь, геймер платит
N-ное количество убитых енотов за то, чтобы админ добавил 1 запись в базу данных игры.
Вот как делают деньги из воздуха.
Что же, я что-то увлёкся описанием игры ) Сказывается год ,на неё потраченный.
Безусловно, в подобной индустрии (где закручены деньги и тучи наивных и, порой глупых
геймеров) дело без нас - пытливых умов - обойтись не может. Кто-то покупает персонажей,
кто-то создаёт и прокачивает сам, мы же выбираем третий, непроторённый путь.
Дело в том, что за несколько лет существования этой игры, в ней не было найдено не одной
уязвимости (за исключением сугубо игровых багов), для неё не было написано не одной программы,
которая могла бы открыть злоумышленникам доступ в чужие аккаунты. А знаете почему?
Мне кажется, молодых, неопытных багоискателей (постами которых пестрит bugtraq) отталкивало злое
шифрование пакетов в lineage. Причём, даже в расшифрованном виде, они представляют собой
беспорядочный набор символов.
Может быть, старички помнят мою статью про протокол клиент-серверного взаимодействия и
уязвимости Half-Life (securitylab.ru/analytics/216301.php). Целью той статьи было
описать игру и предоставить на блюдечке почти всё, чего я достиг в её изучении. В этой же статье
я поведаю как же расшифровывать траффик lineage2, расскажу немного об особенностях
протокола, ну и предоставлю несколько наработок (как своих так и чужих), все остальное
публиковать не буду, так как повальное использование оного может привести к хаосу в этом
прекрасном, сбалансированном и вполне сформировавшемся виртуальном мире =)

ВНИМАНИЕ.
1. сразу предупреждаю, я иногда буду возвращаться к статье про half-life, ибо аналогии помогут
вам легче понять написанное. Да и мне писать проще.
2. статья писалась на основе анализа расшифрованных пакетов и изучения исходного
кода "самопального" lineage2 сервера l2j, написанного на яве. Соответственно, статья 100%
действительна для l2j, а для официального настолько, насколько l2j действителен для него =)
3. все исходники написаны под linux. Для компиляции нужна либла blowfish. Либлы из openssl
package подойдут при маленькой модификации кода.
4. кстати о модификации кода. В исходниках, предоставленных в статье, есть небольшие ошибки
в логике, дабы исключить их бездумное использование. Если вы вникнете в статью, то и пофиксить
их не будет проблемой.
5. и последнее. Полная версия статьи была доступна долгое время (пол года) только ограниченному
числу людей и с выходом с4 версии lineage2 и фиксами большинства багов резко устарела.
Про С4 я расскажу немного в конце.

II. Login-сервер.

Введение.
Начнём с того, что разработчики lineage2 отделили логин сервер от игрового, дабы более менее
разгрузить и без того забитый канал игрового сервера. Кроме того, логин сервер имеет свойство
повисать (причём, это началось с с3 версии lineage и продолжается по сей день) и не пускать
пользователей на сервер. Зато те, кто уже играют, не испытывают совершенно никакого дискомфорта =)
А вследствие отсутсвия всё тех же багоискателей, которые могли бы найти и внятно объяснить девелоперам,
где же всё-таки закрался баг, он остаётся до сих пор непофиксанным. Так вот, не смотря на всю прелесть
идеи с разгрузкой игрового канала, наши отечественные админы упорно лепят логин сервер на одну машину
вместе с игровым.

1. Шифрование пакетов.
Для шифрования пакетов, которыми login-сервер обменивается с клиентом, lineage использует blowfish.
Да, тот самый алгоритм, который был разработан Брюсом Шнейером в 1993 году. Про blowfish важно знать,
что это симметричный блочный шифр. Симметричный - означает, что алгоритм использует 1 секретный
ключ, которым и шифруются/дешифруются данные. А если говорить конкретно о blowfish, то на основе
этого ключа генерируются 18 32-битных подключей и 4 матрицы размером 256 32-битовых слов каждая.
Которыми, в свою очередь, шифруются/дешифруются данные.
Блочный шифр - означает, что blowfish обрабатывает данные блоками (по 8 байт). А ещё это означает,
что если целостность шифротекста была нарушена, то часть мы по-любому сможем восстановить.
Применительно к lineage, нужно сказать, что ключ, на основе которого генерируются подключи,
является константой и чётко прописан в исходниках l2j (вот на чём сыпались 99% исследователей
lineage, которые предполагали, что ключ должен передаваться в одном из пакетов - см. ссылки в
конце). Ещё важно отметить то, что первые 2 байта данных пакета _не_шифруются_.
Чтож, с шифрованием, я думаю, мы разобрались. Идём дальше.

2. Структура пакетов.
Первые два байта пакета (те, которые не шифруются) содержат длину данных пакета (как и в halflife).
Следующий байт несёт в себе информацию о типе пакета. Логин-сервер обрабатывает пакеты:
0x00 - RequestAuthLogin (запрос на авторизацию - содержит логин и пароль)
0x02 - RequestServerLogin (запрос на заход на сервер)
0x05 - RequestServerList (запрос на список серверов)
На остальные он попросту не отвечает, оставляя лишь запись в логах. Клиентом же обрабатываются
пакеты следующих типов:
0x01 - авторизация не прошла
0x03 - вы успешно авторизованы
0x04 - ответ на RequestServerLogin
0x06 - ответ на RequestServerList
А также несколько дополнительные пакетов о бане аккаунта, проверки версии и тд - они представлены ниже.
Следующий байт является дополнительным к вышеописанным запросам. Например, если сервер ответил
нам на запрос авторизации пакетом типа 0x01, то следующий байт будет содержать причину, по
которой авторизация не прошла (для нас важны: 0x03 - неверный логин или пароль, 0x07 - кто-то уже
юзает аккаунт, 0x11 - установлен временный пароль). Но на самом деле этот байт уже не совсем служебный.
Например, в RequestAuthLogin пакетах с этого байта начинается логин.
Далее идёт Н-ное число байт, которые уже не являются управляющими, а несут информацию, определяемую
типом пакета. Ну, например, для "RequestAuthLogin" это поле содержит логин и пароль.
Важное предназначение имеют последние 8 байт пакета. Они содержат чексуму всего того, что идёт до
них, за исключением опять же первых двух байт пакета. Каким же образом вычисляется эта самая чексумма?
Из данных поочерёдно отделяются 32-битные слова. Первое XOR'ится со вторым. Результат этой операции
XOR'ится со следующим словом и так далее. Пример вычисления чексуммы будет продемонстрирован ниже.

3. Конструктор пакетов на Си
Чтож, со структурой пакетов мы разобрались, теперь можно реализовать программно всё, что было
описанно выше.

0


Вы здесь » LA2Soft форум » В А Ж Н О ! ! ! » Продажа !!! la2brute 1.4 + Monster_1[1].7