Dymeth Team - раскрываем карты

Автор: KALLlTA4HblU Просмотров: 1802
Менее суток назад я покинул хакерскую группировку Dymeth Team. Ни о чем не подозревая, на следующий день я продолжил спокойно заниматься своими делами.
Ближе к вечеру раскрывается следующая картина - исконный основатель группировки Николай Митрофанов продает домен и группу сообщества по цене 10 тысяч рублей.
Я, признаюсь, был немного изумлен человеку, которому, судя по всему, было некуда потратить деньги, но да ладно - сразу написал Николаю, что характерно, приготовился забрать
третью часть суммы от совершенной сделки - как никак я имел на них право, будучи главным разработчиком Dymeth Team и, кстати, наиболее активным участником.

Получив неожиданный отказ, я сообщил о том, что в противном случае я выложу в публичный доступ все наработки и методы, которыми пользуется группировка, в публичный доступ.
Николай отказал мне и во второй раз, поэтому я принял решение выложить в паблик все программное обеспечение, которое использовалось группировкой Dymeth, все методы взлома,
обходы, ну и так далее. Поэтому поехали, ребятки!

С чего бы начать? Начнем, пожалуй, с теории. Команда Dymeth Team была основана Николаем Митрофановым в середине ноября 2015 года и названа, соответственно, в честь него,
вернее даже в честь его ника. Целью группировки изначально было уничтожение, ну или по крайней мере нанесения урона серверам, которые недостойны существовать - это
уже определялось по ряду характеристик сервера, перечислять которые я не вижу смысла. У всех участников сообщества на тот момент был явный интерес ко взлому и
использованию уязвимостей, использование которых, кстати, принесло очень плодотворный результат. Меньше чем за месяц существования сообщества было взломано
множество действительно крупных (ну как крупных - с большим онлайном, скажем), таких как PlayDay, AngryWorld, MagicCraft, NexusCraft, NeverCraft, MineDex, Forine, ну и так
далее. Заметьте, это не весь список - скорее всего, я что-нибудь пропустил. Еще ряд проектов были взломаны в прямом смысле этого слова - например, был получен доступ по протоколу
SSH к серверам проектов LuckyVerse, IceWynd (опять же, список неполон) - и да, друзья мои, это сделали участники команды DymethTeam.

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

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

Итак, каким же образом мы взламываем ваш сервер? Каким образом получаем доступ к базам данных, SSH? Каким образом разрушаем ваши творения?

Я перечислю все методы взлома, которые использовались Dymeth Team, методы поиска уязвимостей, вещей, которые сделают взлом фактически возможным. Приемы, скажем так. Поехали!

1. Взлом сервера, который использует связку BungeeCord используя "прямое" подключение к режимам вашей сети, минуя лобби (проще говоря - вход напрямую по портам).
Описание: Метод , который использовался при получении доступа, пожалуй, к 80% процентам взломанных нами серверов.
Действия хакера: Взломщик, имея при себе лишь IP адрес вашего сервера, сканирует его с целью найти открытые порт, находит, меняет в клиенте свой ник на ник админа с правами, входит на сервер
используя порт вашего режима (например, Survival), и с этого момента он может делать там все, что посчитает нужным. Вот, собственно, и весь взлом (в том случае, если на вашем режиме нет плагина авторизации,
который запретит взломщику выполнять любые действия. Об этой детали я расскажу немного позже).
Решение проблемы: Все просто. Чтобы к вам не смогли зайти, минуя лобби, необходимо ЗАКРЫТЬ ПОРТЫ, которые использует взломщик для подключения. Если ваши игровые режимы стоят на одном сервере с прокси-
серверов Bungee, то закрывать порты не обязательно - просто измените в файле server.properties каждого режима на localhost, а в конфиге BungeeCord измените IP адреса ваших режимов на localhost, ну или же 127.0.0.1,
как душе угодно. Если у вас несколько выделенных серверов, то вам необходимо воспользоваться утилитой IPTables, если у вас есть SSH доступ к серверу - делается это, например, так - iptables -I INPUT -p tcp —dport ПОРТ_РЕЖИМА -j DROP. Подробнее
про IPTables вы можете почитать в интернете. Если у вас нет SSH доступа к серверу, то воспользуйтесь вспомогательными плагинами - IpList, например. Иными словами, вам нужно сделать все возможное, чтобы к вам нельзя было зайти напрямую по порту.
Помните, если у вас открыты порты, и к вам можно зайти по любому другому порту, кроме порта Bungee (25565, как правило) - ВЫ УЯЗВИМЫ!

2. Продолжаем ломать через порты - пытаемся зайти, но нас отключает: 'If you wish to use ipforwarding, please enable it in your bungeecord config as well'
Описание: В конфиге spigot.yml на сервере жертвы, к которому пытается получить доступ взломщик, значение параметра bungeecord выставлено на true.
Эта опция по большей мере отвечает за факт передачи реального IP игрока при подключении к серверу, находящемуся в сети Bungee. Если эта опция включена,
то при попытке входа на сервер не через Bungee вы будете отключены. К сожалению, это обходится еще проще, чем вы могли себе представить.
Действия хакера: Взломщик пытается подключиться к уязвимому серверу по порту, но отключается: 'If you wish to use ipforwarding, please enable it in your bungeecord config as well'.
Чтобы обойти этот запрет, взломщик воспользуется глобальной уязвимостью Spigot-a - запустит у себя на компьютере, например, безобидный BungeeCord сервер, и подключится
через него к серверу жертвы по порту, минуя запрет на вход Spigot-a. Сделать это можно разными способами - например, указать в конфиге Bungee дефолтный сервер и задать ему
адрес и порт сервера жертвы. Далее просто подключаемся к локальному Bungee, и, вуаля, мы обошли запрет Spigot-a!
Решение проблемы: Закрываем, ребятки, порты. Как это сделать - я подробно описал в первом пункте.

3. Ломаем через порты, но тут бац - AuthMe. Все, нельзя взломать, пароль админский-то не знаем? Ну и ладно - он нам не понадобится!
Описание: Взломщик подключается к вашему серверу напрямую по порту режима, используя ваш ник, но тут натыкается на плагин
авторизации, который не дает ему нанести вреда серверу - все команды и действия для него отключены. Несмотря на авторизацию, хакеру
с большей вероятностью удасться осуществить затеянное.
Действия хакера: Чтобы обойти авторизацию, хакер использует злополучную подмену UUID-a. Что это за штука такая? Давайте попробую объяснить.
В новых версиях игры (начиная, вроде бы, с 1.7), действует система UUID (Universally Unique Identifier). Не буду даже объяснять, что это за зверь такой - проще говоря, отныне
у каждого игрока имеется собственный уникальный идентификатор (а-ля IP адрес). Всвязи с переходом на новую систему, многие плагины, в том числе и PermissionsEx,
перепилили свою структуру, например, отныне PEX определяет ваши права не по вашему нику, в отличие, например, от AuthMe, а по вашему уникальному
идентификатору - UUID. Иначе говоря, права теперь привязаны не к нику, а к вашему UUID-у. Встает вопрос - если каким-либо образом передать серверу ложный UUID,
подменив его на админский, то мы получим все права, которые имеет ник админа? Ну да, все верно! Именно это и использует хакер - подменит UUID. Для подмены
UUID-a можно использовать, например, невинный BungeeCord, который при подключении к серверу, где опция bungeecord установлена как true передаст серверу тот UUID и
IP адрес, который вы заставили его передать. Для удобства использования этой опции команда реализовала легендарный Dymeth Client, где подмена UUID упрощена
доступным графическим интерфейсом. Ссылку на клиент вы увидите чуть позже - там уже сами разберетесь.
Решение: Закрываем порты [x3].

4. Ломаем, используя BungeeCore - тот самый легендарный кор, автором которого является #yooxa и который оказался в публичном доступе благодаря щедрой администрации проекта PlayDay.
Описание: Core (Кор) - не имеющая аналогов система, позволяющая устанавливать каналы связи между серверами в сети Bungee, обмениваться данными, синхронизировать несколько прокси
серверов одновременно. В этом самом коре присутствует интересная функция - команда 'sendcommand' реализованая по просьбе былой администрации PlayDay, которая позволяет отправить любую команду, заданную хакером, на указанный им же сервер.
Действия хакера: Если хакер обнаруживает, что ваш сервер пользуется кором, то он запускает у себя на компьютере, например, локальный сервер с плагином ProxyConnecter, указывает в его конфиге
IP вашего сервера, где стоит кор, и без лишних заморочек подключается к вашему кору. Ну а дальше уже, соответственно, отправляет команду на любой из подключенных к кору серверов используя
sendcommand, в нашем случае - это комнада OP %ВАШНИК%, например. Сервер же, в свою очередь, выполняет эту команду. Вуаля!
Решение проблемы: Пользоваться чужими разработками, вообще-то, не очень-то и здорово, но если у вас есть острая необходимость в использовании кора, то вам нужно избежать внешних
подключений к порту кора - 5000. Сделать это можно при помощи того же приложения IPTABLES - в нашем случае необходимо закрыть порт кора - 5000.
После того, как вы закроете порт кора, можете почувствовать себя спокойно.

5. Ломаем, используя плагин с изначально встроенной взломкой.
Описание: Пожалуй, один из самых эффективных методов взлома, так как функционал, по сути, не ограничен. Суть взлома следующая - невинная жертва ставит себе на сервер / ПК плагин, в котором
хитро спрятан эксплоит (вирус), с помощью которого хакер может делать все, что его душе угодно - без запинки получать доступ к вашим файлам, получить доступ к вашему серверу по SSH,
выполнять любые команды от имени сервера, скачивать ваши файлы или наоборот закачивать, выполнять любые команды от системы - иначе говоря, полностью манипулировать вашим устройством.
На подобный взлом команда Dymeth сделала отдельный акцент - это, согласитесь, больше, чем просто взлом админки, а распространить грамотно спрятанный в плагине вирус с учетом наличия
огромного количества групп для сливов сборок и плагинов не так уж и сложно, и именно поэтому в конце декабря 2015 года я за пару дней реализовал не имеющую аналогов систему для управления устройствами,
на которых запущен сервер с вирусом. При запуске сервера со встроенным вирусом ваше устройство устанавливает соединение с ядром (кором), которое запущено на моем виртуальном сервере, тем самым позволяя
мне управлять вашим персональным компьютером / сервером, а именно: выкачивать ваши файлы, закачивать свои, архивировать папки на вашем устройстве с целью дальнейшей выкачки, удаленно исполнять
команды от имени вашей операционной системы, в том случае, если это Linux и вирус запущен на виртуальном/выделенном сервере - получать полноценный SSH доступ, выполнять команды от имени консоли вашего
сервера, просматривать список файлов на вашем устройстве, если, конечно, задан путь; ну и вообще творить множество интересных вещей. Эту систему я назвал Sigma V2. Почему V2? Верно, существовал и эксплоит
Sigma V1, но там, в отличие от второго, было в разы меньше функционала - лишь пару аппетитных внутриигровых команд, которые хитро скрыты и не отображаются в логе. Одна из них, кстати, позволяла мне получать
доступ к вашему серверу по SSH протоколу.
Я принял решение выложить в публичный доступ и кор, который позволяет удаленно управлять жертвами, и сам вирус. Исходники выкладывать не буду - обойдетесь, ребятки, кому очень интересно - попробуете декомпилировать.
Связка написана мной на языке Java и полностью готова к работе - но, конечно, не под вашим управлением. Сейчас даже попытаюсь перечислить список плагинов, в которые собственноручно зашивал вирусы 1 и 2 и который, между прочим, сидит
в них и на данный момент, возможно на вашем сервере: AngryClans, AngryStats, Announcer, UUIDFixer, JaverZak (Загадки), CustomJoinItems из сборки AppleCrafts, ну и множество других безобидных вещей - в любом случае, если вы все еще используете один из этих
плагинов на своем сервере, немедленно удалите его и убедитесь в том, что не запускаете его на вашем компьютере.
Действия хакера: Взломщик распространяет плагин со встроенным функционалом для взлома, хитро маскируя классы с вирусом под популярные библиотеки, обфусцируя их. Сотни владельцев серверов, ничего не подозревая, бросаются качать
аппетитный на вид плагин и устанавливают к себе на сервера. Пусть даже не установят - как только жертва запускает плагин на своем компьютере, хакер, управляющим кором, тихонько выкачивает файлы с компьютера жертвы - пароли от FileZilla,
например. Далее, думаю, все очевидно.
Решение проблемы: Ну, друзья, даже не знаю, что и сказать вам. Старайтесь быть чуть более внимательными, не думайте качать, а уж тем более запускать плагины/программы из мест, которым вы не до конца доверяете;
прогресс дошел до такой степени, что просто запустив у себя на компьютере безобидный плагин вы можете стать жертвой хакерской атаки с похищением ваших личных данных.

Итак, я рассказал вам про пять основных методов взлома, которыми пользовались хакеры из Dymeth, и даже поделился методами защиты от них. Я однозначно забыл про что-то сказать, но вы, думаю, меня простите, да и к тому же более глубокая информация вряд ли вас заинтересует. Серьезно, пора заканчивать, поэтому предлагаю перейти к финалу произведения.

Файлы:

- Необфусцированный джарник, содержащий классы, которые используются для взлома на стороне сервера. Реализуют скрытую от логирования команду /sigma —CMD, которую используют хакеры прямо из игры.
Ссылка на загрузку: minecade.ru/dymeth-leak/DymethHackLib.jar
- Кор (Центр управления клиентами) - сетевое приложение, реализующее удаленное управление компьютерами / серверами, на которых запущены игровые сервера с установленным плагином с эксплоитом.
Ссылка на загрузку: minecade.ru/dymeth-leak/Core.jar
- Легендарный DymethClient, содержащий множество вкусностей, включая подмену UUID.
Ссылка на загрузку: http://minecade.ru/dymeth-leak/DymethClient.zip
- База данных сервера FORINE - не знаю вообще, зачем она здесь, наверное просто так.
Ссылка на загркзку: minecade.ru/dymeth-leak/FORINE.sql