Вредоносные плагины на серверах Minecraft — вот такие детские шалости
Когда-то я был одним из участников проекта BukkitDev и занимался проверкой плагинов, которые туда заливались.
Каждый новый плагин и каждое обновление декомпилировались, чтобы найти в программном коде критичные ошибки (например такие, которые могут значительно ухудшить производительность сервера) или какой-то вредоносный код.
Ошибки встречались довольно часто, ещё чаще попадались бесполезные плагины, их мы тоже отклоняли, а нечто похожее на вредоносный код мне попалось лишь однажды.
В тот плагин была встроена «секретная» команда, которая давала тому, кто её набрал, определённые преимущества. Автор сказал, что забыл убрать «тестовую функцию», и позднее перезалил плагин без каких-то хитростей.
Плагины с бэкдорами я встречал уже потом. Такие плагины периодически пытались распространять через rubukkit (там это быстро отлавливалось — желающих заглянуть в чужой программный код было довольном много), а ещё несколько раз я видел слитые платные плагины на форумах и в пабликах ВК, которые были дополнены не очень приятными возможностями.
Мне всегда казалось, что это явление не массовое, но недавно мне написал человек, который на условиях анонимности рассказал о том, как он с приятелями на протяжении продолжительного времени занимался получением доступа к серверам Minecraft.
Привожу его рассказ с небольшими изменениями и сокращениями.
Детская шалость
Приблизительно 5 лет назад я и мои знакомые занимались «нехорошими делами» (точнее, не совсем легальными) — мы разными способами получали несанкционированный доступ к серверам Minecraft Java Edition.
Это была затянувшаяся детская шалость, которая лично мне приносила некоторое удовольствие. Было интересно найти уязвимость на сервере, чтобы проникнуть «в тыл», натворить что-нибудь — разрушить спаун, испортить базу данных или полностью удалить сервер вместе с резервными копиями.
У нас не было каких-то коммерческих целей, тем не менее, мы совершенствовали наши методы работы и в итоге написали плагин, позволяющий нам не просто выдать себе права оператора на сервере, а получить полноценный доступ к хостингу. Мы могли выполнять системные команды (поддерживались как Windows, так и Linux), могли скачивать любые файлы с сервера и загружать на сервер свои.
Практически сразу же функционал этого плагина был внедрён в разные популярные плагины вроде CustomJoinItems.
Плагины с нашим вредоносным кодом мы публиковали в группах ВК, посвящённых «сливам». Там публиковались сборки серверов и просто редкие полезные плагины. Публикации с нашим «сюрпризом» делались по знакомству с одним из администраторов подобной группы. Эта услуга стоила нам ровно 0 рублей, но принесла нам множество серверов, с которыми мы могли делать всё, что хотели.
Вся эта история продолжалась недолго, через пару месяцев мы потеряли интерес, остановили сервер, с помощью которого производилось управление заражёнными серверами, и перестали заниматься подобными вещами.
После этого мы создали инфоповод — опубликовали на форумах статью, которая рассказывала о том, как уязвимы серверы Minecraft. Благодаря ней многие администраторы серверов стали серьёзнее относиться к вопросам безопасности.
Плагин, который спал 5 лет
Правда, у этой публикации был и другой эффект. Мне до сих периодически пишут люди с просьбой поделиться нашим средством управления — исходным кодом плагина, который содержит вредоносный код и серверной частью для управления уязвимыми серверами.
Недавно мне написал человек и попросил «оживить» наш сервер, который использовался 5 лет назад. Он рассказал, что занимался распространением нашего плагина. Его интересовала статистика по количеству зараженных серверов и конкретные IP-адреса. Думаю, хотел шантажировать администраторов серверов или заняться саботажем ради удовольствия.
Делиться с ним такой информацией я не планировал, но мне стало интересно собрать статистику — сколько серверов может быть заражено спустя пять лет?
У меня не осталось конкретных наработок, поэтому я написал простенький сервер, выполнявший лишь одну функцию — логирование IP-адресов, с которых производились подключения.
К моему удивлению за двое суток было выполнено порядка 180 подключений с 60 различных адресов. Это больше, чем было в 2015 году, когда мы активно распространяли наши плагины. Наш код не только не умер вместе со старыми серверами, а наоборот распространился.
Я связался с несколькими администраторами серверов из полученного списка и рассказал о том, что на их сервере установлен вредоносный плагин — один из тех, что использовался нами 5 лет назад.
Один из администраторов сообщил, что приобрёл сборку своего сервера у одной известной студии, которая занимается созданием серверов «под ключ». Другой администратор получил наш плагин в бесплатной сборке, распространяемой в группе этой же студии.
О чём это может говорить, о том, что при создании сборки плагины в неё включаются без проверки, или о том, что это делается намеренно — я не знаю. Но они существуют уже давно, в группе ВК у них 2,5 тыс. подписчиков, а значит, через неё могут распространять всё что угодно.
Мойте руки перед едой и не загружайте плагины из непроверенных мест
Мораль истории можно выразить в виде советов администраторам серверов:
Примечание от fromgate: Я сталкивался с тем, что даже известные и уважаемые авторы включали вредоносный код в плагины «на всякий случай» — в качестве защиты от недобросовестных заказчиков.
Заключение
Рассказчик привёл мне несколько фактов, которые я не могу привести, чтобы не нарушить его анонимность. Также он предоставил мне один из плагинов, которые они распространяли.
Если говорить о фактах — я их проверил, мне они кажутся достаточно правдоподобными. Следы упомянутых событий остались в сети. И при наличии желания и времени можно было бы воссоздать достаточно полную картину.
Ищем бэкдоры и дыры в плагинах
Стаж: 6 лет 5 месяцев
Сообщений: 570
Благодарностей: 77
Полезность: 21

Решил написать статью об дырках в плагинах. На данный момент этот метод взлома сервера является весьма эффективным
Но защитится от него на самом деле очень просто. Достаточно проверять каждый установленный на сервер плагин



Стаж: 6 лет 4 месяца
Сообщений: 2742
Благодарностей: 705
Полезность: 207



Стаж: 7 лет 1 месяц
Сообщений: 243
Благодарностей: 73
Полезность:


Стаж: 6 лет 5 месяцев
Сообщений: 570
Благодарностей: 77
Полезность: 21
почему ж школьная?
лично я когда начинал создавать сервер. етого незнал
думаю новие люди тоже незнают.



Стаж: 7 лет 1 месяц
Сообщений: 243
Благодарностей: 73
Полезность:
Отлично, не ставим амхх вообще, ибо стандартные плагины могут получить ркон при наличии флага ADMIN_RCON.


Стаж: 9 лет 5 месяцев
Город: Москва
Сообщений: 387
Благодарностей: 96
Полезность:


Стаж: 7 лет 3 месяца
Сообщений: 2593
Благодарностей: 1760
Полезность: 405


Стаж: 7 лет 10 месяцев
Сообщений: 4644
Благодарностей: 3776
Полезность: 696



Стаж: 5 лет 5 месяцев
Сообщений: 57
Благодарностей: 14
Полезность:
Minecraft Wiki
Из-за новой политики Microsoft в отношении сторонних ресурсов, Minecraft Wiki больше не является официальной. В связи с этим были внесены некоторые изменения, в том числе и обновлён логотип вики-проекта. Подробности на нашем Discord-сервере.
Разрушенный портал Нижнего мира
Разрушенный портал (англ. Ruined Portal) — это натуральная структура, которая появляется в Верхнем и Нижнем мирах.
Содержание
Генерация [ ]
Разрушенные порталы генерируются во всех биомах и в Верхнем, и в Нижнем мирах. Они могут появляться под землёй, под водой или снаружи. Если они генерируются под землёй, то они будут иметь вокруг себя воздушные карманы. Естественное покрытие будет заменено на адский камень, магмовые блоки и лаву. Также они генерируют много адского камня и под собой.
| Биом | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| Обычный | Пустыня | Джунгли | Болото | Горы | Океан | Нижний мир | |||
| Размещение по вертикали | Под землёй (50 %) | На поверхности (50 %) | Частично под землёй | На поверхности | Дно океана | В горе (50 %) | На поверхности (50 %) | Дно океана | Нижний мир |
| Мшистость | 0.2 | 0 | 0.8 | 0.5 | 0.2 | 0.8 | 0 | ||
| Воздушный карман | Да | 50% | Нет | 50% | Нет | Да | 50% | Нет | 50% |
| Заросший | Нет | Нет | Да | Нет | Нет | Нет | Нет | ||
| Лианы | Нет | Нет | Да | Да | Нет | Нет | Нет | ||
| Чернокамень | Нет | Нет | Нет | Нет | Нет | Нет | Да | ||
Разрушенные порталы, генерирующиеся частично под землёй, будут генерироваться на уровне n−n2 плюс случайное число от 2 до 8. Следовательно, Структура будет выше поверхности на 2-8 блоков.
В Нижнем мире разрушенные порталы с воздушными карманами генерируются на высоте от 32 до 100. Разрушенные порталы без воздушных карманов имеют шанс 50 % появиться на высоте от 27 до 100.
В холодных биомах (с температурой меньше 0.15) вся лава в разрушенных порталах будет заменена адским камнем. На дне океана вся лава будет заменена магмовыми блоками.
Содержимое сундука [ ]
В Java Edition каждый сундук содержит от 4 до 8 стопок предметов со следующей вероятностью:
| Размер стопки | Вес | # предметов | Вероятность | # сундуков | |
|---|---|---|---|---|---|
| Кусочек железа | 9-18 | 40 ⁄398 | 8.141 | 46.4 % | 2.2 |
| Кремень | 1-4 | 40 ⁄398 | 1.508 | 46.4 % | 2.2 |
| Обсидиан | 1—2 | 40 ⁄398 | 0.905 | 46.4 % | 2.2 |
| Огненный шар | 1 | 40 ⁄398 | 0.603 | 46.4 % | 2.2 |
| Огниво | 1 | 40 ⁄398 | 0.603 | 46.4 % | 2.2 |
| Кусочек золота | 4—24 | 15 ⁄398 | 3.166 | 20.5 % | 4.9 |
| Золотое яблоко | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой топор | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая мотыга | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая кирка | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая лопата | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой меч | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой шлем | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой нагрудник | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованные золотые поножи | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованные золотые ботинки | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Сверкающий ломтик арбуза | 4—12 | 5 ⁄398 | 0.603 | 7.3 % | 13.7 |
| Золотая морковь | 4—12 | 5 ⁄398 | 0.603 | 7.3 % | 13.7 |
| Золотой слиток | 2—8 | 5 ⁄398 | 0.377 | 7.3 % | 13.7 |
| Часы | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Утяжелённая нажимная пластина (лёгкая) | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Золотая конская броня | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Золотой блок | 1—2 | 1 ⁄398 | 0.023 | 1.5 % | 66.8 |
| Колокол | 1 | 1 ⁄398 | 0.015 | 1.5 % | 66.8 |
| Зачарованное золотое яблоко | 1 | 1 ⁄398 | 0.015 | 1.5 % | 66.8 |
В Bedrock Edition каждый сундук содержит от 4 до 8 стопок предметов со следующей вероятностью:
| Размер стопки | Вес | # предметов | Вероятность | # сундуков | |
|---|---|---|---|---|---|
| Кусочек железа | 9-18 | 40 ⁄398 | 8.141 | 46.4 % | 2.2 |
| Кремень | 1-4 | 40 ⁄398 | 1.508 | 46.4 % | 2.2 |
| Обсидиан | 1—2 | 40 ⁄398 | 0.905 | 46.4 % | 2.2 |
| Огненный шар | 1 | 40 ⁄398 | 0.603 | 46.4 % | 2.2 |
| Огниво | 1 | 40 ⁄398 | 0.603 | 46.4 % | 2.2 |
| Кусочек золота | 4—24 | 15 ⁄398 | 3.166 | 20.5 % | 4.9 |
| Золотое яблоко | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой топор | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая мотыга | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая кирка | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованная золотая лопата | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой меч | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой шлем | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованный золотой нагрудник | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованные золотые поножи | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Зачарованные золотые ботинки | 1 | 15 ⁄398 | 0.226 | 20.5 % | 4.9 |
| Золотая морковь | 4—12 | 5 ⁄398 | 0.603 | 7.3 % | 13.7 |
| Золотой слиток | 2—8 | 5 ⁄398 | 0.377 | 7.3 % | 13.7 |
| Часы | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Сверкающий ломтик арбуза | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Утяжелённая нажимная пластина (лёгкая) | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Золотая конская броня | 1 | 5 ⁄398 | 0.075 | 7.3 % | 13.7 |
| Золотой блок | 1—2 | 1 ⁄398 | 0.023 | 1.5 % | 66.8 |
| Колокол | 1 | 1 ⁄398 | 0.015 | 1.5 % | 66.8 |
| Зачарованное золотое яблоко | 1 | 1 ⁄398 | 0.015 | 1.5 % | 66.8 |
Структура [ ]
Разрушенный портал содержит незаконченную рамку портала из обсидиана и плачущего обсидиана для придания вида древности, несмотря на то, что последний нельзя использовать в качестве рамки портала Нижнего мира. Некоторые блоки рамки могут лежать снизу, будто бы они обрушились.
Рядом с порталом может находиться сундук и золотой блок. В сундуке могут находиться разные золотые предметы и вещи, необходимые для постройки портала, такие как обсидиан и огниво.
Разрушенный портал, генерирующийся в Верхнем мире, окружён аркой из камня, каменных кирпичей и железных решёток; в Нижнем мире портал окружается вариациями чернокамня и цепями.
Если разрушенный портал генерируется под водой, он может создавать водовороты из-за близлежащих магмовых блоков.
Сейчас известно о 13 вариациях структуры: 10 порталов обычного размера и 3 больших портала в разных состояниях запущенности.
Разрушенные порталы могут быть сгенерированы игроком загрузкой ruined_portal/portal_ или ruined_portal/giant_portal_ при помощи структурного блока.
Блоки [ ]
| Все разрушенные порталы |
|---|
| Сундук |
| Золотой блок |
| Обсидиан |
| Плачущий обсидиан |
| Адский камень |
| Магмовый блок |
| Лава |
| Верхний мир |
|---|
| Железная решётка |
| Каменный кирпич |
| Замшелый каменный кирпич |
| Потрескавшийся каменный кирпич |
| Резной каменный кирпич |
| Каменная плита |
| Плита из каменного кирпича |
| Плита из замшелого каменного кирпича |
| Ступени из каменного кирпича |
| Ступени из замшелого каменного кирпича |
| Нижний мир |
|---|
| Цепь |
| Базальт |
| Чернокамень |
| Резной полированный чернокамень |
| Чернокаменная плита |
| Плита из полированного чернокамня |
| Плита из полированных чернокаменных кирпичей |
| Ступени из полированных чернокаменных кирпичей |
Проблемы [ ]
Отчёты об ошибках, связанных с «Разрушенный портал Нижнего мира», поддерживаются в системе отслеживания ошибок Mojira. Сообщайте о найденных ошибках там (на английском языке).


