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

СливПлатные

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

  • timverhovniy
  • Suilte
  • Zekerzzzz
  • самур
  • xNoAnimeLover
  • Thak0
  • Watalaker37821
  • NovaTristis
  • Inkeri
  • dhsousa
  • siozy_
  • seoavg
  • Kimonomc
  • Carter Fleming 13
  • NikoVK
  • vlad1ckk
  • imnstarzzz
  • hahdbdhhs
  • An0nim

Помощь Вирус/хак «hostflow»

  • Автор темыsuus8285
  • Дата начала
bobobo
Это не столько опасно, сколько глупо.

План действий:​

  1. Остановить сервер
  2. Взять все плагины и поместить их в отдельную папку.
  3. Скачать заново все плагины из надёжных источников, попутно открывая каждый файл архиватором и что бы ни в одном не было файлов вот таких:
    1698447352586
  4. Не использовать старые плагины больше, а только на основе их скачать плагины из оригинальных и надёжных источников.
  5. Удалить старые плагины.
  6. Запустить сервер, и проверить, заражаются ли плагины вновь.
 
Последнее редактирование:
bobobo
Гуру это конечно громко сказано, но кое что по поводу этого вируса я могу сказать.

1) Дублирование​

По его коду главного класса видно, что он не будет исполнять свои действия на OS Windows, а именно вот участочек кода из его главного класса, который явно об этом говорит.
Java:
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
            return;
        }
Главный класс его можно найти рядом с основным классом плагина, он будет иметь такое же название как и главный класс, но продолжение в название будет L10. Пример: основной класс: main.class, то вирус рядом создаст класс mainL10.class со своим кодом.
Он работает с использованием библиотеки javassist, который создан для того, чтобы манипулировать байт-кодом класса плагина во время выполнения. То есть, во время запущенного сервера, он может изменять код внутри класса плагинов.
Именно это и происходит.

Что за дублирование происходит в главном классе вируса hostflow​

Могу сразу сказать просто: заражение своим кодом другие плагины, запущенные на сервере.

Более детально:​

Он путём итерации перебирает элементы списка с использованием класса: javassist.ws.a
Что делает класс javassist.ws.a смотрите ниже в 2) Отправка данных вирусом hostflow на свои сервера.
Во время итерации: для каждого файла создается новая файловая система fileSystem2 на основе пути к файлу, далее проверяется наличие файла .l_ignore в данной файловой системе (в корневой папке плагина). Если файл существует, то обработка этого файла пропускается и переходит к следующему файлу.
1698457560391
Далее манипуляции с getRootDirectories:
Создаётся опять итератор внутри этой же папки, и для каждого файла (класса) в этой папке применяется действие:
  • Создается новый CtClass на основе байт-кода файла.
  • Проверяется, содержит ли класс аннотацию JavaPlugin.
  • В зависимости от наличия аннотации JavaPlugin выполняются разные действия:
    • Если аннотация есть, то создается новый путь path6 для нового класса.
    • Проверяется наличие папки ".l1" внутри.
      • В зависимости от наличия ".l1" выполняются разные действия: создается новый класс, файл или директория.
Если аннотацию JavaPlugin не удалось найти, выполняется следующий код:
1698458389365

Простое объяснение: Вставляется вызов этого всего в onEnable плагина: то есть во время запуска плагина происходит каждый раз такое действие.
Более подробно: участок кода создан для изменения кода onEnable плагина, а точнее замены onEnable.
Он создает новую копию класса (имя которого берется из path6), вызывает метод "a" с параметром, который возвращает родительскую директорию (getDataFolder().getParent()).
Вот path6 о котором говорится выше
Код:
Path path6 = fileSystem2.getPath(path5.getParent().toString(), String.valueOf(ctClass2.b()) + "L10.class");
то есть он создаёт себе подобный класс, используя название главного класса плагина, но подставляет в конце L10.class.
Весь этот код вызывается в методе основного класса плагина onEnable.

После замены кода в методе onEnable, класс записывается обратно в файл path5. В результате изменения кода метода внутри файла.
Так же предусмотрена защита от повторного добавление вируса в один и тот же файл, а именно создаётся файл с названием .l_ignore в корневой папке плагина:
1698458997820
Оба эти файлы пустые, и служат только для уведомления вируса о дальнейшей манипуляции.

Что же добавляется в onEnable:​

Добавляется вызов метода "a" из вирусного файла:

Пример 1​

1698459294797
Java:
new MMOItemsL10().a(this.getDataFolder().getParent());

Пример 2​

1698459333326
Java:
new GoBrushPluginL10().a(this.getDataFolder().getParent());

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

2) Отправка данных вирусом hostflow на свои сервера.​

Что же таит вызываемый класс javassist.ws.a который вызывается при запуске сервера?
Он подключается при помощи веб-сокетов к http://client.hostflow.eu:5050/ws и отправляет данные о сервере, на котором запущен плагин:

Какие данные отправляются на сервер вируса hostflow:​

  • IP-адрес сервера
  • Порт сервера
  • Версия ядра
  • Количество игроков
  • Максимальное количество игроков
  • Весь список плагинов.
  • Включено ли online-mode на true в server.properties
  • Ники игроков которые в данный момент на сервере
  • Логи сервера

Но так же:​

Есть интересный метод, вызываемый при получение уже ответ от вирусного сайта. Если сообщение в ответе содержит фразу: начинающуюся с $$exec$$, то вызывается стринговое сообщение:
1698460617725
Вероятно это вывод сообщений/команд в консоли, каких стоит только догадываться, так как она получает инструкции из внешнего сервера.

Как понять от какого файла пошло заражение hostflow?​

Понятное дело, что при запуске заражённого плагина вирусом hostflow с остальными плагинами заразит их тоже, и они будут иметь одинаковую структуру. Но вирус hostflow продуманный, как я говорил выше, и он не заражает повторно плагины. То есть можно открыть файл заражённого плагина, и посмотреть дату добавления файлов .l1 и .l_ignore
И он чётко даст понять, когда этот плагин был заражён.
1698462476858
Следовательно, тот плагин, который был заражён раньше всех, и будет тем носителей, который принёс вирус в вашу сборку.
Далее нужно узнать откуда он был взят, и не запускали ли вы его в других сборках до переноса в текущую сборку. Возможно у вас там были так же ранее заражены плагины, и стоит копать там.

Послесловие:​

Я много раз сталкивался с этим «Вирусом», но никогда его не подцеплял сам. Не нужно надеяться на волю случая. Обычное НЕ открытие файла плагина архиватором перед запуском его на сервере, может стоить вам несколько часов работы по удаление зловредных плагинов, так как hostflow заражает практически все плагины запущенные рядом с разражённым плагином.

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

Возможно я что-то упустил, если появятся вопросы, задавайте.
 
Последнее редактирование:
Yatochka
@bobobo, Вау, какой обширный ответ. Я бы даже написал статью, с твоего позволения. Хоть это и не связано, но, совсем недавно из общего круга одного маленького сообщества клиентов, мне написал один достаточно "зелёный" мальчуган, видно было, что сборку он скачал, и что априори он имеет мало знаний. Но все же, я промолчал и помог, когда речь зашла о таймингах, я попросил скинуть лист плагинов, дабы подсказать что можно заменить, а что убрать, в сборке у него присутствовал некий джарник, с начинающимся названием на Holy, естественно такие Псевдо сливы с популярных серверов доверия у меня не вызывают, ведь много мозгов иметь не нужно, чтобы понять, что плагин был написан каким то школьником с этого же лика откуда он был скачал. Открываю архив, и вижу такую ситуацию: 2 одноименных класса, и точно такая же проверка на OS, ещё сильно удивило, что на пару двойку классов наложили обф, написал оверврайту, оба не поняли к чему такая проверка, поржали, вновь убедились почему такие форумы - мусор, и забыли. Из-за того, что декомпил был неполный, я просто сказал ему, что больше не стоит качать сливы с ЛЛ(не реклама, кто знает то знает), и перекачать всю сборку. Воспользовался так же ботом в дискорде БМ, он выявил подозрения как раз таки на этот HostFlow, я не придал значения, опять же, из-за того что декомпил был неполный и обрезанный, но сегодня наткнулся на эту тему, информации в сети как таковой подробной почти не нашёл. Спасибо что проинформировал.
 
Hyperstone11
@bobobo, щас не про сам вирус hostflow. А может ли в плагинах содержаться информация/код, который напрямую воздействует на ОС? Расскажи, пожалуйтся.
 
bobobo
@Hyperstone11, речь в этой теме идёт про вирус, а бэкдоры я обсуждать не планирую, так как вы сами можете информацию в интернете найти. По поводу hostflow я внятного объяснения в интернет не нашёл, поэтому объяснил суть его тут.
 
R
@HELPY4, я не думаю, что он будет заражать все файлы jar. Может, там есть какой-то алгоритм, который определяет, где плагины, а где другие файлы. Иначе, проблема касалась бы всех, а не только серваки с плагинами
 
R
@bobobo, объяснялка мне хр###н зашла, потому что я сейчас бухой. Как протрезвею, буду чекать свои сообщения на предмет адекватности.
ААА... ага... На винде хр###н работает. ладноэ
 
bobobo
Интересная мысль на подумать:
Если добавить во все свои плагины пустой файл с названием .l_ignore, то эти плагины никогда не будут заражены этим хаком.
Пользуйтесь :try_man:
 
Vitaliy S.
@bobobo может ли вирус заразить другие контейнеры в pterodactyl? Умеет ли он менять дату своего добавления (дата изменения в проводнике виндовс)??
 
ВерхНиз