Показать сообщение отдельно
Старый 14.07.2015, 15:07   #1
_sharky_
Читер со стажем
Аватар для _sharky_
OFFLINE
Регистрация: 14.12.2007
Сообщений: 502
Благодарностей:
38 всего
Мнения: + 245
Репутация: 118

Статейка про некогда нашумевшие программы [Конкурс №58]


Статья была написана к конкурсу №58 еще в начале 2014 года, но т.к. на конкурс практически небыло заявок, она не публиковалась. Публикую её практически в том-же виде, что и писал для конкурса.

Все наверное знают про две интересные программы под названием Admin Tools и RFC (программа, которая вытаскивает пароль и логин от базы), которые подпортили жизнь очень большому количеству нубо фришкам. Это можно судить по разделу с базами: https://www.rf-cheats.ru/forum/forum...460&order=desc



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

В качестве примера выступают оригинальные исходники этих самых нашумевших программок.



Итак, пойдём по порядку. Программка Admin Tools.


Как появилась идея создать Admin Tools?


История создания этой программы началась еще в далеком 2008 году, в то время существовал такой “прекрасный” сервер, который назывался NovusGalaxy.

В то время у меня была сборка 5 апа с рабочим ContolServer’ом и Manage Tools.

Как-то я баловался с ГМ-чатом в MT, и написал туда комманду и к моему большому удивлению зона упала. После этого, я решил попробовать приконнектить эту громадную связку к серверу NovusGalaxy, и опять-же был очень удивлен тем, что это получилось.

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

Первым делом, я наснифал пакетиков, разобрал их структуры (тогда я ещё незнал что есть замечательная штука под названием IDA, да и вообще был далёк от реверсинга и т.п.), после чего написал небольшую программку на Visual Basic 6 которая имела несколько функций:
  • отправка сообщений в ГМ чат;
  • включение/выключение логин и гейм-сервера;
  • автоматическая отправка текста;
  • Отправка GM комманд на включенный сервер;


А теперь перейдём к описанию уязвимости:


Данная уязвимость заключается в следующем: В игровом сервере имеется функция обработки ГМ комманд (ProcessCheatCommand), она имеет 2 параметра: указатель на класс игрока вызвавшего её (pOne) и комманда (pwszCommand).

При использовании в обычном режиме параметр pOne содержит указатель на класс вызвавшего игрока, однако при вызове функции из анализатора Account-Zone протокола туда передаётся NULL. А так как большая часть ГМ комманд РФки требует наличие валидного указателя pOne (т.к. исполняемый код комманд реализован именно в пространстве класса CPlayer, а он равен NULL), тут в процессе происходит исключение 0xC0000005 (ACCESS_VIOLATION) и он соответственно закрывается без сохранения последних данных.


Реализация:


После установки соединения с аккаунт-сервером необходимо послать пакет авторизации, а именно (опкоды 0x32 0x01 см. в примере Form1 ln. 214), затем можно посылать пакеты изменения состояния (опкоды 0x32 0x05 для зоны, 0x32 0x0B для логина) или ГМ чата (опкоды 0x32 0x07). Исходники содержат в себе все необходимые комментарии.


Как появилась идея создать RFC (RF Cracker)?


Данная уязвимость была найдена намерено в 2011. Меня попросили посодействовать в “убивании” одного сервера, на что я согласился.

На тот момент, я уже достаточно хорошо ориентировался в протоколах РФки, и знал что аккаунт-сервер передаёт логин и пароль от билинговой БД к зоне. После изучения анализатора аккаунт-сервера я пришел к выводу что можно без всяческих проблем одним пакетом (запросом) получить нужные мне данные (т.к. там нет проверки авторизации зоны на аккаунт-сервере).


Описание уязвимости:


У меня ОЧЕНЬ хорошие новости для тех, кто держит открытыми порты аккаунт-сервера!

Особенно, если открыт порт от SQL сервера + ко всему они очень любят использовать аккаунт sa (Server Admin), а имея доступ к SQL можно оперировать системой через коммандную строку используя системную хранимую процедуру xp_cmdshell (по умолчанию она выключена, но включить её не составит особого труда).

Соответственно вы получаете полноценный shell доступ на машинку, а там можно делать всё, что вашей душе угодно.


Например:
  • Рекусивное форматирование
  • Слив любых файлов (абсолютно любых)
  • И вообще все, что можно сделать с помощью cmd



Реализация:


Устанавливаем соединение с аккаунт-сервером по порту 29000, отправляем пакет {0x05, 0x00, 0x01, 0x1F, 0x00 }, и получаем ответный пакетик c опкодом {0x01, 0x20} затем, просто выводим из него 4 строчки длинной 32 байта (DSN, DBName, Account, Password) и в конце int (порт SQL сервера). Разобрав пакет идём в SSMS (Sql Server Management Studio) и начинаем делать свои дела.

Во вложении исходники тех самых программ в первозданном виде.
Пароль к архиву:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 100 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Чтобы его прочитать, вы должны заработать сообщения. Как это сделать бесплатно, описано в правилах форума. Как купить доступ, описано в Платных услугах.
Вложения
Тип файла: 7z _sharky_rf-cheats.ru.7z (120.0 Кб, 63 просмотров)

АХТУНГ!
Злюкен собакен!
Яйцен клац-клац
 
Ответить с цитированием
Сказали спасибо:
Big Bad Sensey (17.07.2015), Dino (17.07.2015), FlyGirl (16.07.2015), Aken (16.07.2015), Kuler9727 (15.07.2015), [Zeto] (14.07.2015), SabotageGT (14.07.2015), Paladin (14.07.2015), Жилистый (14.07.2015)