Сборки серверов

СливПлатные

Сейчас онлайн

  • Lunacy
  • Masterggg
  • 147maxik
  • talismanfr
  • fasdfasdfdsafsafsa
  • Yan33k
  • Grecha123
  • KillsYouKid
  • fl1cker281
  • rezzvy
  • 4532vsew
  • pelmeshek
  • Sasha 20189
  • Contala
  • Darkmage366
  • dscss2
  • virtue
  • dpotykan
  • flickyshka
  • wapo2500
  • DANILATY
  • Sabbik
  • skymonix
  • gfsgfddfgfdgfdfdg
  • Aezzakmi
  • ffjjfu848999
  • Fhugu63
  • zxcTrupik
  • peppe6601
  • Fonisha
  • ziomex997
  • KRfatr
  • amarbarwary10
  • djoblica
  • MiddleClient110
  • specSia
  • Kit_YT5
  • plum
  • khorww
  • kryp
  • IM_AnPOlice
  • ShavelkaA
  • sav1251266
  • TheInVise
  • pawpawpaw
  • txlz_
  • Karol67
  • docer
  • oxysensor
  • Uijin23
  • Minejent
  • Gribnogrib
  • 9ngen
  • igor1488
  • stasbombit
  • Affi1337
  • MilaPchela
  • ekzamen
  • ckrt1
  • xde57
  • VVVVCVCSDVJL
  • pososal123
  • Shoowggauus
  • brain
  • un_meg

MitM в 1.21.x: Почему ваши пароли всё еще улетают в открытом виде

Aorus

Многие администраторы и игроки живут в иллюзии безопасности. Они ставят Velocity, прячутся за GameShield или StormWall и верят, что новые системные диалоги 1.21.1 защищены от перехвата.​


На самом деле это полная чушь. Сегодня я покажу, как обычный MitM-p####i (Man-in-the-Middle) вскрывает любую защиту на раз-два, и почему даже гиганты индустрии бессильны перед прямым чтением байтов.


В чем суть уязвимости?​

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

Инструментарий ресерчера
Для теста я использовал:
VPS на Linux (Ubuntu).
SniffCraft (низкоуровневый сниффер протокола).
Немного магии с файлом hosts, чтобы обмануть L7-защиту типа GameShield.

Разбор полетов №1: Обход гигантов​

Многие думают, что пробиться к Backend-серверу крупного проекта невозможно. Но через обычный dig по SRV-записям мы находим балансировщики:
pool.reallyworld.me(Пример) -> ноды OVH.

Я настроил p####i-сниффер на одну из этих нод. Результат? Как только игрок вводит /reg или /l, пакет Chat Command прилетает в консоль сниффера в чистом UTF-8. Никакая защита не спасает, если вы сами добровольно отдали данные посреднику.

Пример лога::
[Play] [C --> S] Chat Command

{
"command": "reg qwerty12345 qwerty12345"
}

Разбор полетов №2: Иллюзия Инновационных диалогов 1.21.1​

В новых версиях появились системные диалоги ввода (не чат, а именно окна). Админы серверов надеются, что это спасет от ботов и снифферов.
Тут есть нюанс: пакеты этих диалогов (Common Player Input) действительно сложнее парсить. Старые инструменты могут выдавать PARSING EXCEPTION. Но если включить логирование сырых байтов (LogRawBytes), мы увидим наш пароль прямо в HEX-дампе.
Даже если пакет битый для парсера, текст внутри него остается открытым. Изменить визуальное окно не значит зашифровать канал связи.

Как обходят GameShield и другие защиты?​

Защита типа GameShield часто выдает ошибку Domain Not Found, если вы заходите через p####i. Но это обходится за 10 секунд:
На своем ПК в файле hosts прописываем IP своего VPS под домен сервера.
В конфиге p####i указываем целевой домен.
Всё. L7-фильтр видит правильный Hostname в пакете Handshake и пропускает трафик.

Итог: Как не стать жертвой?​

Админам: Перестаньте надеяться на секретные диалоги ввода. Используйте Modern Forwarding в Velocity с секретными ключами и жестко ограничивайте IP, с которых разрешены подключения к бэкенд.
Игрокам: Никогда не заходите на тестовые сервера или сервера друзей по подозрительным IP. Если вы ввели пароль на p####i-сервере злоумышленника - его уже не вернуть.
Разработчикам: Пора признать, что протокол майнкрафта это решето. Без TLS на уровне клиента любая авторизация это лотерея.

Статья написана в целях безопасности (ИБ). Не будьте легкой добычей!
 
ВерхНиз