Как хакеры поставили на колени самый анархичный сервер Minecraft
На первый взгляд, Minecraft — все о веселье и забаве. Здесь мы восхищаемся людьми, воссоздающими мир "Властелина колец", а также невероятными визуальными трюками, для создания которых достаточно приложить небольшую изобретательность. Но у игры есть куда менее известная (хотя зачастую не менее популярная), более мрачная сторона.
2B2T — один из наиболее популярных "анархичных" серверов игры, где отсутствуют какие-либо правила, а карта размером в несколько терабайт и вовсе не сбрасывалась с далекого 2010 года. Сервер, название которого расшифровывается как 2 Builders 2 Tools, по своей задумке должен был стать негостеприимным и злобным, поэтому временами его награждали титулом "худшего" сервера Minecraft. Само собой, геймеры с сервера не поддерживали подобных высказываний. В соответствии с их точкой зрения, 2B2T — пример невероятно широкой привлекательности и способности Minecraft привлекать игроков к творчеству: это место с реальной историей и действиями, определяющими ландшафт. Благодаря сформировавшемуся сообществу 2B2T и тому, как сервер развивался с годами, он стал частью выставки Videogames: Design / Play / Disrupt, которая прошла в залах лондонского Музея Виктории и Альберта.
Оригинал публикации: PCGamer
Но эта история началась в 2018 году, когда два игрока обнаружили уязвимость в плагине Paper, которые призван исправлять ошибки и повышать производительность многопользовательских серверов Minecraft. Эксплойт, по сути, обманывал сервер, заставляя его думать, что они щелкают по всем блокам на карте — даже тем, которые находятся за областью рендеринга. В результате сервер был вынужден мгновенно обрабатывать тысячи чанков (блоков 16x16, из которых состоят карты Minecraft), что приводило к гарантированному сбою. Казалось бы, это просто очередная фатальная ошибка, которую очень быстро исправят разработчики программного обеспечения PaperMC.
И как раз "быстро" стало главной проблемой.
Лейджурв — один из программистов, работавших над NoCom (но уже с начала 2020 года) — написал большой и подробный пост, в котором объяснил, что именно сумела сделать группа и почему это сработало.
В начале сообщения даётся ссылка на видеоролик YouTube за авторством FitMC, который был создан совместно со злоумышленниками.
Со слов Лейджурва, причина, по которой NoCom так долго оставалась незамеченной, заключается "в том, что в действительности нет "эксплойта" или "бэкдора", который представлял каждый. Другими словами, сервер "не хулиганит" и не делает ничего подозрительного. Это абсолютно ожидаемая и запланированная реакция, код не делает ничего скрытно или тайком, на самом деле все куда проще".
PaperMC, создатель Paper, "исправил" исходный эксплойт таким способом, который ожидали хакеры, впоследствии создавшие NoCom. Теперь нажимать на блоки можно было лишь в той области, которая была зарендерена конкретным игроком. Таким образом, хакеры по-прежнему могли прокликивать блоки, чтобы узнать об их содержимом — и это обычный процесс для Minecraft. При этом блокировались все попытки взаимодействовать с блоками, расположенными далеко за пределами области, где на самом деле находится "игрок": то есть возможность "щелкнуть" по блоку в любом месте этого бесконечного, генерируемого мира, и получить о нем информацию.
Поэтому это известная и ожидаемая реакция со стороны 2b2t. Не многие люди задумывались о том, что при помощи выхода за пределы рендеринга можно было бы извлечь информацию. Таким образом, вы щелкаете по любому блоку в любом месте сервера, даже если он находится за миллион блоков от вас, и по тому, отвечает вам сервер или нет, узнаете, загружен ли блок в настоящее время.
Руководствуясь здравым смыслом, разработчики Paper сделали патч, который гарантировал ответ сервера лишь в том случае, если чанки были загружены этим игроком (отрендерены), поскольку это имело логический смысл (только те блоки, которые вы могли бы копать, не нарушая правил). Проблема в построении кода связана с тем, что сервер отвечал вам, даже если бы блок был загружен любым игроком на сервере. Явный побочный эффект.
Лейджурв
Как вы думаете, почему это так важно? Как только этот эксплойт стал доступен, люди, стоящие за NoCom, начали проверять, загружены или выгружены определенные чанки карты. Первое указывало на присутствие в конкретной области других игроков, и их местоположения регистрировались и сохранялись, указывая на то, где находятся базы или другие полезные места. Этот гениальный эксплойт NoCom в последние три года огорчал и раздражал игроков сервера, выбранного грифферами в качестве цели для харасмента.
Вот тепловая карта 2B2T, показывающая, где сосредоточены игроки и группы. И тут начинает проявляться дьявольская хитрость хака.
При первом обнаружении эксплойтом пришлось использовать вручную. Было очевидно, что бесконечное прокликивание блоков в попытках узнать, что и где находится — не самый лучший метод. Создатели NoCom начали автоматизировать процесс, внедряя на сервер ботов, работавших посменно так, чтобы один из них обязательно был в сети: и эти боты наблюдали за основными маршрутами передвижения.
Когда один из них регистрировал игрока, он отслеживал его движения с помощью программы и обращал особое внимание на то, сколько времени он проводил в определенных областях.
Далее Лейджрув максимально просто объяснил, что будет делать бот Elon_Musk:
Происходит сканирование маршрутов (пробивание одного блока на каждые девять с расширением наружу по каждой дороге и диагонали — наподобие радара). В случае успешного попадания происходит регистрация передвигающегося геймера. А вдруг он движется на базу?
И после этого мы просто следуем за ним. Мы разработали систему, использующую фильтр частиц Монте-Карло для имитации и отслеживания движения, которая запускала около двух проверок в секунду, чтобы не отставать от игрока, который движется с произвольной скоростью — от ходьбы до спринта. Даже в режиме наблюдателя! Все, что нас волнует — загружаются ли чанки.
По сути, мы создали радар, который использует несколько сотен проверок в секунду, чтобы следить за передвижением кораблей, словно это морской бой с читами.
И когда "линкор" исчезает с одного маршрута, мы переключаемся на другой и продолжаем движение (боты, безусловно, координируют друг друга).
Таким образом, мы, не отставая, следим за игроками прямо до их баз, пока они продолжают загружать свои чанки (рендерить блоки на карте). Используя наши наблюдательные посты, мы свободно проверяем фрагменты по всей карте, на любом расстоянии.
В конце концов, NoCom удалось собрать 1.7 TB и 13.5 млрд строк данных о мире 2B2T. Данные, которые используются для того, чтобы сеять настоящий хаос: "распечатываешь список баз с самым большим числом сундуков, отправляешься в помеченные локации и занимаешься грабежом".
В 2020 году активность NoCom начала достигать пика — данных становилось все больше, они были максимально точны, и поэтому игроки все чаще поддавались соблазну. Были разрушены бесчисленные базы, разграблены несметные богатства, и сообщество погрузилось в полномасштабную панику до такой степени, что многие отказывались входить в игру.
Началось активное обсуждение между сообществом 2B2T, появлялось все больше людей, утверждавших, что на сервере происходит что-то странное. Но создатели NoCom запустили целую кампанию по дезинформации на сабреддитах и серверах Discord (используя мемы, скрывающие эксплойт, и другие методы газлайтинга), заявляя, что все, кто беспокоятся — обычные параноики.
По мере того как NoCom набирал обороты и его присутствие на сервере уже было невозможно скрывать, создатели эксплойта понимали, что конец близок. В июне и июле NoCom работал на максимуме возможностей, пытаясь выжать все до последней капли из имеющихся данных до того, как администратор сервера, наконец, сумел его исправить, ограничив количество пакетов, которые могли отправлять учетные записи за один серверный тик.
NoCom возможно исчез, но его тень еще долго будет виснуть над 2B2T. Извлеченные данные по-прежнему доступны и будут точны до тех пор, пока сообщества и игроки не переместят свои базы: далеко не легкий и удобный процесс. Теперь большинство фантастических творений — банальные заложники удачи. 2B2T продолжает свое существование, но произошедшее — пожалуй, самое знаковое событие в истории сервера.