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